duckdb 0.8.1-dev23.0 → 0.8.1-dev253.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 (596) hide show
  1. package/package.json +1 -1
  2. package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
  3. package/src/duckdb/extension/icu/icu-makedate.cpp +5 -4
  4. package/src/duckdb/extension/json/include/json_common.hpp +1 -1
  5. package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
  6. package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -6
  7. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +1 -1
  8. package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
  9. package/src/duckdb/extension/json/json_functions.cpp +3 -0
  10. package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
  11. package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
  12. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
  13. package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
  14. package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
  15. package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
  16. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
  17. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  18. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  19. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  20. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  21. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  22. package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
  23. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  24. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  25. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  26. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  27. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  28. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  29. package/src/duckdb/src/catalog/catalog.cpp +5 -17
  30. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +113 -0
  31. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +7 -0
  32. package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
  33. package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
  34. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  35. package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
  36. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  37. package/src/duckdb/src/catalog/duck_catalog.cpp +1 -0
  38. package/src/duckdb/src/common/adbc/adbc.cpp +301 -106
  39. package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -22
  40. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  41. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
  42. package/src/duckdb/src/common/checksum.cpp +1 -1
  43. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  44. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  45. package/src/duckdb/src/common/exception.cpp +4 -1
  46. package/src/duckdb/src/common/exception_format_value.cpp +19 -14
  47. package/src/duckdb/src/common/field_writer.cpp +1 -1
  48. package/src/duckdb/src/common/file_system.cpp +15 -2
  49. package/src/duckdb/src/common/fsst.cpp +11 -6
  50. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  51. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  52. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  53. package/src/duckdb/src/common/multi_file_reader.cpp +3 -0
  54. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  55. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  56. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  57. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  58. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  59. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  60. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  61. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  62. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  63. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  64. package/src/duckdb/src/common/serializer.cpp +1 -1
  65. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  66. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  67. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  68. package/src/duckdb/src/common/types/bit.cpp +5 -5
  69. package/src/duckdb/src/common/types/blob.cpp +8 -8
  70. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  71. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  72. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  73. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  74. package/src/duckdb/src/common/types/hash.cpp +2 -2
  75. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  76. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  77. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  78. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
  79. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  80. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +61 -24
  81. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  82. package/src/duckdb/src/common/types/value.cpp +3 -2
  83. package/src/duckdb/src/common/types/vector.cpp +98 -101
  84. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  85. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  86. package/src/duckdb/src/common/types.cpp +44 -33
  87. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  88. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  89. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  90. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  91. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
  92. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
  93. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +32 -36
  94. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
  95. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
  96. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +44 -44
  97. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
  98. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
  99. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
  100. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
  101. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
  102. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
  103. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +36 -37
  104. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
  105. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
  106. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
  107. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +97 -121
  108. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
  109. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  110. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
  111. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
  112. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
  113. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
  114. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
  115. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
  116. package/src/duckdb/src/core_functions/function_list.cpp +1 -0
  117. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  118. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
  119. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  120. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  121. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  122. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  123. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
  124. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
  125. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  126. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
  127. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
  128. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  129. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  130. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  131. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +4 -1
  132. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  133. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
  134. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  135. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  136. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  137. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  138. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  139. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  140. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  141. package/src/duckdb/src/execution/expression_executor.cpp +28 -28
  142. package/src/duckdb/src/execution/index/art/art.cpp +30 -32
  143. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
  144. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  145. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  146. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  147. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  148. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  149. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  150. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  151. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +7 -5
  152. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  153. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
  154. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
  155. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  156. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  157. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  158. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  159. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  160. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  161. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  162. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  163. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  164. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  165. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  166. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  167. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  168. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  169. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
  170. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  171. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  172. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  173. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  174. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  175. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  176. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  177. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  178. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  179. package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
  180. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  181. package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
  182. package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
  183. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
  184. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  185. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  186. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  187. package/src/duckdb/src/function/cast/list_casts.cpp +2 -4
  188. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  189. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  190. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  191. package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
  192. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  193. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  194. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
  195. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
  196. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  197. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  198. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  199. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  200. package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +6 -2
  201. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  202. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  203. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  204. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
  205. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  206. package/src/duckdb/src/function/table/arrow.cpp +6 -6
  207. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  208. package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
  209. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  210. package/src/duckdb/src/function/table/glob.cpp +1 -1
  211. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  212. package/src/duckdb/src/function/table/range.cpp +4 -4
  213. package/src/duckdb/src/function/table/read_csv.cpp +15 -20
  214. package/src/duckdb/src/function/table/repeat.cpp +2 -2
  215. package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
  216. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  217. package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
  218. package/src/duckdb/src/function/table/table_scan.cpp +2 -2
  219. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  220. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  221. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -5
  222. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
  223. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +6 -0
  224. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  225. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
  226. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
  227. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +5 -0
  228. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  229. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  230. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  231. package/src/duckdb/src/include/duckdb/common/exception.hpp +5 -2
  232. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  233. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  234. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  235. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  236. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  237. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  238. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  239. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  240. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  241. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  242. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  243. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  244. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  245. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  246. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  247. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  248. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
  249. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  250. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  251. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  252. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  253. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
  254. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
  255. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
  256. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
  257. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
  258. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
  259. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
  260. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
  261. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
  262. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  263. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -3
  264. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  265. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  266. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  267. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  268. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +8 -29
  269. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
  270. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  271. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  272. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  273. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  274. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  275. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +3 -1
  276. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  277. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  278. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
  279. package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -7
  280. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  281. package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
  282. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  283. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  284. package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
  285. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  286. package/src/duckdb/src/include/duckdb/main/settings.hpp +9 -0
  287. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  288. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  289. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  290. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  291. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  292. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  293. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  294. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  295. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  296. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  297. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  298. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  299. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  300. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  301. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  302. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  303. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  304. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  305. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  306. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  307. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  308. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  309. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  310. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  311. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  312. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  313. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  314. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  315. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  316. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
  318. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  319. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  320. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
  321. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  322. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  323. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  324. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +107 -91
  325. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
  326. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  327. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  328. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
  329. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  330. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  331. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  332. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  333. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  334. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  335. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  336. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  337. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  338. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  339. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  340. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  341. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  342. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  343. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  344. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  345. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  346. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  347. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  348. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
  349. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  350. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  351. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  352. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +7 -2
  353. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +6 -2
  354. package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +4 -0
  355. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +5 -1
  356. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +5 -1
  357. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  358. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +6 -2
  359. package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +4 -0
  360. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  361. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  362. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  363. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  364. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  365. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  366. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  367. package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
  368. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  369. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  370. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  371. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  372. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  373. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  374. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  375. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  376. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  377. package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
  378. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  379. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  380. package/src/duckdb/src/main/capi/config-c.cpp +1 -1
  381. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  382. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  383. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  384. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  385. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  386. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  387. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  388. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  389. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  390. package/src/duckdb/src/main/client_context.cpp +3 -3
  391. package/src/duckdb/src/main/config.cpp +1 -0
  392. package/src/duckdb/src/main/database_manager.cpp +1 -1
  393. package/src/duckdb/src/main/error_manager.cpp +1 -1
  394. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  395. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  396. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  397. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  398. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  399. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  400. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  401. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  402. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  403. package/src/duckdb/src/main/relation.cpp +1 -1
  404. package/src/duckdb/src/main/settings/settings.cpp +22 -6
  405. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  406. package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
  407. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  408. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  409. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  410. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  411. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  412. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  413. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  414. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  415. package/src/duckdb/src/parallel/executor.cpp +1 -1
  416. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  417. package/src/duckdb/src/parser/column_definition.cpp +5 -8
  418. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  419. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  420. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  421. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  422. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  423. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  424. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  425. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  426. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  427. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  428. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  429. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  430. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  431. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  432. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  433. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  434. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  435. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  436. package/src/duckdb/src/parser/parser.cpp +4 -4
  437. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  438. package/src/duckdb/src/parser/query_node.cpp +7 -6
  439. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  440. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  441. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  442. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  443. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  444. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  445. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  446. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  447. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  448. package/src/duckdb/src/parser/tableref.cpp +12 -3
  449. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  450. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  451. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  452. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  453. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  454. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  455. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  456. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  457. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  458. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
  459. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  460. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  461. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  462. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  463. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
  464. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  465. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  466. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  467. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  468. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  469. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  470. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  471. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  472. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  473. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  474. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  475. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  476. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  477. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +3 -4
  478. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  479. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  480. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  481. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  482. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  483. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  484. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  485. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  486. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  487. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  488. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -22
  489. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  490. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  491. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  492. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  493. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  494. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  495. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  496. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  497. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  498. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  499. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  500. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  501. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  502. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  503. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  504. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  505. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  506. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  507. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  508. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  509. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  510. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  511. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
  512. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  513. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  514. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  515. package/src/duckdb/src/parser/transformer.cpp +46 -46
  516. package/src/duckdb/src/planner/bind_context.cpp +9 -10
  517. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
  518. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  519. package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +8 -3
  520. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  521. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  522. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
  523. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  524. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +1 -1
  525. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
  526. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  527. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
  528. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +4 -2
  529. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +17 -7
  530. package/src/duckdb/src/planner/binder.cpp +1 -1
  531. package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
  532. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
  533. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  534. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  535. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  536. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  537. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  538. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  539. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  540. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  541. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  542. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  543. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  544. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  545. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  546. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  547. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  548. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  549. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  550. package/src/duckdb/src/planner/expression.cpp +15 -0
  551. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  552. package/src/duckdb/src/planner/expression_binder.cpp +3 -2
  553. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  554. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  555. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  556. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  557. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  558. package/src/duckdb/src/planner/planner.cpp +5 -15
  559. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  560. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  561. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  562. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  563. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  564. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  565. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  566. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  567. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  568. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  569. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  570. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  571. package/src/duckdb/src/storage/data_table.cpp +8 -7
  572. package/src/duckdb/src/storage/index.cpp +1 -3
  573. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  574. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  575. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  576. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  577. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  578. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  579. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  580. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  581. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  582. package/src/duckdb/src/storage/table/list_column_data.cpp +3 -3
  583. package/src/duckdb/src/storage/table/row_group.cpp +4 -4
  584. package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
  585. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  586. package/src/duckdb/src/storage/wal_replay.cpp +5 -6
  587. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  588. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  589. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  590. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  591. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  592. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  593. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  594. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  595. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +11391 -11442
  596. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
