duckdb 0.8.1-dev0.0 → 0.8.1-dev111.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 (556) hide show
  1. package/package.json +1 -1
  2. package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
  3. package/src/duckdb/extension/json/include/json_common.hpp +1 -1
  4. package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
  5. package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -6
  6. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +1 -1
  7. package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
  8. package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
  9. package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
  10. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
  11. package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
  12. package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
  13. package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
  14. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
  15. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  16. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  17. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  18. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  19. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  20. package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
  21. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  22. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  23. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  24. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  25. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  26. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  27. package/src/duckdb/src/catalog/catalog.cpp +0 -4
  28. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +3 -0
  29. package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
  30. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  31. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  32. package/src/duckdb/src/catalog/duck_catalog.cpp +1 -0
  33. package/src/duckdb/src/common/adbc/adbc.cpp +183 -94
  34. package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -2
  35. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  36. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
  37. package/src/duckdb/src/common/checksum.cpp +1 -1
  38. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  39. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  40. package/src/duckdb/src/common/field_writer.cpp +1 -1
  41. package/src/duckdb/src/common/file_system.cpp +15 -2
  42. package/src/duckdb/src/common/fsst.cpp +11 -6
  43. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  44. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  45. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  46. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  47. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  48. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  49. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  50. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  51. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  52. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  53. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  54. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  55. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  56. package/src/duckdb/src/common/serializer.cpp +1 -1
  57. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  58. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  59. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  60. package/src/duckdb/src/common/types/bit.cpp +5 -5
  61. package/src/duckdb/src/common/types/blob.cpp +8 -8
  62. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  63. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  64. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  65. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  66. package/src/duckdb/src/common/types/hash.cpp +2 -2
  67. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  68. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  69. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  70. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  71. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +17 -17
  72. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  73. package/src/duckdb/src/common/types/value.cpp +2 -2
  74. package/src/duckdb/src/common/types/vector.cpp +101 -101
  75. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  76. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  77. package/src/duckdb/src/common/types.cpp +44 -33
  78. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  79. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  80. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  81. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  82. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
  83. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
  84. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +32 -36
  85. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
  86. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
  87. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +43 -43
  88. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
  89. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
  90. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
  91. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
  92. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
  93. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
  94. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +36 -37
  95. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
  96. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
  97. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
  98. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +83 -119
  99. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
  100. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  101. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
  102. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
  103. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
  104. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
  105. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
  106. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
  107. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  108. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
  109. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  110. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  111. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  112. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  113. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
  114. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  115. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
  116. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
  117. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  118. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  119. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  120. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +1 -1
  121. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  122. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
  123. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  124. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  125. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  126. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  127. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  128. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  129. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  130. package/src/duckdb/src/execution/expression_executor.cpp +33 -28
  131. package/src/duckdb/src/execution/index/art/art.cpp +30 -32
  132. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
  133. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  134. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  135. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  136. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  137. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  138. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  139. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  140. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  141. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  142. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  143. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  144. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  145. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  146. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  147. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  148. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  149. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  150. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  151. package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +2 -0
  152. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  153. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  154. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  155. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  156. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
  157. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  158. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  159. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  160. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  161. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  162. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  163. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  164. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  165. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  166. package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
  167. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  168. package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
  169. package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
  170. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
  171. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  172. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  173. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  174. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  175. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  176. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  177. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  178. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  179. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
  180. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
  181. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  182. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  183. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  184. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  185. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  186. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  187. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  188. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
  189. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  190. package/src/duckdb/src/function/table/arrow.cpp +4 -4
  191. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  192. package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
  193. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  194. package/src/duckdb/src/function/table/glob.cpp +1 -1
  195. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  196. package/src/duckdb/src/function/table/range.cpp +4 -4
  197. package/src/duckdb/src/function/table/read_csv.cpp +4 -7
  198. package/src/duckdb/src/function/table/repeat.cpp +2 -2
  199. package/src/duckdb/src/function/table/repeat_row.cpp +2 -2
  200. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  201. package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
  202. package/src/duckdb/src/function/table/table_scan.cpp +2 -2
  203. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  204. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  205. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -2
  206. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  207. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +5 -0
  208. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  209. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  210. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  211. package/src/duckdb/src/include/duckdb/common/exception.hpp +2 -2
  212. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  213. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  214. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  215. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  216. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  217. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  218. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  219. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  220. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  221. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  222. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  223. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  224. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  225. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  226. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  227. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  228. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
  229. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  230. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  231. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  232. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  233. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
  234. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
  235. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
  236. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
  237. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
  238. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
  239. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  240. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -3
  241. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  242. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  243. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  244. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  245. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +8 -29
  246. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
  247. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  248. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  249. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  250. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  251. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  252. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  253. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  254. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
  255. package/src/duckdb/src/include/duckdb/function/table_function.hpp +6 -6
  256. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  257. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  258. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  259. package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
  260. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  261. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  262. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  263. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  264. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  265. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  266. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  267. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  268. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  269. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  270. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  271. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  272. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  273. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  274. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  275. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  276. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  277. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  278. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  279. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  280. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  281. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  282. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  283. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  284. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  285. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  286. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  287. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  288. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  289. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  290. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -1
  291. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  292. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  293. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
  294. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  295. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  296. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  297. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +107 -91
  298. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +1 -1
  299. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  300. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  301. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
  302. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  303. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  304. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  305. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  306. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  307. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  308. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  309. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  310. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  311. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  312. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  313. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  314. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  315. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  316. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  318. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  319. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  320. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  321. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  322. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  323. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  324. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -2
  325. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  326. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  327. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  328. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  329. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  330. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  331. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  332. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  333. package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
  334. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  335. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  336. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  337. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  338. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  339. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  340. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  341. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  342. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  343. package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
  344. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  345. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  346. package/src/duckdb/src/main/capi/config-c.cpp +1 -1
  347. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  348. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  349. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  350. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  351. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  352. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  353. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  354. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  355. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  356. package/src/duckdb/src/main/client_context.cpp +3 -3
  357. package/src/duckdb/src/main/database_manager.cpp +1 -1
  358. package/src/duckdb/src/main/error_manager.cpp +1 -1
  359. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  360. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  361. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  362. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  363. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  364. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  365. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  366. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  367. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  368. package/src/duckdb/src/main/relation.cpp +1 -1
  369. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  370. package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
  371. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  372. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  373. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +4 -7
  374. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  375. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  376. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  377. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  378. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  379. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  380. package/src/duckdb/src/parallel/executor.cpp +1 -1
  381. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  382. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  383. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  384. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  385. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  386. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  387. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  388. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  389. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  390. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  391. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  392. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  393. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  394. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  395. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  396. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  397. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  398. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  399. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  400. package/src/duckdb/src/parser/parser.cpp +3 -3
  401. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  402. package/src/duckdb/src/parser/query_node.cpp +7 -6
  403. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  404. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  405. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  406. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  407. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  408. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  409. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  410. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  411. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  412. package/src/duckdb/src/parser/tableref.cpp +12 -3
  413. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  414. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  415. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  416. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  417. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  418. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  419. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  420. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  421. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  422. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
  423. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  424. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  425. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  426. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  427. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
  428. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  429. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  430. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  431. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  432. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  433. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  434. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  435. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  436. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  437. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  438. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  439. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  440. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  441. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +3 -4
  442. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  443. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  444. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  445. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  446. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  447. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  448. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  449. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  450. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  451. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  452. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -22
  453. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  454. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  455. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  456. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  457. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  458. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  459. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  460. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  461. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  462. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  463. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  464. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  465. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  466. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  467. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  468. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  469. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  470. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  471. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  472. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  473. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  474. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  475. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +27 -27
  476. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  477. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  478. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  479. package/src/duckdb/src/parser/transformer.cpp +46 -46
  480. package/src/duckdb/src/planner/bind_context.cpp +6 -6
  481. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
  482. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  483. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  484. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  485. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
  486. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  487. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +13 -5
  488. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  489. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +1 -1
  490. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +1 -1
  491. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +14 -7
  492. package/src/duckdb/src/planner/binder.cpp +1 -1
  493. package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
  494. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
  495. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  496. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  497. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  498. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  499. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  500. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  501. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  502. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  503. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  504. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  505. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  506. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  507. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  508. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  509. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  510. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  511. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  512. package/src/duckdb/src/planner/expression.cpp +15 -0
  513. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  514. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  515. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  516. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  517. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  518. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  519. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  520. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  521. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  522. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  523. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  524. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  525. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  526. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  527. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  528. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  529. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  530. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  531. package/src/duckdb/src/storage/data_table.cpp +2 -2
  532. package/src/duckdb/src/storage/index.cpp +1 -3
  533. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  534. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  535. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  536. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  537. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  538. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  539. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  540. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  541. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  542. package/src/duckdb/src/storage/table/list_column_data.cpp +8 -7
  543. package/src/duckdb/src/storage/table/row_group.cpp +4 -4
  544. package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
  545. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  546. package/src/duckdb/src/storage/wal_replay.cpp +1 -1
  547. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  548. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  549. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  550. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  551. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  552. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  553. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  554. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  555. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +13479 -13564
  556. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
