duckdb 0.8.1-dev51.0 → 0.8.1-dev96.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 (538) 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 +52 -51
  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/list_column_reader.hpp +1 -1
  14. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  15. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  16. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  17. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  18. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  19. package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
  20. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  21. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  22. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  23. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  24. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  25. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  26. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  27. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  28. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  29. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
  30. package/src/duckdb/src/common/checksum.cpp +1 -1
  31. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  32. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  33. package/src/duckdb/src/common/field_writer.cpp +1 -1
  34. package/src/duckdb/src/common/file_system.cpp +15 -2
  35. package/src/duckdb/src/common/fsst.cpp +11 -6
  36. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  37. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  38. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  39. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  40. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  41. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  42. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  43. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  44. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  45. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  46. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  47. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  48. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  49. package/src/duckdb/src/common/serializer.cpp +1 -1
  50. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  51. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  52. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  53. package/src/duckdb/src/common/types/bit.cpp +5 -5
  54. package/src/duckdb/src/common/types/blob.cpp +8 -8
  55. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  56. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  57. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  58. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  59. package/src/duckdb/src/common/types/hash.cpp +2 -2
  60. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  61. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  62. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  63. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  64. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +17 -17
  65. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  66. package/src/duckdb/src/common/types/value.cpp +2 -2
  67. package/src/duckdb/src/common/types/vector.cpp +98 -101
  68. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  69. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  70. package/src/duckdb/src/common/types.cpp +44 -33
  71. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  72. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  73. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  74. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  75. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +3 -3
  76. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +3 -3
  77. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +4 -4
  78. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +12 -11
  79. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +3 -3
  80. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +3 -3
  81. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +2 -2
  82. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +7 -7
  83. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +2 -2
  84. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +2 -2
  85. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +2 -2
  86. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +14 -14
  87. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +2 -2
  88. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +21 -21
  89. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +18 -19
  90. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +3 -4
  91. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +4 -4
  92. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +4 -4
  93. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +1 -1
  94. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +1 -1
  95. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +2 -2
  96. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +1 -1
  97. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  98. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
  99. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  100. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  101. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  102. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  103. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
  104. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  105. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
  106. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
  107. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  108. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  109. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  110. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +1 -1
  111. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  112. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
  113. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  114. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  115. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  116. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  117. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  118. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  119. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  120. package/src/duckdb/src/execution/expression_executor.cpp +28 -28
  121. package/src/duckdb/src/execution/index/art/art.cpp +30 -32
  122. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
  123. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  124. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  125. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  126. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  127. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  128. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  129. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  130. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  131. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  132. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  133. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  134. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  135. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  136. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  137. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  138. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  139. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  140. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  141. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  142. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  143. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  144. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  145. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
  146. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  147. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  148. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  149. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  150. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  151. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  152. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  153. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  154. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  155. package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
  156. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  157. package/src/duckdb/src/function/aggregate/distributive/count.cpp +2 -2
  158. package/src/duckdb/src/function/aggregate/distributive/first.cpp +5 -5
  159. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +8 -8
  160. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  161. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  162. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  163. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  164. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  165. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  166. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  167. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  168. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
  169. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
  170. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  171. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  172. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  173. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  174. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  175. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  176. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  177. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
  178. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  179. package/src/duckdb/src/function/table/arrow.cpp +4 -4
  180. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  181. package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
  182. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  183. package/src/duckdb/src/function/table/glob.cpp +1 -1
  184. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  185. package/src/duckdb/src/function/table/range.cpp +4 -4
  186. package/src/duckdb/src/function/table/read_csv.cpp +4 -4
  187. package/src/duckdb/src/function/table/repeat.cpp +2 -2
  188. package/src/duckdb/src/function/table/repeat_row.cpp +2 -2
  189. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  190. package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
  191. package/src/duckdb/src/function/table/table_scan.cpp +2 -2
  192. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  193. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  194. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -2
  195. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  196. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  197. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  198. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  199. package/src/duckdb/src/include/duckdb/common/exception.hpp +2 -2
  200. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  201. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  202. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  203. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  204. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  205. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  206. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  207. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  208. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  209. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  210. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  211. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  212. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  213. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  214. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  215. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  216. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +20 -19
  217. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  218. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  219. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  220. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  221. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +1 -1
  222. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +1 -1
  223. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +1 -1
  224. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -1
  225. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +1 -1
  226. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +2 -2
  227. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  228. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -3
  229. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  230. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  231. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  232. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  233. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  234. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  235. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  236. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  237. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  238. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  239. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  240. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
  241. package/src/duckdb/src/include/duckdb/function/table_function.hpp +6 -6
  242. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  243. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  244. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  245. package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
  246. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  247. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  248. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  249. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  250. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  251. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  252. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  253. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  254. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  255. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  256. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  257. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  258. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  259. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  260. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  261. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  262. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  263. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  264. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  265. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  266. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  267. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  268. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  269. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  270. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  271. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  272. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  273. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  274. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  275. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  276. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -1
  277. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  278. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  279. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
  280. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  281. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  282. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  283. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +107 -91
  284. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +1 -1
  285. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  286. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  287. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
  288. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  289. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  290. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  291. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  292. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  293. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  294. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  295. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  296. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  297. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  298. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  299. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  300. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  301. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  302. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  303. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  304. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  305. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  306. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  307. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  308. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  309. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  310. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -2
  311. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  312. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  313. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  314. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  315. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  316. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  317. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  318. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  319. package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
  320. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  321. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  322. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  323. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  324. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  325. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  326. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  327. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  328. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  329. package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
  330. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  331. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  332. package/src/duckdb/src/main/capi/config-c.cpp +1 -1
  333. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  334. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  335. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  336. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  337. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  338. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  339. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  340. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  341. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  342. package/src/duckdb/src/main/client_context.cpp +3 -3
  343. package/src/duckdb/src/main/database_manager.cpp +1 -1
  344. package/src/duckdb/src/main/error_manager.cpp +1 -1
  345. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  346. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  347. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  348. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  349. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  350. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  351. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  352. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  353. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  354. package/src/duckdb/src/main/relation.cpp +1 -1
  355. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  356. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  357. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  358. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  359. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  360. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  361. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  362. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  363. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  364. package/src/duckdb/src/parallel/executor.cpp +1 -1
  365. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  366. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  367. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  368. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  369. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  370. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  371. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  372. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  373. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  374. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  375. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  376. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  377. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  378. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  379. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  380. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  381. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  382. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  383. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  384. package/src/duckdb/src/parser/parser.cpp +3 -3
  385. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  386. package/src/duckdb/src/parser/query_node.cpp +7 -6
  387. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  388. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  389. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  390. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  391. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  392. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  393. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  394. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  395. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  396. package/src/duckdb/src/parser/tableref.cpp +12 -3
  397. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  398. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  399. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  400. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  401. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  402. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  403. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  404. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  405. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  406. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +69 -75
  407. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  408. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  409. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  410. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  411. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
  412. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  413. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  414. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  415. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  416. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  417. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  418. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  419. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  420. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  421. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  422. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  423. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  424. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  425. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +3 -4
  426. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  427. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  428. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  429. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  430. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  431. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  432. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  433. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  434. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  435. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  436. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -22
  437. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  438. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  439. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  440. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  441. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  442. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  443. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  444. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  445. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  446. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  447. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  448. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  449. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  450. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  451. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  452. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  453. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  454. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  455. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  456. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  457. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  458. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  459. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +27 -27
  460. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  461. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  462. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  463. package/src/duckdb/src/parser/transformer.cpp +46 -46
  464. package/src/duckdb/src/planner/bind_context.cpp +6 -6
  465. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
  466. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  467. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  468. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  469. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
  470. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  471. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +1 -1
  472. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  473. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +1 -1
  474. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +1 -1
  475. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +2 -2
  476. package/src/duckdb/src/planner/binder.cpp +1 -1
  477. package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
  478. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
  479. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  480. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  481. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  482. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  483. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  484. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  485. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  486. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  487. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  488. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  489. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  490. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  491. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  492. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  493. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  494. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  495. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  496. package/src/duckdb/src/planner/expression.cpp +15 -0
  497. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  498. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  499. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  500. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  501. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  502. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  503. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  504. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  505. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  506. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  507. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  508. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  509. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  510. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  511. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  512. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  513. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  514. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  515. package/src/duckdb/src/storage/data_table.cpp +2 -2
  516. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  517. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  518. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  519. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  520. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  521. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  522. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  523. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  524. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  525. package/src/duckdb/src/storage/table/list_column_data.cpp +3 -3
  526. package/src/duckdb/src/storage/table/row_group.cpp +4 -4
  527. package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
  528. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  529. package/src/duckdb/src/storage/wal_replay.cpp +1 -1
  530. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  531. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  532. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  533. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  534. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  535. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  536. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  537. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  538. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