@@ -59,8 +59,8 @@ bool ScalarFunction::Equal(const ScalarFunction &rhs) const {
59
59
  bool ScalarFunction::CompareScalarFunctionT(const scalar_function_t &other) const {
60
60
  typedef void(scalar_function_ptr_t)(DataChunk &, ExpressionState &, Vector &);
61
61
 
62
- auto func_ptr = (scalar_function_ptr_t **)function.template target<scalar_function_ptr_t *>();
63
- auto other_ptr = (scalar_function_ptr_t **)other.template target<scalar_function_ptr_t *>();
62
+ auto func_ptr = (scalar_function_ptr_t **)function.template target<scalar_function_ptr_t *>(); // NOLINT
63
+ auto other_ptr = (scalar_function_ptr_t **)other.template target<scalar_function_ptr_t *>(); // NOLINT
64
64
 
65
65
  // Case the functions were created from lambdas the target will return a nullptr
66
66
  if (!func_ptr && !other_ptr) {
@@ -70,7 +70,7 @@ bool ScalarFunction::CompareScalarFunctionT(const scalar_function_t &other) cons
70
70
  // scalar_function_t (std::functions) from lambdas cannot be compared
71
71
  return false;
72
72
  }
73
- return ((size_t)*func_ptr == (size_t)*other_ptr);
73
+ return CastPointerToValue(*func_ptr) == CastPointerToValue(*other_ptr);
74
74
  }
75
75
 
76
76
  void ScalarFunction::NopFunction(DataChunk &input, ExpressionState &state, Vector &result) {
@@ -193,8 +193,8 @@ void ArrowTableFunction::RenameArrowColumns(vector<string> &names) {
193
193
  unique_ptr<FunctionData> ArrowTableFunction::ArrowScanBind(ClientContext &context, TableFunctionBindInput &input,
194
194
  vector<LogicalType> &return_types, vector<string> &names) {
195
195
  auto stream_factory_ptr = input.inputs[0].GetPointer();
196
- auto stream_factory_produce = (stream_factory_produce_t)input.inputs[1].GetPointer();
197
- auto stream_factory_get_schema = (stream_factory_get_schema_t)input.inputs[2].GetPointer();
196
+ auto stream_factory_produce = (stream_factory_produce_t)input.inputs[1].GetPointer(); // NOLINT
197
+ auto stream_factory_get_schema = (stream_factory_get_schema_t)input.inputs[2].GetPointer(); // NOLINT
198
198
 
199
199
  auto res = make_uniq<ArrowScanFunctionData>(stream_factory_produce, stream_factory_ptr);
200
200
 
@@ -206,8 +206,8 @@ unique_ptr<FunctionData> ArrowTableFunction::ArrowScanBind(ClientContext &contex
206
206
  throw InvalidInputException("arrow_scan: released schema passed");
207
207
  }
208
208
  if (schema.dictionary) {
209
- res->arrow_convert_data[col_idx] =
210
- make_uniq<ArrowConvertData>(GetArrowLogicalType(schema, res->arrow_convert_data, col_idx));
209
+ auto logical_type = GetArrowLogicalType(schema, res->arrow_convert_data, col_idx);
210
+ res->arrow_convert_data[col_idx] = make_uniq<ArrowConvertData>(std::move(logical_type));
211
211
  return_types.emplace_back(GetArrowLogicalType(*schema.dictionary, res->arrow_convert_data, col_idx));
212
212
  } else {
213
213
  return_types.emplace_back(GetArrowLogicalType(schema, res->arrow_convert_data, col_idx));
@@ -269,7 +269,7 @@ bool ArrowTableFunction::ArrowScanParallelStateNext(ClientContext &context, cons
269
269
 
270
270
  unique_ptr<GlobalTableFunctionState> ArrowTableFunction::ArrowScanInitGlobal(ClientContext &context,
271
271
  TableFunctionInitInput &input) {
272
- auto &bind_data = (const ArrowScanFunctionData &)*input.bind_data;
272
+ auto &bind_data = input.bind_data->Cast<ArrowScanFunctionData>();
273
273
  auto result = make_uniq<ArrowScanGlobalState>();
274
274
  result->stream = ProduceArrowScan(bind_data, input.column_ids, input.filters.get());
275
275
  result->max_threads = ArrowScanMaxThreads(context, input.bind_data.get());
@@ -314,7 +314,7 @@ void ArrowTableFunction::ArrowScanFunction(ClientContext &context, TableFunction
314
314
  if (!data_p.local_state) {
315
315
  return;
316
316
  }
317
- auto &data = (ArrowScanFunctionData &)*data_p.bind_data;
317
+ auto &data = data_p.bind_data->CastNoConst<ArrowScanFunctionData>(); // FIXME
318
318
  auto &state = data_p.local_state->Cast<ArrowScanLocalState>();
319
319
  auto &global_state = data_p.global_state->Cast<ArrowScanGlobalState>();
320
320
 
@@ -28,6 +28,11 @@ static void ShiftRight(unsigned char *ar, int size, int shift) {
28
28
  }
29
29
  }
30
30
 
31
+ template <class T>
32
+ T *ArrowBufferData(ArrowArray &array, idx_t buffer_idx) {
33
+ return (T *)array.buffers[buffer_idx]; // NOLINT
34
+ }
35
+
31
36
  static void GetValidityMask(ValidityMask &mask, ArrowArray &array, ArrowScanLocalState &scan_state, idx_t size,
32
37
  int64_t nested_offset = -1, bool add_null = false) {
33
38
  // In certains we don't need to or cannot copy arrow's validity mask to duckdb.
@@ -46,18 +51,18 @@ static void GetValidityMask(ValidityMask &mask, ArrowArray &array, ArrowScanLoca
46
51
  auto n_bitmask_bytes = (size + 8 - 1) / 8;
47
52
  if (bit_offset % 8 == 0) {
48
53
  //! just memcpy nullmask
49
- memcpy((void *)mask.GetData(), (uint8_t *)array.buffers[0] + bit_offset / 8, n_bitmask_bytes);
54
+ memcpy((void *)mask.GetData(), ArrowBufferData<uint8_t>(array, 0) + bit_offset / 8, n_bitmask_bytes);
50
55
  } else {
51
56
  //! need to re-align nullmask
52
57
  vector<uint8_t> temp_nullmask(n_bitmask_bytes + 1);
53
- memcpy(temp_nullmask.data(), (uint8_t *)array.buffers[0] + bit_offset / 8, n_bitmask_bytes + 1);
58
+ memcpy(temp_nullmask.data(), ArrowBufferData<uint8_t>(array, 0) + bit_offset / 8, n_bitmask_bytes + 1);
54
59
  ShiftRight(temp_nullmask.data(), n_bitmask_bytes + 1,
55
60
  bit_offset % 8); //! why this has to be a right shift is a mystery to me
56
- memcpy((void *)mask.GetData(), (data_ptr_t)temp_nullmask.data(), n_bitmask_bytes);
61
+ memcpy((void *)mask.GetData(), data_ptr_cast(temp_nullmask.data()), n_bitmask_bytes);
57
62
  }
58
63
  #else
59
64
  auto byte_offset = bit_offset / 8;
60
- auto source_data = (uint8_t *)array.buffers[0];
65
+ auto source_data = ArrowBufferData<uint8_t>(array, 0);
61
66
  bit_offset %= 8;
62
67
  for (idx_t i = 0; i < size; i++) {
63
68
  mask.Set(i, source_data[byte_offset] & (1 << bit_offset));
@@ -115,9 +120,9 @@ static void ArrowToDuckDBList(Vector &vector, ArrowArray &array, ArrowScanLocalS
115
120
  }
116
121
  list_size = start_offset + cur_offset;
117
122
  } else if (original_type.first == ArrowVariableSizeType::NORMAL) {
118
- auto offsets = (uint32_t *)array.buffers[1] + array.offset + scan_state.chunk_offset;
123
+ auto offsets = ArrowBufferData<uint32_t>(array, 1) + array.offset + scan_state.chunk_offset;
119
124
  if (nested_offset != -1) {
120
- offsets = (uint32_t *)array.buffers[1] + nested_offset;
125
+ offsets = ArrowBufferData<uint32_t>(array, 1) + nested_offset;
121
126
  }
122
127
  start_offset = offsets[0];
123
128
  auto list_data = FlatVector::GetData<list_entry_t>(vector);
@@ -129,9 +134,9 @@ static void ArrowToDuckDBList(Vector &vector, ArrowArray &array, ArrowScanLocalS
129
134
  }
130
135
  list_size = offsets[size];
131
136
  } else {
132
- auto offsets = (uint64_t *)array.buffers[1] + array.offset + scan_state.chunk_offset;
137
+ auto offsets = ArrowBufferData<uint64_t>(array, 1) + array.offset + scan_state.chunk_offset;
133
138
  if (nested_offset != -1) {
134
- offsets = (uint64_t *)array.buffers[1] + nested_offset;
139
+ offsets = ArrowBufferData<uint64_t>(array, 1) + nested_offset;
135
140
  }
136
141
  start_offset = offsets[0];
137
142
  auto list_data = FlatVector::GetData<list_entry_t>(vector);
@@ -179,7 +184,7 @@ static void ArrowToDuckDBBlob(Vector &vector, ArrowArray &array, ArrowScanLocalS
179
184
  if (nested_offset != -1) {
180
185
  offset = original_type.second * nested_offset;
181
186
  }
182
- auto cdata = (char *)array.buffers[1];
187
+ auto cdata = ArrowBufferData<char>(array, 1);
183
188
  for (idx_t row_idx = 0; row_idx < size; row_idx++) {
184
189
  if (FlatVector::IsNull(vector, row_idx)) {
185
190
  continue;
@@ -190,11 +195,11 @@ static void ArrowToDuckDBBlob(Vector &vector, ArrowArray &array, ArrowScanLocalS
190
195
  offset += blob_len;
191
196
  }
192
197
  } else if (original_type.first == ArrowVariableSizeType::NORMAL) {
193
- auto offsets = (uint32_t *)array.buffers[1] + array.offset + scan_state.chunk_offset;
198
+ auto offsets = ArrowBufferData<uint32_t>(array, 1) + array.offset + scan_state.chunk_offset;
194
199
  if (nested_offset != -1) {
195
- offsets = (uint32_t *)array.buffers[1] + array.offset + nested_offset;
200
+ offsets = ArrowBufferData<uint32_t>(array, 1) + array.offset + nested_offset;
196
201
  }
197
- auto cdata = (char *)array.buffers[2];
202
+ auto cdata = ArrowBufferData<char>(array, 2);
198
203
  for (idx_t row_idx = 0; row_idx < size; row_idx++) {
199
204
  if (FlatVector::IsNull(vector, row_idx)) {
200
205
  continue;
@@ -205,14 +210,14 @@ static void ArrowToDuckDBBlob(Vector &vector, ArrowArray &array, ArrowScanLocalS
205
210
  }
206
211
  } else {
207
212
  //! Check if last offset is higher than max uint32
208
- if (((uint64_t *)array.buffers[1])[array.length] > NumericLimits<uint32_t>::Maximum()) { // LCOV_EXCL_START
213
+ if (ArrowBufferData<uint64_t>(array, 1)[array.length] > NumericLimits<uint32_t>::Maximum()) { // LCOV_EXCL_START
209
214
  throw ConversionException("DuckDB does not support Blobs over 4GB");
210
215
  } // LCOV_EXCL_STOP
211
- auto offsets = (uint64_t *)array.buffers[1] + array.offset + scan_state.chunk_offset;
216
+ auto offsets = ArrowBufferData<uint64_t>(array, 1) + array.offset + scan_state.chunk_offset;
212
217
  if (nested_offset != -1) {
213
- offsets = (uint64_t *)array.buffers[1] + array.offset + nested_offset;
218
+ offsets = ArrowBufferData<uint64_t>(array, 1) + array.offset + nested_offset;
214
219
  }
215
- auto cdata = (char *)array.buffers[2];
220
+ auto cdata = ArrowBufferData<char>(array, 2);
216
221
  for (idx_t row_idx = 0; row_idx < size; row_idx++) {
217
222
  if (FlatVector::IsNull(vector, row_idx)) {
218
223
  continue;
@@ -263,9 +268,9 @@ static void SetVectorString(Vector &vector, idx_t size, char *cdata, T *offsets)
263
268
  static void DirectConversion(Vector &vector, ArrowArray &array, ArrowScanLocalState &scan_state,
264
269
  int64_t nested_offset) {
265
270
  auto internal_type = GetTypeIdSize(vector.GetType().InternalType());
266
- auto data_ptr = (data_ptr_t)array.buffers[1] + internal_type * (scan_state.chunk_offset + array.offset);
271
+ auto data_ptr = ArrowBufferData<data_t>(array, 1) + internal_type * (scan_state.chunk_offset + array.offset);
267
272
  if (nested_offset != -1) {
268
- data_ptr = (data_ptr_t)array.buffers[1] + internal_type * (array.offset + nested_offset);
273
+ data_ptr = ArrowBufferData<data_t>(array, 1) + internal_type * (array.offset + nested_offset);
269
274
  }
270
275
  FlatVector::SetData(vector, data_ptr);
271
276
  }
@@ -273,7 +278,7 @@ static void DirectConversion(Vector &vector, ArrowArray &array, ArrowScanLocalSt
273
278
  template <class T>
274
279
  static void TimeConversion(Vector &vector, ArrowArray &array, ArrowScanLocalState &scan_state, int64_t nested_offset,
275
280
  idx_t size, int64_t conversion) {
276
- auto tgt_ptr = (dtime_t *)FlatVector::GetData(vector);
281
+ auto tgt_ptr = FlatVector::GetData<dtime_t>(vector);
277
282
  auto &validity_mask = FlatVector::Validity(vector);
278
283
  auto src_ptr = (T *)array.buffers[1] + scan_state.chunk_offset + array.offset;
279
284
  if (nested_offset != -1) {
@@ -291,11 +296,11 @@ static void TimeConversion(Vector &vector, ArrowArray &array, ArrowScanLocalStat
291
296
 
292
297
  static void TimestampTZConversion(Vector &vector, ArrowArray &array, ArrowScanLocalState &scan_state,
293
298
  int64_t nested_offset, idx_t size, int64_t conversion) {
294
- auto tgt_ptr = (timestamp_t *)FlatVector::GetData(vector);
299
+ auto tgt_ptr = FlatVector::GetData<timestamp_t>(vector);
295
300
  auto &validity_mask = FlatVector::Validity(vector);
296
- auto src_ptr = (int64_t *)array.buffers[1] + scan_state.chunk_offset + array.offset;
301
+ auto src_ptr = ArrowBufferData<int64_t>(array, 1) + scan_state.chunk_offset + array.offset;
297
302
  if (nested_offset != -1) {
298
- src_ptr = (int64_t *)array.buffers[1] + nested_offset + array.offset;
303
+ src_ptr = ArrowBufferData<int64_t>(array, 1) + nested_offset + array.offset;
299
304
  }
300
305
  for (idx_t row = 0; row < size; row++) {
301
306
  if (!validity_mask.RowIsValid(row)) {
@@ -309,10 +314,10 @@ static void TimestampTZConversion(Vector &vector, ArrowArray &array, ArrowScanLo
309
314
 
310
315
  static void IntervalConversionUs(Vector &vector, ArrowArray &array, ArrowScanLocalState &scan_state,
311
316
  int64_t nested_offset, idx_t size, int64_t conversion) {
312
- auto tgt_ptr = (interval_t *)FlatVector::GetData(vector);
313
- auto src_ptr = (int64_t *)array.buffers[1] + scan_state.chunk_offset + array.offset;
317
+ auto tgt_ptr = FlatVector::GetData<interval_t>(vector);
318
+ auto src_ptr = ArrowBufferData<int64_t>(array, 1) + scan_state.chunk_offset + array.offset;
314
319
  if (nested_offset != -1) {
315
- src_ptr = (int64_t *)array.buffers[1] + nested_offset + array.offset;
320
+ src_ptr = ArrowBufferData<int64_t>(array, 1) + nested_offset + array.offset;
316
321
  }
317
322
  for (idx_t row = 0; row < size; row++) {
318
323
  tgt_ptr[row].days = 0;
@@ -325,10 +330,10 @@ static void IntervalConversionUs(Vector &vector, ArrowArray &array, ArrowScanLoc
325
330
 
326
331
  static void IntervalConversionMonths(Vector &vector, ArrowArray &array, ArrowScanLocalState &scan_state,
327
332
  int64_t nested_offset, idx_t size) {
328
- auto tgt_ptr = (interval_t *)FlatVector::GetData(vector);
329
- auto src_ptr = (int32_t *)array.buffers[1] + scan_state.chunk_offset + array.offset;
333
+ auto tgt_ptr = FlatVector::GetData<interval_t>(vector);
334
+ auto src_ptr = ArrowBufferData<int32_t>(array, 1) + scan_state.chunk_offset + array.offset;
330
335
  if (nested_offset != -1) {
331
- src_ptr = (int32_t *)array.buffers[1] + nested_offset + array.offset;
336
+ src_ptr = ArrowBufferData<int32_t>(array, 1) + nested_offset + array.offset;
332
337
  }
333
338
  for (idx_t row = 0; row < size; row++) {
334
339
  tgt_ptr[row].days = 0;
@@ -339,10 +344,10 @@ static void IntervalConversionMonths(Vector &vector, ArrowArray &array, ArrowSca
339
344
 
340
345
  static void IntervalConversionMonthDayNanos(Vector &vector, ArrowArray &array, ArrowScanLocalState &scan_state,
341
346
  int64_t nested_offset, idx_t size) {
342
- auto tgt_ptr = (interval_t *)FlatVector::GetData(vector);
343
- auto src_ptr = (ArrowInterval *)array.buffers[1] + scan_state.chunk_offset + array.offset;
347
+ auto tgt_ptr = FlatVector::GetData<interval_t>(vector);
348
+ auto src_ptr = ArrowBufferData<ArrowInterval>(array, 1) + scan_state.chunk_offset + array.offset;
344
349
  if (nested_offset != -1) {
345
- src_ptr = (ArrowInterval *)array.buffers[1] + nested_offset + array.offset;
350
+ src_ptr = ArrowBufferData<ArrowInterval>(array, 1) + nested_offset + array.offset;
346
351
  }
347
352
  for (idx_t row = 0; row < size; row++) {
348
353
  tgt_ptr[row].days = src_ptr[row].days;
@@ -362,10 +367,10 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowScanLoca
362
367
  case LogicalTypeId::BOOLEAN: {
363
368
  //! Arrow bit-packs boolean values
364
369
  //! Lets first figure out where we are in the source array
365
- auto src_ptr = (uint8_t *)array.buffers[1] + (scan_state.chunk_offset + array.offset) / 8;
370
+ auto src_ptr = ArrowBufferData<uint8_t>(array, 1) + (scan_state.chunk_offset + array.offset) / 8;
366
371
 
367
372
  if (nested_offset != -1) {
368
- src_ptr = (uint8_t *)array.buffers[1] + (nested_offset + array.offset) / 8;
373
+ src_ptr = ArrowBufferData<uint8_t>(array, 1) + (nested_offset + array.offset) / 8;
369
374
  }
370
375
  auto tgt_ptr = (uint8_t *)FlatVector::GetData(vector);
371
376
  int src_pos = 0;
@@ -407,17 +412,17 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowScanLoca
407
412
  }
408
413
  case LogicalTypeId::VARCHAR: {
409
414
  auto original_type = arrow_convert_data[col_idx]->variable_sz_type[arrow_convert_idx.variable_sized_index++];
410
- auto cdata = (char *)array.buffers[2];
415
+ auto cdata = ArrowBufferData<char>(array, 2);
411
416
  if (original_type.first == ArrowVariableSizeType::SUPER_SIZE) {
412
- auto offsets = (uint64_t *)array.buffers[1] + array.offset + scan_state.chunk_offset;
417
+ auto offsets = ArrowBufferData<uint64_t>(array, 1) + array.offset + scan_state.chunk_offset;
413
418
  if (nested_offset != -1) {
414
- offsets = (uint64_t *)array.buffers[1] + array.offset + nested_offset;
419
+ offsets = ArrowBufferData<uint64_t>(array, 1) + array.offset + nested_offset;
415
420
  }
416
421
  SetVectorString(vector, size, cdata, offsets);
417
422
  } else {
418
- auto offsets = (uint32_t *)array.buffers[1] + array.offset + scan_state.chunk_offset;
423
+ auto offsets = ArrowBufferData<uint32_t>(array, 1) + array.offset + scan_state.chunk_offset;
419
424
  if (nested_offset != -1) {
420
- offsets = (uint32_t *)array.buffers[1] + array.offset + nested_offset;
425
+ offsets = ArrowBufferData<uint32_t>(array, 1) + array.offset + nested_offset;
421
426
  }
422
427
  SetVectorString(vector, size, cdata, offsets);
423
428
  }
@@ -432,11 +437,11 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowScanLoca
432
437
  }
433
438
  case ArrowDateTimeType::MILLISECONDS: {
434
439
  //! convert date from nanoseconds to days
435
- auto src_ptr = (uint64_t *)array.buffers[1] + scan_state.chunk_offset + array.offset;
440
+ auto src_ptr = ArrowBufferData<uint64_t>(array, 1) + scan_state.chunk_offset + array.offset;
436
441
  if (nested_offset != -1) {
437
- src_ptr = (uint64_t *)array.buffers[1] + nested_offset + array.offset;
442
+ src_ptr = ArrowBufferData<uint64_t>(array, 1) + nested_offset + array.offset;
438
443
  }
439
- auto tgt_ptr = (date_t *)FlatVector::GetData(vector);
444
+ auto tgt_ptr = FlatVector::GetData<date_t>(vector);
440
445
  for (idx_t row = 0; row < size; row++) {
441
446
  tgt_ptr[row] = date_t(int64_t(src_ptr[row]) / static_cast<int64_t>(1000 * 60 * 60 * 24));
442
447
  }
@@ -463,10 +468,10 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowScanLoca
463
468
  break;
464
469
  }
465
470
  case ArrowDateTimeType::NANOSECONDS: {
466
- auto tgt_ptr = (dtime_t *)FlatVector::GetData(vector);
467
- auto src_ptr = (int64_t *)array.buffers[1] + scan_state.chunk_offset + array.offset;
471
+ auto tgt_ptr = FlatVector::GetData<dtime_t>(vector);
472
+ auto src_ptr = ArrowBufferData<int64_t>(array, 1) + scan_state.chunk_offset + array.offset;
468
473
  if (nested_offset != -1) {
469
- src_ptr = (int64_t *)array.buffers[1] + nested_offset + array.offset;
474
+ src_ptr = ArrowBufferData<int64_t>(array, 1) + nested_offset + array.offset;
470
475
  }
471
476
  for (idx_t row = 0; row < size; row++) {
472
477
  tgt_ptr[row].micros = src_ptr[row] / 1000;
@@ -494,10 +499,10 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowScanLoca
494
499
  break;
495
500
  }
496
501
  case ArrowDateTimeType::NANOSECONDS: {
497
- auto tgt_ptr = (timestamp_t *)FlatVector::GetData(vector);
498
- auto src_ptr = (int64_t *)array.buffers[1] + scan_state.chunk_offset + array.offset;
502
+ auto tgt_ptr = FlatVector::GetData<timestamp_t>(vector);
503
+ auto src_ptr = ArrowBufferData<int64_t>(array, 1) + scan_state.chunk_offset + array.offset;
499
504
  if (nested_offset != -1) {
500
- src_ptr = (int64_t *)array.buffers[1] + nested_offset + array.offset;
505
+ src_ptr = ArrowBufferData<int64_t>(array, 1) + nested_offset + array.offset;
501
506
  }
502
507
  for (idx_t row = 0; row < size; row++) {
503
508
  tgt_ptr[row].value = src_ptr[row] / 1000;
@@ -526,10 +531,10 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowScanLoca
526
531
  break;
527
532
  }
528
533
  case ArrowDateTimeType::NANOSECONDS: {
529
- auto tgt_ptr = (interval_t *)FlatVector::GetData(vector);
530
- auto src_ptr = (int64_t *)array.buffers[1] + scan_state.chunk_offset + array.offset;
534
+ auto tgt_ptr = FlatVector::GetData<interval_t>(vector);
535
+ auto src_ptr = ArrowBufferData<int64_t>(array, 1) + scan_state.chunk_offset + array.offset;
531
536
  if (nested_offset != -1) {
532
- src_ptr = (int64_t *)array.buffers[1] + nested_offset + array.offset;
537
+ src_ptr = ArrowBufferData<int64_t>(array, 1) + nested_offset + array.offset;
533
538
  }
534
539
  for (idx_t row = 0; row < size; row++) {
535
540
  tgt_ptr[row].micros = src_ptr[row] / 1000;
@@ -554,13 +559,13 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowScanLoca
554
559
  case LogicalTypeId::DECIMAL: {
555
560
  auto val_mask = FlatVector::Validity(vector);
556
561
  //! We have to convert from INT128
557
- auto src_ptr = (hugeint_t *)array.buffers[1] + scan_state.chunk_offset + array.offset;
562
+ auto src_ptr = ArrowBufferData<hugeint_t>(array, 1) + scan_state.chunk_offset + array.offset;
558
563
  if (nested_offset != -1) {
559
- src_ptr = (hugeint_t *)array.buffers[1] + nested_offset + array.offset;
564
+ src_ptr = ArrowBufferData<hugeint_t>(array, 1) + nested_offset + array.offset;
560
565
  }
561
566
  switch (vector.GetType().InternalType()) {
562
567
  case PhysicalType::INT16: {
563
- auto tgt_ptr = (int16_t *)FlatVector::GetData(vector);
568
+ auto tgt_ptr = FlatVector::GetData<int16_t>(vector);
564
569
  for (idx_t row = 0; row < size; row++) {
565
570
  if (val_mask.RowIsValid(row)) {
566
571
  auto result = Hugeint::TryCast(src_ptr[row], tgt_ptr[row]);
@@ -571,7 +576,7 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowScanLoca
571
576
  break;
572
577
  }
573
578
  case PhysicalType::INT32: {
574
- auto tgt_ptr = (int32_t *)FlatVector::GetData(vector);
579
+ auto tgt_ptr = FlatVector::GetData<int32_t>(vector);
575
580
  for (idx_t row = 0; row < size; row++) {
576
581
  if (val_mask.RowIsValid(row)) {
577
582
  auto result = Hugeint::TryCast(src_ptr[row], tgt_ptr[row]);
@@ -582,7 +587,7 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowScanLoca
582
587
  break;
583
588
  }
584
589
  case PhysicalType::INT64: {
585
- auto tgt_ptr = (int64_t *)FlatVector::GetData(vector);
590
+ auto tgt_ptr = FlatVector::GetData<int64_t>(vector);
586
591
  for (idx_t row = 0; row < size; row++) {
587
592
  if (val_mask.RowIsValid(row)) {
588
593
  auto result = Hugeint::TryCast(src_ptr[row], tgt_ptr[row]);
@@ -593,8 +598,9 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowScanLoca
593
598
  break;
594
599
  }
595
600
  case PhysicalType::INT128: {
596
- FlatVector::SetData(vector, (data_ptr_t)array.buffers[1] + GetTypeIdSize(vector.GetType().InternalType()) *
597
- (scan_state.chunk_offset + array.offset));
601
+ FlatVector::SetData(vector,
602
+ ArrowBufferData<data_t>(array, 1) + GetTypeIdSize(vector.GetType().InternalType()) *
603
+ (scan_state.chunk_offset + array.offset));
598
604
  break;
599
605
  }
600
606
  default:
@@ -645,7 +651,7 @@ static void ColumnArrowToDuckDB(Vector &vector, ArrowArray &array, ArrowScanLoca
645
651
 
646
652
  template <class T>
647
653
  static void SetSelectionVectorLoop(SelectionVector &sel, data_ptr_t indices_p, idx_t size) {
648
- auto indices = (T *)indices_p;
654
+ auto indices = reinterpret_cast<T *>(indices_p);
649
655
  for (idx_t row = 0; row < size; row++) {
650
656
  sel.set_index(row, indices[row]);
651
657
  }
@@ -654,7 +660,7 @@ static void SetSelectionVectorLoop(SelectionVector &sel, data_ptr_t indices_p, i
654
660
  template <class T>
655
661
  static void SetSelectionVectorLoopWithChecks(SelectionVector &sel, data_ptr_t indices_p, idx_t size) {
656
662
 
657
- auto indices = (T *)indices_p;
663
+ auto indices = reinterpret_cast<T *>(indices_p);
658
664
  for (idx_t row = 0; row < size; row++) {
659
665
  if (indices[row] > NumericLimits<uint32_t>::Maximum()) {
660
666
  throw ConversionException("DuckDB only supports indices that fit on an uint32");
@@ -666,7 +672,7 @@ static void SetSelectionVectorLoopWithChecks(SelectionVector &sel, data_ptr_t in
666
672
  template <class T>
667
673
  static void SetMaskedSelectionVectorLoop(SelectionVector &sel, data_ptr_t indices_p, idx_t size, ValidityMask &mask,
668
674
  idx_t last_element_pos) {
669
- auto indices = (T *)indices_p;
675
+ auto indices = reinterpret_cast<T *>(indices_p);
670
676
  for (idx_t row = 0; row < size; row++) {
671
677
  if (mask.RowIsValid(row)) {
672
678
  sel.set_index(row, indices[row]);
@@ -782,7 +788,7 @@ static void ColumnArrowToDuckDBDictionary(Vector &vector, ArrowArray &array, Arr
782
788
  }
783
789
  auto dictionary_type = arrow_convert_data[col_idx]->dictionary_type;
784
790
  //! Get Pointer to Indices of Dictionary
785
- auto indices = (data_ptr_t)array.buffers[1] +
791
+ auto indices = ArrowBufferData<data_t>(array, 1) +
786
792
  GetTypeIdSize(dictionary_type.InternalType()) * (scan_state.chunk_offset + array.offset);
787
793
  if (array.null_count > 0) {
788
794
  ValidityMask indices_validity;
@@ -19,7 +19,7 @@ public:
19
19
  }
20
20
 
21
21
  bool Equals(const FunctionData &other_p) const override {
22
- auto &other = (const CheckpointBindData &)other_p;
22
+ auto &other = other_p.Cast<CheckpointBindData>();
23
23
  return db == other.db;
24
24
  }
25
25
  };
@@ -187,13 +187,13 @@ static bool RequiresQuotes(WriteCSVData &csv_data, const char *str, idx_t len) {
187
187
 
188
188
  // check for delimiter
189
189
  if (options.delimiter.length() != 0 &&
190
- ContainsFun::Find((const unsigned char *)str, len, (const unsigned char *)options.delimiter.c_str(),
190
+ ContainsFun::Find(const_uchar_ptr_cast(str), len, const_uchar_ptr_cast(options.delimiter.c_str()),
191
191
  options.delimiter.size()) != DConstants::INVALID_INDEX) {
192
192
  return true;
193
193
  }
194
194
  // check for quote
195
195
  if (options.quote.length() != 0 &&
196
- ContainsFun::Find((const unsigned char *)str, len, (const unsigned char *)options.quote.c_str(),
196
+ ContainsFun::Find(const_uchar_ptr_cast(str), len, const_uchar_ptr_cast(options.quote.c_str()),
197
197
  options.quote.size()) != DConstants::INVALID_INDEX) {
198
198
  return true;
199
199
  }
@@ -224,11 +224,11 @@ static void WriteQuotedString(Serializer &serializer, WriteCSVData &csv_data, co
224
224
  // complex CSV
225
225
  // check for quote or escape separately
226
226
  if (options.quote.length() != 0 &&
227
- ContainsFun::Find((const unsigned char *)str, len, (const unsigned char *)options.quote.c_str(),
227
+ ContainsFun::Find(const_uchar_ptr_cast(str), len, const_uchar_ptr_cast(options.quote.c_str()),
228
228
  options.quote.size()) != DConstants::INVALID_INDEX) {
229
229
  requires_escape = true;
230
230
  } else if (options.escape.length() != 0 &&
231
- ContainsFun::Find((const unsigned char *)str, len, (const unsigned char *)options.escape.c_str(),
231
+ ContainsFun::Find(const_uchar_ptr_cast(str), len, const_uchar_ptr_cast(options.escape.c_str()),
232
232
  options.escape.size()) != DConstants::INVALID_INDEX) {
233
233
  requires_escape = true;
234
234
  }
@@ -236,7 +236,7 @@ static void WriteQuotedString(Serializer &serializer, WriteCSVData &csv_data, co
236
236
  if (!requires_escape) {
237
237
  // fast path: no need to escape anything
238
238
  serializer.WriteBufferData(options.quote);
239
- serializer.WriteData((const_data_ptr_t)str, len);
239
+ serializer.WriteData(const_data_ptr_cast(str), len);
240
240
  serializer.WriteBufferData(options.quote);
241
241
  return;
242
242
  }
@@ -252,7 +252,7 @@ static void WriteQuotedString(Serializer &serializer, WriteCSVData &csv_data, co
252
252
  serializer.WriteBufferData(new_val);
253
253
  serializer.WriteBufferData(options.quote);
254
254
  } else {
255
- serializer.WriteData((const_data_ptr_t)str, len);
255
+ serializer.WriteData(const_data_ptr_cast(str), len);
256
256
  }
257
257
  }
258
258
 
@@ -281,6 +281,10 @@ struct GlobalWriteCSVData : public GlobalFunctionData {
281
281
  handle->Write((void *)data, size);
282
282
  }
283
283
 
284
+ void WriteData(const char *data, idx_t size) {
285
+ WriteData(const_data_ptr_cast(data), size);
286
+ }
287
+
284
288
  //! Write rows
285
289
  void WriteRows(const_data_ptr_t data, idx_t size, const string &newline) {
286
290
  lock_guard<mutex> flock(lock);
@@ -321,7 +325,7 @@ static unique_ptr<GlobalFunctionData> WriteCSVInitializeGlobal(ClientContext &co
321
325
  make_uniq<GlobalWriteCSVData>(FileSystem::GetFileSystem(context), file_path, options.compression);
322
326
 
323
327
  if (!options.prefix.empty()) {
324
- global_data->WriteData((const_data_ptr_t)options.prefix.c_str(), options.prefix.size());
328
+ global_data->WriteData(options.prefix.c_str(), options.prefix.size());
325
329
  }
326
330
 
327
331
  if (options.header) {
@@ -33,7 +33,7 @@ static unique_ptr<GlobalTableFunctionState> GlobFunctionInit(ClientContext &cont
33
33
 
34
34
  static void GlobFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
35
35
  auto &bind_data = data_p.bind_data->Cast<GlobFunctionBindData>();
36
- auto &state = (GlobFunctionState &)*data_p.global_state;
36
+ auto &state = data_p.global_state->Cast<GlobFunctionState>();
37
37
 
38
38
  idx_t count = 0;
39
39
  idx_t next_idx = MinValue<idx_t>(state.current_idx + STANDARD_VECTOR_SIZE, bind_data.files.size());
@@ -62,7 +62,7 @@ unique_ptr<GlobalTableFunctionState> PragmaLastProfilingOutputInit(ClientContext
62
62
 
63
63
  static void PragmaLastProfilingOutputFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
64
64
  auto &state = data_p.global_state->Cast<PragmaLastProfilingOutputOperatorData>();
65
- auto &data = (PragmaLastProfilingOutputData &)*data_p.bind_data;
65
+ auto &data = data_p.bind_data->CastNoConst<PragmaLastProfilingOutputData>();
66
66
  if (!state.initialized) {
67
67
  // create a ColumnDataCollection
68
68
  auto collection = make_uniq<ColumnDataCollection>(context, data.types);
@@ -18,7 +18,7 @@ struct RangeFunctionBindData : public TableFunctionData {
18
18
 
19
19
  public:
20
20
  bool Equals(const FunctionData &other_p) const override {
21
- auto &other = (const RangeFunctionBindData &)other_p;
21
+ auto &other = other_p.Cast<RangeFunctionBindData>();
22
22
  return other.start == start && other.end == end && other.increment == increment;
23
23
  }
24
24
  };
@@ -92,7 +92,7 @@ static unique_ptr<GlobalTableFunctionState> RangeFunctionInit(ClientContext &con
92
92
 
93
93
  static void RangeFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
94
94
  auto &bind_data = data_p.bind_data->Cast<RangeFunctionBindData>();
95
- auto &state = (RangeFunctionState &)*data_p.global_state;
95
+ auto &state = data_p.global_state->Cast<RangeFunctionState>();
96
96
 
97
97
  auto increment = bind_data.increment;
98
98
  auto end = bind_data.end;
@@ -129,7 +129,7 @@ struct RangeDateTimeBindData : public TableFunctionData {
129
129
 
130
130
  public:
131
131
  bool Equals(const FunctionData &other_p) const override {
132
- auto &other = (const RangeDateTimeBindData &)other_p;
132
+ auto &other = other_p.Cast<RangeDateTimeBindData>();
133
133
  return other.start == start && other.end == end && other.increment == increment &&
134
134
  other.inclusive_bound == inclusive_bound && other.greater_than_check == greater_than_check;
135
135
  }
@@ -213,7 +213,7 @@ static unique_ptr<GlobalTableFunctionState> RangeDateTimeInit(ClientContext &con
213
213
 
214
214
  static void RangeDateTimeFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
215
215
  auto &bind_data = data_p.bind_data->Cast<RangeDateTimeBindData>();
216
- auto &state = (RangeDateTimeState &)*data_p.global_state;
216
+ auto &state = data_p.global_state->Cast<RangeDateTimeState>();
217
217
  if (state.finished) {
218
218
  return;
219
219
  }
@@ -378,8 +378,8 @@ private:
378
378
  //! Current File Number
379
379
  idx_t file_number = 0;
380
380
  idx_t max_tuple_end = 0;
381
- //! the vector stores positions where threads ended the last line they read in the CSV File, and the set stores
382
- //! positions where they started reading the first line.
381
+ //! The vector stores positions where threads ended the last line they read in the CSV File, and the set stores
382
+ //! Positions where they started reading the first line.
383
383
  vector<vector<idx_t>> tuple_end;
384
384
  vector<set<idx_t>> tuple_start;
385
385
  //! Tuple end to batch
@@ -559,15 +559,13 @@ bool ParallelCSVGlobalState::Next(ClientContext &context, const ReadCSVData &bin
559
559
  }
560
560
  void ParallelCSVGlobalState::UpdateVerification(VerificationPositions positions, idx_t file_number_p, idx_t batch_idx) {
561
561
  lock_guard<mutex> parallel_lock(main_mutex);
562
- if (positions.beginning_of_first_line < positions.end_of_last_line) {
563
- if (positions.end_of_last_line > max_tuple_end) {
564
- max_tuple_end = positions.end_of_last_line;
565
- }
566
- tuple_end_to_batch[file_number_p][positions.end_of_last_line] = batch_idx;
567
- batch_to_tuple_end[file_number_p][batch_idx] = tuple_end[file_number_p].size();
568
- tuple_start[file_number_p].insert(positions.beginning_of_first_line);
569
- tuple_end[file_number_p].push_back(positions.end_of_last_line);
562
+ if (positions.end_of_last_line > max_tuple_end) {
563
+ max_tuple_end = positions.end_of_last_line;
570
564
  }
565
+ tuple_end_to_batch[file_number_p][positions.end_of_last_line] = batch_idx;
566
+ batch_to_tuple_end[file_number_p][batch_idx] = tuple_end[file_number_p].size();
567
+ tuple_start[file_number_p].insert(positions.beginning_of_first_line);
568
+ tuple_end[file_number_p].push_back(positions.end_of_last_line);
571
569
  }
572
570
 
573
571
  void ParallelCSVGlobalState::UpdateLinesRead(CSVBufferRead &buffer_read, idx_t file_idx) {
@@ -690,17 +688,14 @@ static void ParallelReadCSVFunction(ClientContext &context, TableFunctionInput &
690
688
  }
691
689
  if (csv_local_state.csv_reader->finished) {
692
690
  auto verification_updates = csv_local_state.csv_reader->GetVerificationPositions();
693
- if (verification_updates.beginning_of_first_line != verification_updates.end_of_last_line) {
694
- csv_global_state.UpdateVerification(verification_updates,
695
- csv_local_state.csv_reader->buffer->buffer->GetFileNumber(),
696
- csv_local_state.csv_reader->buffer->local_batch_index);
697
- }
691
+ csv_global_state.UpdateVerification(verification_updates,
692
+ csv_local_state.csv_reader->buffer->buffer->GetFileNumber(),
693
+ csv_local_state.csv_reader->buffer->local_batch_index);
698
694
  csv_global_state.UpdateLinesRead(*csv_local_state.csv_reader->buffer, csv_local_state.csv_reader->file_idx);
699
695
  auto has_next = csv_global_state.Next(context, bind_data, csv_local_state.csv_reader);
700
696
  if (csv_local_state.csv_reader) {
701
697
  csv_local_state.csv_reader->linenr = 0;
702
698
  }
703
-
704
699
  if (!has_next) {
705
700
  csv_global_state.DecrementThread();
706
701
  break;
@@ -861,16 +856,16 @@ static unique_ptr<GlobalTableFunctionState> SingleThreadedCSVInit(ClientContext
861
856
  unique_ptr<LocalTableFunctionState> SingleThreadedReadCSVInitLocal(ExecutionContext &context,
862
857
  TableFunctionInitInput &input,
863
858
  GlobalTableFunctionState *global_state_p) {
864
- auto &bind_data = (ReadCSVData &)*input.bind_data;
865
- auto &data = (SingleThreadedCSVState &)*global_state_p;
859
+ auto &bind_data = input.bind_data->CastNoConst<ReadCSVData>();
860
+ auto &data = global_state_p->Cast<SingleThreadedCSVState>();
866
861
  auto result = make_uniq<SingleThreadedCSVLocalState>();
867
862
  result->csv_reader = data.GetCSVReader(context.client, bind_data, result->file_index, result->total_size);
868
863
  return std::move(result);
869
864
  }
870
865
 
871
866
  static void SingleThreadedCSVFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
872
- auto &bind_data = (ReadCSVData &)*data_p.bind_data;
873
- auto &data = (SingleThreadedCSVState &)*data_p.global_state;
867
+ auto &bind_data = data_p.bind_data->CastNoConst<ReadCSVData>();
868
+ auto &data = data_p.global_state->Cast<SingleThreadedCSVState>();
874
869
  auto &lstate = data_p.local_state->Cast<SingleThreadedCSVLocalState>();
875
870
  if (!lstate.csv_reader) {
876
871
  // no csv_reader was set, this can happen when a filename-based filter has filtered out all possible files
@@ -31,7 +31,7 @@ static unique_ptr<GlobalTableFunctionState> RepeatInit(ClientContext &context, T
31
31
  }
32
32
 
33
33
  static void RepeatFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
34
- auto &bind_data = (const RepeatFunctionData &)*data_p.bind_data;
34
+ auto &bind_data = data_p.bind_data->Cast<RepeatFunctionData>();
35
35
  auto &state = data_p.global_state->Cast<RepeatOperatorData>();
36
36
 
37
37
  idx_t remaining = MinValue<idx_t>(bind_data.target_count - state.current_count, STANDARD_VECTOR_SIZE);
@@ -41,7 +41,7 @@ static void RepeatFunction(ClientContext &context, TableFunctionInput &data_p, D
41
41
  }
42
42
 
43
43
  static unique_ptr<NodeStatistics> RepeatCardinality(ClientContext &context, const FunctionData *bind_data_p) {
44
- auto &bind_data = (const RepeatFunctionData &)*bind_data_p;
44
+ auto &bind_data = bind_data_p->Cast<RepeatFunctionData>();
45
45
  return make_uniq<NodeStatistics>(bind_data.target_count, bind_data.target_count);
46
46
  }
47
47