@@ -12,7 +12,7 @@
12
12
  #include <string.h>
13
13
  #include <stdlib.h>
14
14
 
15
- // We gotta leak the symbols of the init function
15
+ // We must leak the symbols of the init function
16
16
  duckdb_adbc::AdbcStatusCode duckdb_adbc_init(size_t count, struct duckdb_adbc::AdbcDriver *driver,
17
17
  struct duckdb_adbc::AdbcError *error) {
18
18
  if (!driver) {
@@ -41,23 +41,16 @@ duckdb_adbc::AdbcStatusCode duckdb_adbc_init(size_t count, struct duckdb_adbc::A
41
41
  }
42
42
 
43
43
  namespace duckdb_adbc {
44
- #define CHECK_TRUE(p, e, m) \
45
- if (!(p)) { \
46
- if (e) { \
47
- e->message = strdup(m); /* TODO Set cleanup callback */ \
48
- } \
49
- return ADBC_STATUS_INVALID_ARGUMENT; \
44
+ AdbcStatusCode SetErrorMaybe(const void *result, AdbcError *error, const std::string &error_message) {
45
+ if (!error) {
46
+ return ADBC_STATUS_INVALID_ARGUMENT;
50
47
  }
51
-
52
- #define CHECK_RES(res, e, m) \
53
- if (res != DuckDBSuccess) { \
54
- if (e) { \
55
- e->message = strdup(m); \
56
- } \
57
- return ADBC_STATUS_INTERNAL; \
58
- } else { \
59
- return ADBC_STATUS_OK; \
48
+ if (!result) {
49
+ SetError(error, error_message);
50
+ return ADBC_STATUS_INVALID_ARGUMENT;
60
51
  }
52
+ return ADBC_STATUS_OK;
53
+ }
61
54
 
62
55
  struct DuckDBAdbcDatabaseWrapper {
63
56
  //! The DuckDB Database Configuration
@@ -68,25 +61,58 @@ struct DuckDBAdbcDatabaseWrapper {
68
61
  std::string path;
69
62
  };
70
63
 
71
- AdbcStatusCode DatabaseNew(struct AdbcDatabase *database, struct AdbcError *error) {
72
- CHECK_TRUE(database, error, "Missing database object");
64
+ void InitiliazeADBCError(AdbcError *error) {
65
+ if (!error) {
66
+ return;
67
+ }
68
+ error->message = nullptr;
69
+ error->release = nullptr;
70
+ std::memset(error->sqlstate, '\0', sizeof(error->sqlstate));
71
+ error->vendor_code = -1;
72
+ }
73
73
 
74
+ AdbcStatusCode CheckResult(duckdb_state &res, AdbcError *error, const char *error_msg) {
75
+ if (!error) {
76
+ // Error should be a non-null pointer
77
+ return ADBC_STATUS_INVALID_ARGUMENT;
78
+ }
79
+ if (res != DuckDBSuccess) {
80
+ duckdb_adbc::SetError(error, error_msg);
81
+ return ADBC_STATUS_INTERNAL;
82
+ }
83
+ return ADBC_STATUS_OK;
84
+ }
85
+
86
+ AdbcStatusCode DatabaseNew(struct AdbcDatabase *database, struct AdbcError *error) {
87
+ auto status = SetErrorMaybe(database, error, "Missing database object");
88
+ if (status != ADBC_STATUS_OK) {
89
+ return status;
90
+ }
74
91
  database->private_data = nullptr;
75
92
  // you can't malloc a struct with a non-trivial C++ constructor
76
93
  // and std::string has a non-trivial constructor. so we need
77
94
  // to use new and delete rather than malloc and free.
78
95
  auto wrapper = new DuckDBAdbcDatabaseWrapper;
79
- CHECK_TRUE(wrapper, error, "Allocation error");
80
-
96
+ status = SetErrorMaybe(wrapper, error, "Allocation error");
97
+ if (status != ADBC_STATUS_OK) {
98
+ return status;
99
+ }
81
100
  database->private_data = wrapper;
82
101
  auto res = duckdb_create_config(&wrapper->config);
83
- CHECK_RES(res, error, "Failed to allocate");
102
+ return CheckResult(res, error, "Failed to allocate");
84
103
  }
85
104
 
86
105
  AdbcStatusCode DatabaseSetOption(struct AdbcDatabase *database, const char *key, const char *value,
87
106
  struct AdbcError *error) {
88
- CHECK_TRUE(database, error, "Missing database object");
89
- CHECK_TRUE(key, error, "Missing key");
107
+ auto status = SetErrorMaybe(database, error, "Missing database object");
108
+ if (status != ADBC_STATUS_OK) {
109
+ return status;
110
+ }
111
+
112
+ status = SetErrorMaybe(key, error, "Missing key");
113
+ if (status != ADBC_STATUS_OK) {
114
+ return status;
115
+ }
90
116
 
91
117
  auto wrapper = (DuckDBAdbcDatabaseWrapper *)database->private_data;
92
118
  if (strcmp(key, "path") == 0) {
@@ -95,17 +121,22 @@ AdbcStatusCode DatabaseSetOption(struct AdbcDatabase *database, const char *key,
95
121
  }
96
122
  auto res = duckdb_set_config(wrapper->config, key, value);
97
123
 
98
- CHECK_RES(res, error, "Failed to set configuration option");
124
+ return CheckResult(res, error, "Failed to set configuration option");
99
125
  }
100
126
 
101
127
  AdbcStatusCode DatabaseInit(struct AdbcDatabase *database, struct AdbcError *error) {
128
+ if (!error) {
129
+ return ADBC_STATUS_INVALID_ARGUMENT;
130
+ }
131
+ if (!database) {
132
+ duckdb_adbc::SetError(error, "ADBC Database has an invalid pointer");
133
+ return ADBC_STATUS_INVALID_ARGUMENT;
134
+ }
102
135
  char *errormsg;
103
136
  // TODO can we set the database path via option, too? Does not look like it...
104
137
  auto wrapper = (DuckDBAdbcDatabaseWrapper *)database->private_data;
105
138
  auto res = duckdb_open_ext(wrapper->path.c_str(), &wrapper->database, wrapper->config, &errormsg);
106
-
107
- // TODO this leaks memory because errormsg is malloc-ed
108
- CHECK_RES(res, error, errormsg);
139
+ return CheckResult(res, error, errormsg);
109
140
  }
110
141
 
111
142
  AdbcStatusCode DatabaseRelease(struct AdbcDatabase *database, struct AdbcError *error) {
@@ -122,8 +153,11 @@ AdbcStatusCode DatabaseRelease(struct AdbcDatabase *database, struct AdbcError *
122
153
  }
123
154
 
124
155
  AdbcStatusCode ConnectionNew(struct AdbcConnection *connection, struct AdbcError *error) {
156
+ auto status = SetErrorMaybe(connection, error, "Missing connection object");
157
+ if (status != ADBC_STATUS_OK) {
158
+ return status;
159
+ }
125
160
 
126
- CHECK_TRUE(connection, error, "Missing connection object");
127
161
  connection->private_data = nullptr;
128
162
  return ADBC_STATUS_OK;
129
163
  }
@@ -136,14 +170,23 @@ AdbcStatusCode ConnectionSetOption(struct AdbcConnection *connection, const char
136
170
 
137
171
  AdbcStatusCode ConnectionInit(struct AdbcConnection *connection, struct AdbcDatabase *database,
138
172
  struct AdbcError *error) {
139
- CHECK_TRUE(database, error, "Missing database");
140
- CHECK_TRUE(database->private_data, error, "Invalid database");
141
- CHECK_TRUE(connection, error, "Missing connection");
173
+ auto status = SetErrorMaybe(database, error, "Missing database");
174
+ if (status != ADBC_STATUS_OK) {
175
+ return status;
176
+ }
177
+ status = SetErrorMaybe(database->private_data, error, "Invalid database");
178
+ if (status != ADBC_STATUS_OK) {
179
+ return status;
180
+ }
181
+ status = SetErrorMaybe(connection, error, "Missing connection");
182
+ if (status != ADBC_STATUS_OK) {
183
+ return status;
184
+ }
142
185
  auto database_wrapper = (DuckDBAdbcDatabaseWrapper *)database->private_data;
143
186
 
144
187
  connection->private_data = nullptr;
145
188
  auto res = duckdb_connect(database_wrapper->database, (duckdb_connection *)&connection->private_data);
146
- CHECK_RES(res, error, "Failed to connect to Database");
189
+ return CheckResult(res, error, "Failed to connect to Database");
147
190
  }
148
191
 
149
192
  AdbcStatusCode ConnectionRelease(struct AdbcConnection *connection, struct AdbcError *error) {
@@ -213,9 +256,20 @@ void stream_schema(uintptr_t factory_ptr, duckdb::ArrowSchemaWrapper &schema) {
213
256
  AdbcStatusCode Ingest(duckdb_connection connection, const char *table_name, struct ArrowArrayStream *input,
214
257
  struct AdbcError *error) {
215
258
 
216
- CHECK_TRUE(connection, error, "Invalid connection");
217
- CHECK_TRUE(input, error, "Missing input arrow stream pointer");
218
- CHECK_TRUE(table_name, error, "Missing database object name");
259
+ auto status = SetErrorMaybe(connection, error, "Invalid connection");
260
+ if (status != ADBC_STATUS_OK) {
261
+ return status;
262
+ }
263
+
264
+ status = SetErrorMaybe(input, error, "Missing input arrow stream pointer");
265
+ if (status != ADBC_STATUS_OK) {
266
+ return status;
267
+ }
268
+
269
+ status = SetErrorMaybe(table_name, error, "Missing database object name");
270
+ if (status != ADBC_STATUS_OK) {
271
+ return status;
272
+ }
219
273
 
220
274
  try {
221
275
  // TODO evil cast, do we need a way to do this from the C api?
@@ -251,14 +305,28 @@ struct DuckDBAdbcStatementWrapper {
251
305
  AdbcStatusCode StatementNew(struct AdbcConnection *connection, struct AdbcStatement *statement,
252
306
  struct AdbcError *error) {
253
307
 
254
- CHECK_TRUE(connection, error, "Missing connection object");
255
- CHECK_TRUE(connection->private_data, error, "Invalid connection object");
256
- CHECK_TRUE(statement, error, "Missing statement object");
308
+ auto status = SetErrorMaybe(connection, error, "Missing connection object");
309
+ if (status != ADBC_STATUS_OK) {
310
+ return status;
311
+ }
312
+
313
+ status = SetErrorMaybe(connection->private_data, error, "Invalid connection object");
314
+ if (status != ADBC_STATUS_OK) {
315
+ return status;
316
+ }
317
+
318
+ status = SetErrorMaybe(statement, error, "Missing statement object");
319
+ if (status != ADBC_STATUS_OK) {
320
+ return status;
321
+ }
257
322
 
258
323
  statement->private_data = nullptr;
259
324
 
260
325
  auto statement_wrapper = (DuckDBAdbcStatementWrapper *)malloc(sizeof(DuckDBAdbcStatementWrapper));
261
- CHECK_TRUE(statement_wrapper, error, "Allocation error");
326
+ status = SetErrorMaybe(statement_wrapper, error, "Allocation error");
327
+ if (status != ADBC_STATUS_OK) {
328
+ return status;
329
+ }
262
330
 
263
331
  statement->private_data = statement_wrapper;
264
332
  statement_wrapper->connection = (duckdb_connection)connection->private_data;
@@ -298,8 +366,16 @@ AdbcStatusCode StatementRelease(struct AdbcStatement *statement, struct AdbcErro
298
366
 
299
367
  AdbcStatusCode StatementExecuteQuery(struct AdbcStatement *statement, struct ArrowArrayStream *out,
300
368
  int64_t *rows_affected, struct AdbcError *error) {
301
- CHECK_TRUE(statement, error, "Missing statement object");
302
- CHECK_TRUE(statement->private_data, error, "Invalid statement object");
369
+ auto status = SetErrorMaybe(statement, error, "Missing statement object");
370
+ if (status != ADBC_STATUS_OK) {
371
+ return status;
372
+ }
373
+
374
+ status = SetErrorMaybe(statement->private_data, error, "Invalid statement object");
375
+ if (status != ADBC_STATUS_OK) {
376
+ return status;
377
+ }
378
+
303
379
  auto wrapper = (DuckDBAdbcStatementWrapper *)statement->private_data;
304
380
 
305
381
  // TODO: Set affected rows, careful with early return
@@ -314,7 +390,10 @@ AdbcStatusCode StatementExecuteQuery(struct AdbcStatement *statement, struct Arr
314
390
  }
315
391
 
316
392
  auto res = duckdb_execute_prepared_arrow(wrapper->statement, &wrapper->result);
317
- CHECK_TRUE(res == DuckDBSuccess, error, duckdb_query_arrow_error(wrapper->result));
393
+ if (res != DuckDBSuccess) {
394
+ SetError(error, duckdb_query_arrow_error(wrapper->result));
395
+ return ADBC_STATUS_INVALID_ARGUMENT;
396
+ }
318
397
 
319
398
  if (out) {
320
399
  out->private_data = wrapper->result;
@@ -333,25 +412,45 @@ AdbcStatusCode StatementExecuteQuery(struct AdbcStatement *statement, struct Arr
333
412
 
334
413
  // this is a nop for us
335
414
  AdbcStatusCode StatementPrepare(struct AdbcStatement *statement, struct AdbcError *error) {
336
- CHECK_TRUE(statement, error, "Missing statement object");
337
- CHECK_TRUE(statement->private_data, error, "Invalid statement object");
415
+ auto status = SetErrorMaybe(statement, error, "Missing statement object");
416
+ if (status != ADBC_STATUS_OK) {
417
+ return status;
418
+ }
419
+
420
+ status = SetErrorMaybe(statement->private_data, error, "Invalid statement object");
421
+ if (status != ADBC_STATUS_OK) {
422
+ return status;
423
+ }
424
+
338
425
  return ADBC_STATUS_OK;
339
426
  }
340
427
 
341
428
  AdbcStatusCode StatementSetSqlQuery(struct AdbcStatement *statement, const char *query, struct AdbcError *error) {
342
- CHECK_TRUE(statement, error, "Missing statement object");
343
- CHECK_TRUE(query, error, "Missing query");
429
+ auto status = SetErrorMaybe(statement, error, "Missing statement object");
430
+ if (status != ADBC_STATUS_OK) {
431
+ return status;
432
+ }
433
+ status = SetErrorMaybe(query, error, "Missing query");
434
+ if (status != ADBC_STATUS_OK) {
435
+ return status;
436
+ }
344
437
 
345
438
  auto wrapper = (DuckDBAdbcStatementWrapper *)statement->private_data;
346
439
  auto res = duckdb_prepare(wrapper->connection, query, &wrapper->statement);
347
-
348
- CHECK_RES(res, error, duckdb_prepare_error(wrapper->statement));
440
+ auto error_msg = duckdb_prepare_error(wrapper->statement);
441
+ return CheckResult(res, error, error_msg);
349
442
  }
350
443
 
351
444
  AdbcStatusCode StatementBindStream(struct AdbcStatement *statement, struct ArrowArrayStream *values,
352
445
  struct AdbcError *error) {
353
- CHECK_TRUE(statement, error, "Missing statement object");
354
- CHECK_TRUE(values, error, "Missing stream object");
446
+ auto status = SetErrorMaybe(statement, error, "Missing statement object");
447
+ if (status != ADBC_STATUS_OK) {
448
+ return status;
449
+ }
450
+ status = SetErrorMaybe(values, error, "Missing stream object");
451
+ if (status != ADBC_STATUS_OK) {
452
+ return status;
453
+ }
355
454
  auto wrapper = (DuckDBAdbcStatementWrapper *)statement->private_data;
356
455
  wrapper->ingestion_stream = values;
357
456
  return ADBC_STATUS_OK;
@@ -359,8 +458,14 @@ AdbcStatusCode StatementBindStream(struct AdbcStatement *statement, struct Arrow
359
458
 
360
459
  AdbcStatusCode StatementSetOption(struct AdbcStatement *statement, const char *key, const char *value,
361
460
  struct AdbcError *error) {
362
- CHECK_TRUE(statement, error, "Missing statement object");
363
- CHECK_TRUE(key, error, "Missing key object");
461
+ auto status = SetErrorMaybe(statement, error, "Missing statement object");
462
+ if (status != ADBC_STATUS_OK) {
463
+ return status;
464
+ }
465
+ status = SetErrorMaybe(key, error, "Missing key object");
466
+ if (status != ADBC_STATUS_OK) {
467
+ return status;
468
+ }
364
469
  auto wrapper = (DuckDBAdbcStatementWrapper *)statement->private_data;
365
470
 
366
471
  if (strcmp(key, ADBC_INGEST_OPTION_TARGET_TABLE) == 0) {
@@ -372,17 +477,23 @@ AdbcStatusCode StatementSetOption(struct AdbcStatement *statement, const char *k
372
477
 
373
478
  static AdbcStatusCode QueryInternal(struct AdbcConnection *connection, struct ArrowArrayStream *out, const char *query,
374
479
  struct AdbcError *error) {
375
- AdbcStatusCode res;
376
480
  AdbcStatement statement;
377
481
 
378
- res = StatementNew(connection, &statement, error);
379
- CHECK_TRUE(!res, error, "unable to initialize statement");
380
-
381
- res = StatementSetSqlQuery(&statement, query, error);
382
- CHECK_TRUE(!res, error, "unable to initialize statement");
383
-
384
- res = StatementExecuteQuery(&statement, out, NULL, error);
385
- CHECK_TRUE(!res, error, "unable to execute statement");
482
+ auto status = StatementNew(connection, &statement, error);
483
+ if (status != ADBC_STATUS_OK) {
484
+ SetError(error, "unable to initialize statement");
485
+ return status;
486
+ }
487
+ status = StatementSetSqlQuery(&statement, query, error);
488
+ if (status != ADBC_STATUS_OK) {
489
+ SetError(error, "unable to initialize statement");
490
+ return status;
491
+ }
492
+ status = StatementExecuteQuery(&statement, out, nullptr, error);
493
+ if (status != ADBC_STATUS_OK) {
494
+ SetError(error, "unable to initialize statement");
495
+ return status;
496
+ }
386
497
 
387
498
  return ADBC_STATUS_OK;
388
499
  }
@@ -390,8 +501,17 @@ static AdbcStatusCode QueryInternal(struct AdbcConnection *connection, struct Ar
390
501
  AdbcStatusCode ConnectionGetObjects(struct AdbcConnection *connection, int depth, const char *catalog,
391
502
  const char *db_schema, const char *table_name, const char **table_type,
392
503
  const char *column_name, struct ArrowArrayStream *out, struct AdbcError *error) {
393
- CHECK_TRUE(catalog == nullptr || strcmp(catalog, "duckdb") == 0, error, "catalog must be NULL or 'duckdb'");
394
- CHECK_TRUE(table_type == nullptr, error, "table types parameter not yet supported");
504
+ if (catalog != nullptr) {
505
+ if (strcmp(catalog, "duckdb") == 0) {
506
+ SetError(error, "catalog must be NULL or 'duckdb'");
507
+ return ADBC_STATUS_INVALID_ARGUMENT;
508
+ }
509
+ }
510
+
511
+ if (table_type != nullptr) {
512
+ SetError(error, "Table types parameter not yet supported");
513
+ return ADBC_STATUS_NOT_IMPLEMENTED;
514
+ }
395
515
 
396
516
  auto q = duckdb::StringUtil::Format(R"(
397
517
  SELECT table_schema db_schema_name, LIST(table_schema_list) db_schema_tables FROM (
@@ -404,41 +524,10 @@ SELECT table_schema db_schema_name, LIST(table_schema_list) db_schema_tables FRO
404
524
  return QueryInternal(connection, out, q.c_str(), error);
405
525
  }
406
526
 
407
- //
408
- // AdbcStatusCode ConnectionGetCatalogs(struct AdbcConnection *connection, struct AdbcStatement *statement,
409
- // struct AdbcError *error) {
410
- // const char *q = "SELECT 'duckdb' catalog_name";
411
- //
412
- // return QueryInternal(connection, statement, q, error);
413
- //}
414
- //
415
- // AdbcStatusCode ConnectionGetDbSchemas(struct AdbcConnection *connection, struct AdbcStatement *statement,
416
- // struct AdbcError *error) {
417
- // const char *q = "SELECT 'duckdb' catalog_name, schema_name db_schema_name FROM information_schema.schemata ORDER "
418
- // "BY schema_name";
419
- // return QueryInternal(connection, statement, q, error);
420
- //}
421
527
  AdbcStatusCode ConnectionGetTableTypes(struct AdbcConnection *connection, struct ArrowArrayStream *out,
422
528
  struct AdbcError *error) {
423
529
  const char *q = "SELECT DISTINCT table_type FROM information_schema.tables ORDER BY table_type";
424
530
  return QueryInternal(connection, out, q, error);
425
531
  }
426
- //
427
- // AdbcStatusCode ConnectionGetTables(struct AdbcConnection *connection, const char *catalog, const char *db_schema,
428
- // const char *table_name, const char **table_types,
429
- // struct AdbcStatement *statement, struct AdbcError *error) {
430
- //
431
- // CHECK_TRUE(catalog == nullptr || strcmp(catalog, "duckdb") == 0, error, "catalog must be NULL or 'duckdb'");
432
- //
433
- // // let's wait for https://github.com/lidavidm/arrow/issues/6
434
- // CHECK_TRUE(table_types == nullptr, error, "table types parameter not yet supported");
435
- // auto q = duckdb::StringUtil::Format(
436
- // "SELECT 'duckdb' catalog_name, table_schema db_schema_name, table_name, table_type FROM "
437
- // "information_schema.tables WHERE table_schema LIKE '%s' AND table_name LIKE '%s' ORDER BY table_schema, "
438
- // "table_name",
439
- // db_schema ? db_schema : "%", table_name ? table_name : "%");
440
- //
441
- // return QueryInternal(connection, statement, q.c_str(), error);
442
- //}
443
532
 
444
533
  } // namespace duckdb_adbc
@@ -61,16 +61,18 @@ void GetWinError(std::string *buffer) {
61
61
 
62
62
  void ReleaseError(struct AdbcError *error) {
63
63
  if (error) {
64
- if (error->message)
64
+ if (error->message) {
65
65
  delete[] error->message;
66
+ }
66
67
  error->message = nullptr;
67
68
  error->release = nullptr;
68
69
  }
69
70
  }
70
71
 
71
72
  void SetError(struct AdbcError *error, const std::string &message) {
72
- if (!error)
73
+ if (!error) {
73
74
  return;
75
+ }
74
76
  if (error->message) {
75
77
  // Append
76
78
  std::string buffer = error->message;
@@ -466,6 +468,9 @@ AdbcStatusCode AdbcStatementExecutePartitions(struct AdbcStatement *statement, A
466
468
 
467
469
  AdbcStatusCode AdbcStatementExecuteQuery(struct AdbcStatement *statement, struct ArrowArrayStream *out,
468
470
  int64_t *rows_affected, struct AdbcError *error) {
471
+ if (!statement) {
472
+ return ADBC_STATUS_INVALID_ARGUMENT;
473
+ }
469
474
  if (!statement->private_driver) {
470
475
  return ADBC_STATUS_INVALID_STATE;
471
476
  }
@@ -482,6 +487,9 @@ AdbcStatusCode AdbcStatementGetParameterSchema(struct AdbcStatement *statement,
482
487
 
483
488
  AdbcStatusCode AdbcStatementNew(struct AdbcConnection *connection, struct AdbcStatement *statement,
484
489
  struct AdbcError *error) {
490
+ if (!connection) {
491
+ return ADBC_STATUS_INVALID_ARGUMENT;
492
+ }
485
493
  if (!connection->private_driver) {
486
494
  return ADBC_STATUS_INVALID_STATE;
487
495
  }
@@ -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;
@@ -77,7 +77,7 @@ 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
83
  my_stream->timezone_config);
@@ -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;
@@ -108,14 +108,14 @@ int ResultArrowArrayStreamWrapper::MyStreamGetNext(struct ArrowArrayStream *stre
108
108
  if (!stream->release) {
109
109
  return -1;
110
110
  }
111
- auto my_stream = (ResultArrowArrayStreamWrapper *)stream->private_data;
111
+ auto my_stream = reinterpret_cast<ResultArrowArrayStreamWrapper *>(stream->private_data);
112
112
  auto &result = *my_stream->result;
113
113
  if (result.HasError()) {
114
114
  my_stream->last_error = result.GetErrorObject();
115
115
  return -1;
116
116
  }
117
117
  if (result.type == QueryResultType::STREAM_RESULT) {
118
- auto &stream_result = (StreamQueryResult &)result;
118
+ auto &stream_result = result.Cast<StreamQueryResult>();
119
119
  if (!stream_result.IsOpen()) {
120
120
  // Nothing to output
121
121
  out->release = nullptr;
@@ -145,7 +145,7 @@ void ResultArrowArrayStreamWrapper::MyStreamRelease(struct ArrowArrayStream *str
145
145
  return;
146
146
  }
147
147
  stream->release = nullptr;
148
- delete (ResultArrowArrayStreamWrapper *)stream->private_data;
148
+ delete reinterpret_cast<ResultArrowArrayStreamWrapper *>(stream->private_data);
149
149
  }
150
150
 
151
151
  const char *ResultArrowArrayStreamWrapper::MyStreamGetLastError(struct ArrowArrayStream *stream) {
@@ -153,7 +153,7 @@ const char *ResultArrowArrayStreamWrapper::MyStreamGetLastError(struct ArrowArra
153
153
  return "stream was released";
154
154
  }
155
155
  D_ASSERT(stream->private_data);
156
- auto my_stream = (ResultArrowArrayStreamWrapper *)stream->private_data;
156
+ auto my_stream = reinterpret_cast<ResultArrowArrayStreamWrapper *>(stream->private_data);
157
157
  return my_stream->last_error.Message().c_str();
158
158
  }
159
159
 
@@ -175,7 +175,7 @@ ResultArrowArrayStreamWrapper::ResultArrowArrayStreamWrapper(unique_ptr<QueryRes
175
175
 
176
176
  bool ArrowUtil::TryFetchNext(QueryResult &result, unique_ptr<DataChunk> &chunk, PreservedError &error) {
177
177
  if (result.type == QueryResultType::STREAM_RESULT) {
178
- auto &stream_result = (StreamQueryResult &)result;
178
+ auto &stream_result = result.Cast<StreamQueryResult>();
179
179
  if (!stream_result.IsOpen()) {
180
180
  return true;
181
181
  }
@@ -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