@@ -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
  }
@@ -861,16 +861,16 @@ static unique_ptr<GlobalTableFunctionState> SingleThreadedCSVInit(ClientContext
861
861
  unique_ptr<LocalTableFunctionState> SingleThreadedReadCSVInitLocal(ExecutionContext &context,
862
862
  TableFunctionInitInput &input,
863
863
  GlobalTableFunctionState *global_state_p) {
864
- auto &bind_data = (ReadCSVData &)*input.bind_data;
865
- auto &data = (SingleThreadedCSVState &)*global_state_p;
864
+ auto &bind_data = input.bind_data->CastNoConst<ReadCSVData>();
865
+ auto &data = global_state_p->Cast<SingleThreadedCSVState>();
866
866
  auto result = make_uniq<SingleThreadedCSVLocalState>();
867
867
  result->csv_reader = data.GetCSVReader(context.client, bind_data, result->file_index, result->total_size);
868
868
  return std::move(result);
869
869
  }
870
870
 
871
871
  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;
872
+ auto &bind_data = data_p.bind_data->CastNoConst<ReadCSVData>();
873
+ auto &data = data_p.global_state->Cast<SingleThreadedCSVState>();
874
874
  auto &lstate = data_p.local_state->Cast<SingleThreadedCSVLocalState>();
875
875
  if (!lstate.csv_reader) {
876
876
  // 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
 
@@ -33,7 +33,7 @@ static unique_ptr<GlobalTableFunctionState> RepeatRowInit(ClientContext &context
33
33
  }
34
34
 
35
35
  static void RepeatRowFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
36
- auto &bind_data = (const RepeatRowFunctionData &)*data_p.bind_data;
36
+ auto &bind_data = data_p.bind_data->Cast<RepeatRowFunctionData>();
37
37
  auto &state = data_p.global_state->Cast<RepeatRowOperatorData>();
38
38
 
39
39
  idx_t remaining = MinValue<idx_t>(bind_data.target_count - state.current_count, STANDARD_VECTOR_SIZE);
@@ -45,7 +45,7 @@ static void RepeatRowFunction(ClientContext &context, TableFunctionInput &data_p
45
45
  }
46
46
 
47
47
  static unique_ptr<NodeStatistics> RepeatRowCardinality(ClientContext &context, const FunctionData *bind_data_p) {
48
- auto &bind_data = (const RepeatRowFunctionData &)*bind_data_p;
48
+ auto &bind_data = bind_data_p->Cast<RepeatRowFunctionData>();
49
49
  return make_uniq<NodeStatistics>(bind_data.target_count, bind_data.target_count);
50
50
  }
51
51
 
@@ -456,7 +456,7 @@ bool ExtractFunctionData(FunctionEntry &entry, idx_t function_idx, DataChunk &ou
456
456
  }
457
457
 
458
458
  void DuckDBFunctionsFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
459
- auto &data = (DuckDBFunctionsData &)*data_p.global_state;
459
+ auto &data = data_p.global_state->Cast<DuckDBFunctionsData>();
460
460
  if (data.offset >= data.entries.size()) {
461
461
  // finished returning values
462
462
  return;
@@ -233,7 +233,7 @@ unique_ptr<GlobalTableFunctionState> TestVectorTypesInit(ClientContext &context,
233
233
  }
234
234
 
235
235
  void TestVectorTypesFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
236
- auto &data = (TestVectorTypesData &)*data_p.global_state;
236
+ auto &data = data_p.global_state->Cast<TestVectorTypesData>();
237
237
  if (data.offset >= data.entries.size()) {
238
238
  // finished returning values
239
239
  return;
@@ -215,7 +215,7 @@ static unique_ptr<GlobalTableFunctionState> IndexScanInitGlobal(ClientContext &c
215
215
  auto &bind_data = input.bind_data->Cast<TableScanBindData>();
216
216
  data_ptr_t row_id_data = nullptr;
217
217
  if (!bind_data.result_ids.empty()) {
218
- row_id_data = (data_ptr_t)&bind_data.result_ids[0];
218
+ row_id_data = (data_ptr_t)&bind_data.result_ids[0]; // NOLINT - this is not pretty
219
219
  }
220
220
  auto result = make_uniq<IndexScanGlobalState>(row_id_data);
221
221
  auto &local_storage = LocalStorage::Get(context, bind_data.table.catalog);
@@ -350,7 +350,7 @@ void TableScanPushdownComplexFilter(ClientContext &context, LogicalGet &get, Fun
350
350
  } else if (expr.type == ExpressionType::COMPARE_BETWEEN) {
351
351
  // BETWEEN expression
352
352
  auto &between = expr.Cast<BoundBetweenExpression>();
353
- if (!between.input->Equals(index_expression.get())) {
353
+ if (!between.input->Equals(*index_expression)) {
354
354
  // expression doesn't match the current index expression
355
355
  continue;
356
356
  }
@@ -18,7 +18,7 @@ public:
18
18
  }
19
19
 
20
20
  bool Equals(const FunctionData &other_p) const override {
21
- auto &other = (const UnnestBindData &)other_p;
21
+ auto &other = other_p.Cast<UnnestBindData>();
22
22
  return input_type == other.input_type;
23
23
  }
24
24
  };
@@ -1,8 +1,8 @@
1
1
  #ifndef DUCKDB_VERSION
2
- #define DUCKDB_VERSION "0.8.1-dev51"
2
+ #define DUCKDB_VERSION "0.8.1-dev96"
3
3
  #endif
4
4
  #ifndef DUCKDB_SOURCE_ID
5
- #define DUCKDB_SOURCE_ID "e84cc1acb8"
5
+ #define DUCKDB_SOURCE_ID "faf428bcd3"
6
6
  #endif
7
7
  #include "duckdb/function/table/system_functions.hpp"
8
8
  #include "duckdb/main/database.hpp"
@@ -32,7 +32,7 @@ static unique_ptr<GlobalTableFunctionState> PragmaVersionInit(ClientContext &con
32
32
  }
33
33
 
34
34
  static void PragmaVersionFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
35
- auto &data = (PragmaVersionData &)*data_p.global_state;
35
+ auto &data = data_p.global_state->Cast<PragmaVersionData>();
36
36
  if (data.finished) {
37
37
  // finished returning values
38
38
  return;
@@ -333,13 +333,13 @@ public:
333
333
  template <class TARGET>
334
334
  TARGET &Cast() {
335
335
  D_ASSERT(dynamic_cast<TARGET *>(this));
336
- return (TARGET &)*this;
336
+ return reinterpret_cast<TARGET &>(*this);
337
337
  }
338
338
 
339
339
  template <class TARGET>
340
340
  const TARGET &Cast() const {
341
341
  D_ASSERT(dynamic_cast<const TARGET *>(this));
342
- return (const TARGET &)*this;
342
+ return reinterpret_cast<const TARGET &>(*this);
343
343
  }
344
344
  };
345
345