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
@@ -193,8 +193,8 @@ void ColumnWriter::CompressPage(BufferedSerializer &temp_writer, size_t &compres
193
193
  case CompressionCodec::SNAPPY: {
194
194
  compressed_size = duckdb_snappy::MaxCompressedLength(temp_writer.blob.size);
195
195
  compressed_buf = duckdb::unique_ptr<data_t[]>(new data_t[compressed_size]);
196
- duckdb_snappy::RawCompress((const char *)temp_writer.blob.data.get(), temp_writer.blob.size,
197
- (char *)compressed_buf.get(), &compressed_size);
196
+ duckdb_snappy::RawCompress(const_char_ptr_cast(temp_writer.blob.data.get()), temp_writer.blob.size,
197
+ char_ptr_cast(compressed_buf.get()), &compressed_size);
198
198
  compressed_data = compressed_buf.get();
199
199
  D_ASSERT(compressed_size <= duckdb_snappy::MaxCompressedLength(temp_writer.blob.size));
200
200
  break;
@@ -203,8 +203,8 @@ void ColumnWriter::CompressPage(BufferedSerializer &temp_writer, size_t &compres
203
203
  MiniZStream s;
204
204
  compressed_size = s.MaxCompressedLength(temp_writer.blob.size);
205
205
  compressed_buf = duckdb::unique_ptr<data_t[]>(new data_t[compressed_size]);
206
- s.Compress((const char *)temp_writer.blob.data.get(), temp_writer.blob.size, (char *)compressed_buf.get(),
207
- &compressed_size);
206
+ s.Compress(const_char_ptr_cast(temp_writer.blob.data.get()), temp_writer.blob.size,
207
+ char_ptr_cast(compressed_buf.get()), &compressed_size);
208
208
  compressed_data = compressed_buf.get();
209
209
  break;
210
210
  }
@@ -280,6 +280,18 @@ class ColumnWriterPageState {
280
280
  public:
281
281
  virtual ~ColumnWriterPageState() {
282
282
  }
283
+
284
+ public:
285
+ template <class TARGET>
286
+ TARGET &Cast() {
287
+ D_ASSERT(dynamic_cast<TARGET *>(this));
288
+ return reinterpret_cast<TARGET &>(*this);
289
+ }
290
+ template <class TARGET>
291
+ const TARGET &Cast() const {
292
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
293
+ return reinterpret_cast<const TARGET &>(*this);
294
+ }
283
295
  };
284
296
 
285
297
  struct PageInformation {
@@ -412,7 +424,7 @@ void BasicColumnWriter::FlushPageState(Serializer &temp_writer, ColumnWriterPage
412
424
  }
413
425
 
414
426
  void BasicColumnWriter::Prepare(ColumnWriterState &state_p, ColumnWriterState *parent, Vector &vector, idx_t count) {
415
- auto &state = (BasicColumnWriterState &)state_p;
427
+ auto &state = state_p.Cast<BasicColumnWriterState>();
416
428
  auto &col_chunk = state.row_group.columns[state.col_idx];
417
429
 
418
430
  idx_t start = 0;
@@ -448,7 +460,7 @@ duckdb_parquet::format::Encoding::type BasicColumnWriter::GetEncoding(BasicColum
448
460
  }
449
461
 
450
462
  void BasicColumnWriter::BeginWrite(ColumnWriterState &state_p) {
451
- auto &state = (BasicColumnWriterState &)state_p;
463
+ auto &state = state_p.Cast<BasicColumnWriterState>();
452
464
 
453
465
  // set up the page write info
454
466
  state.stats_state = InitializeStatsState();
@@ -576,7 +588,7 @@ idx_t BasicColumnWriter::GetRowSize(Vector &vector, idx_t index, BasicColumnWrit
576
588
  }
577
589
 
578
590
  void BasicColumnWriter::Write(ColumnWriterState &state_p, Vector &vector, idx_t count) {
579
- auto &state = (BasicColumnWriterState &)state_p;
591
+ auto &state = state_p.Cast<BasicColumnWriterState>();
580
592
 
581
593
  idx_t remaining = count;
582
594
  idx_t offset = 0;
@@ -640,7 +652,7 @@ void BasicColumnWriter::SetParquetStatistics(BasicColumnWriterState &state,
640
652
  }
641
653
 
642
654
  void BasicColumnWriter::FinalizeWrite(ColumnWriterState &state_p) {
643
- auto &state = (BasicColumnWriterState &)state_p;
655
+ auto &state = state_p.Cast<BasicColumnWriterState>();
644
656
  auto &column_chunk = state.row_group.columns[state.col_idx];
645
657
 
646
658
  // flush the last page (if any remains)
@@ -863,10 +875,10 @@ public:
863
875
  return GetMaxValue();
864
876
  }
865
877
  string GetMinValue() override {
866
- return HasStats() ? string((char *)&min, sizeof(bool)) : string();
878
+ return HasStats() ? string(const_char_ptr_cast(&min), sizeof(bool)) : string();
867
879
  }
868
880
  string GetMaxValue() override {
869
- return HasStats() ? string((char *)&max, sizeof(bool)) : string();
881
+ return HasStats() ? string(const_char_ptr_cast(&max), sizeof(bool)) : string();
870
882
  }
871
883
  };
872
884
 
@@ -891,8 +903,8 @@ public:
891
903
 
892
904
  void WriteVector(Serializer &temp_writer, ColumnWriterStatistics *stats_p, ColumnWriterPageState *state_p,
893
905
  Vector &input_column, idx_t chunk_start, idx_t chunk_end) override {
894
- auto &stats = (BooleanStatisticsState &)*stats_p;
895
- auto &state = (BooleanWriterPageState &)*state_p;
906
+ auto &stats = stats_p->Cast<BooleanStatisticsState>();
907
+ auto &state = state_p->Cast<BooleanWriterPageState>();
896
908
  auto &mask = FlatVector::Validity(input_column);
897
909
 
898
910
  auto *ptr = FlatVector::GetData<bool>(input_column);
@@ -921,7 +933,7 @@ public:
921
933
  }
922
934
 
923
935
  void FlushPageState(Serializer &temp_writer, ColumnWriterPageState *state_p) override {
924
- auto &state = (BooleanWriterPageState &)*state_p;
936
+ auto &state = state_p->Cast<BooleanWriterPageState>();
925
937
  if (state.byte_pos > 0) {
926
938
  temp_writer.Write<uint8_t>(state.byte);
927
939
  state.byte = 0;
@@ -971,7 +983,7 @@ public:
971
983
  string GetStats(hugeint_t &input) {
972
984
  data_t buffer[16];
973
985
  WriteParquetDecimal(input, buffer);
974
- return string((char *)buffer, 16);
986
+ return string(const_char_ptr_cast(buffer), 16);
975
987
  }
976
988
 
977
989
  bool HasStats() {
@@ -1018,7 +1030,7 @@ public:
1018
1030
  Vector &input_column, idx_t chunk_start, idx_t chunk_end) override {
1019
1031
  auto &mask = FlatVector::Validity(input_column);
1020
1032
  auto *ptr = FlatVector::GetData<hugeint_t>(input_column);
1021
- auto &stats = (FixedDecimalStatistics &)*stats_p;
1033
+ auto &stats = stats_p->Cast<FixedDecimalStatistics>();
1022
1034
 
1023
1035
  data_t temp_buffer[16];
1024
1036
  for (idx_t r = chunk_start; r < chunk_end; r++) {
@@ -1247,7 +1259,7 @@ public:
1247
1259
  }
1248
1260
 
1249
1261
  void Analyze(ColumnWriterState &state_p, ColumnWriterState *parent, Vector &vector, idx_t count) override {
1250
- auto &state = (StringColumnWriterState &)state_p;
1262
+ auto &state = state_p.Cast<StringColumnWriterState>();
1251
1263
 
1252
1264
  idx_t vcount = parent ? parent->definition_levels.size() - state.definition_levels.size() : count;
1253
1265
  idx_t parent_index = state.definition_levels.size();
@@ -1295,7 +1307,7 @@ public:
1295
1307
  }
1296
1308
 
1297
1309
  void FinalizeAnalyze(ColumnWriterState &state_p) override {
1298
- auto &state = (StringColumnWriterState &)state_p;
1310
+ auto &state = state_p.Cast<StringColumnWriterState>();
1299
1311
 
1300
1312
  // check if a dictionary will require more space than a plain write, or if the dictionary page is going to
1301
1313
  // be too large
@@ -1311,9 +1323,9 @@ public:
1311
1323
 
1312
1324
  void WriteVector(Serializer &temp_writer, ColumnWriterStatistics *stats_p, ColumnWriterPageState *page_state_p,
1313
1325
  Vector &input_column, idx_t chunk_start, idx_t chunk_end) override {
1314
- auto &page_state = (StringWriterPageState &)*page_state_p;
1326
+ auto &page_state = page_state_p->Cast<StringWriterPageState>();
1315
1327
  auto &mask = FlatVector::Validity(input_column);
1316
- auto &stats = (StringStatisticsState &)*stats_p;
1328
+ auto &stats = stats_p->Cast<StringStatisticsState>();
1317
1329
 
1318
1330
  auto *ptr = FlatVector::GetData<string_t>(input_column);
1319
1331
  if (page_state.IsDictionaryEncoded()) {
@@ -1342,18 +1354,18 @@ public:
1342
1354
  }
1343
1355
  stats.Update(ptr[r]);
1344
1356
  temp_writer.Write<uint32_t>(ptr[r].GetSize());
1345
- temp_writer.WriteData((const_data_ptr_t)ptr[r].GetData(), ptr[r].GetSize());
1357
+ temp_writer.WriteData(const_data_ptr_cast(ptr[r].GetData()), ptr[r].GetSize());
1346
1358
  }
1347
1359
  }
1348
1360
  }
1349
1361
 
1350
1362
  duckdb::unique_ptr<ColumnWriterPageState> InitializePageState(BasicColumnWriterState &state_p) override {
1351
- auto &state = (StringColumnWriterState &)state_p;
1363
+ auto &state = state_p.Cast<StringColumnWriterState>();
1352
1364
  return make_uniq<StringWriterPageState>(state.key_bit_width, state.dictionary);
1353
1365
  }
1354
1366
 
1355
1367
  void FlushPageState(Serializer &temp_writer, ColumnWriterPageState *state_p) override {
1356
- auto &page_state = (StringWriterPageState &)*state_p;
1368
+ auto &page_state = state_p->Cast<StringWriterPageState>();
1357
1369
  if (page_state.bit_width != 0) {
1358
1370
  if (!page_state.written_value) {
1359
1371
  // all values are null
@@ -1366,24 +1378,24 @@ public:
1366
1378
  }
1367
1379
 
1368
1380
  duckdb_parquet::format::Encoding::type GetEncoding(BasicColumnWriterState &state_p) override {
1369
- auto &state = (StringColumnWriterState &)state_p;
1381
+ auto &state = state_p.Cast<StringColumnWriterState>();
1370
1382
  return state.IsDictionaryEncoded() ? Encoding::RLE_DICTIONARY : Encoding::PLAIN;
1371
1383
  }
1372
1384
 
1373
1385
  bool HasDictionary(BasicColumnWriterState &state_p) override {
1374
- auto &state = (StringColumnWriterState &)state_p;
1386
+ auto &state = state_p.Cast<StringColumnWriterState>();
1375
1387
  return state.IsDictionaryEncoded();
1376
1388
  }
1377
1389
 
1378
1390
  idx_t DictionarySize(BasicColumnWriterState &state_p) override {
1379
- auto &state = (StringColumnWriterState &)state_p;
1391
+ auto &state = state_p.Cast<StringColumnWriterState>();
1380
1392
  D_ASSERT(state.IsDictionaryEncoded());
1381
1393
  return state.dictionary.size();
1382
1394
  }
1383
1395
 
1384
1396
  void FlushDictionary(BasicColumnWriterState &state_p, ColumnWriterStatistics *stats_p) override {
1385
- auto &stats = (StringStatisticsState &)*stats_p;
1386
- auto &state = (StringColumnWriterState &)state_p;
1397
+ auto &stats = stats_p->Cast<StringStatisticsState>();
1398
+ auto &state = state_p.Cast<StringColumnWriterState>();
1387
1399
  if (!state.IsDictionaryEncoded()) {
1388
1400
  return;
1389
1401
  }
@@ -1401,14 +1413,14 @@ public:
1401
1413
  stats.Update(value);
1402
1414
  // write this string value to the dictionary
1403
1415
  temp_writer->Write<uint32_t>(value.GetSize());
1404
- temp_writer->WriteData((const_data_ptr_t)(value.GetData()), value.GetSize());
1416
+ temp_writer->WriteData(const_data_ptr_cast((value.GetData())), value.GetSize());
1405
1417
  }
1406
1418
  // flush the dictionary page and add it to the to-be-written pages
1407
1419
  WriteDictionary(state, std::move(temp_writer), values.size());
1408
1420
  }
1409
1421
 
1410
1422
  idx_t GetRowSize(Vector &vector, idx_t index, BasicColumnWriterState &state_p) override {
1411
- auto &state = (StringColumnWriterState &)state_p;
1423
+ auto &state = state_p.Cast<StringColumnWriterState>();
1412
1424
  if (state.IsDictionaryEncoded()) {
1413
1425
  return (state.key_bit_width + 7) / 8;
1414
1426
  } else {
@@ -1471,7 +1483,7 @@ public:
1471
1483
 
1472
1484
  void WriteVector(Serializer &temp_writer, ColumnWriterStatistics *stats_p, ColumnWriterPageState *page_state_p,
1473
1485
  Vector &input_column, idx_t chunk_start, idx_t chunk_end) override {
1474
- auto &page_state = (EnumWriterPageState &)*page_state_p;
1486
+ auto &page_state = page_state_p->Cast<EnumWriterPageState>();
1475
1487
  switch (enum_type.InternalType()) {
1476
1488
  case PhysicalType::UINT8:
1477
1489
  WriteEnumInternal<uint8_t>(temp_writer, input_column, chunk_start, chunk_end, page_state);
@@ -1492,7 +1504,7 @@ public:
1492
1504
  }
1493
1505
 
1494
1506
  void FlushPageState(Serializer &temp_writer, ColumnWriterPageState *state_p) override {
1495
- auto &page_state = (EnumWriterPageState &)*state_p;
1507
+ auto &page_state = state_p->Cast<EnumWriterPageState>();
1496
1508
  if (!page_state.written_value) {
1497
1509
  // all values are null
1498
1510
  // just write the bit width
@@ -1515,7 +1527,7 @@ public:
1515
1527
  }
1516
1528
 
1517
1529
  void FlushDictionary(BasicColumnWriterState &state, ColumnWriterStatistics *stats_p) override {
1518
- auto &stats = (StringStatisticsState &)*stats_p;
1530
+ auto &stats = stats_p->Cast<StringStatisticsState>();
1519
1531
  // write the enum values to a dictionary page
1520
1532
  auto &enum_values = EnumType::GetValuesInsertOrder(enum_type);
1521
1533
  auto enum_count = EnumType::GetSize(enum_type);
@@ -1528,7 +1540,7 @@ public:
1528
1540
  stats.Update(string_values[r]);
1529
1541
  // write this string value to the dictionary
1530
1542
  temp_writer->Write<uint32_t>(string_values[r].GetSize());
1531
- temp_writer->WriteData((const_data_ptr_t)string_values[r].GetData(), string_values[r].GetSize());
1543
+ temp_writer->WriteData(const_data_ptr_cast(string_values[r].GetData()), string_values[r].GetSize());
1532
1544
  }
1533
1545
  // flush the dictionary page and add it to the to-be-written pages
1534
1546
  WriteDictionary(state, std::move(temp_writer), enum_count);
@@ -1599,7 +1611,7 @@ bool StructColumnWriter::HasAnalyze() {
1599
1611
  }
1600
1612
 
1601
1613
  void StructColumnWriter::Analyze(ColumnWriterState &state_p, ColumnWriterState *parent, Vector &vector, idx_t count) {
1602
- auto &state = (StructColumnWriterState &)state_p;
1614
+ auto &state = state_p.Cast<StructColumnWriterState>();
1603
1615
  auto &child_vectors = StructVector::GetEntries(vector);
1604
1616
  for (idx_t child_idx = 0; child_idx < child_writers.size(); child_idx++) {
1605
1617
  // Need to check again. It might be that just one child needs it but the rest not
@@ -1611,7 +1623,7 @@ void StructColumnWriter::Analyze(ColumnWriterState &state_p, ColumnWriterState *
1611
1623
  }
1612
1624
 
1613
1625
  void StructColumnWriter::FinalizeAnalyze(ColumnWriterState &state_p) {
1614
- auto &state = (StructColumnWriterState &)state_p;
1626
+ auto &state = state_p.Cast<StructColumnWriterState>();
1615
1627
  for (idx_t child_idx = 0; child_idx < child_writers.size(); child_idx++) {
1616
1628
  // Need to check again. It might be that just one child needs it but the rest not
1617
1629
  if (child_writers[child_idx]->HasAnalyze()) {
@@ -1621,7 +1633,7 @@ void StructColumnWriter::FinalizeAnalyze(ColumnWriterState &state_p) {
1621
1633
  }
1622
1634
 
1623
1635
  void StructColumnWriter::Prepare(ColumnWriterState &state_p, ColumnWriterState *parent, Vector &vector, idx_t count) {
1624
- auto &state = (StructColumnWriterState &)state_p;
1636
+ auto &state = state_p.Cast<StructColumnWriterState>();
1625
1637
 
1626
1638
  auto &validity = FlatVector::Validity(vector);
1627
1639
  if (parent) {
@@ -1639,14 +1651,14 @@ void StructColumnWriter::Prepare(ColumnWriterState &state_p, ColumnWriterState *
1639
1651
  }
1640
1652
 
1641
1653
  void StructColumnWriter::BeginWrite(ColumnWriterState &state_p) {
1642
- auto &state = (StructColumnWriterState &)state_p;
1654
+ auto &state = state_p.Cast<StructColumnWriterState>();
1643
1655
  for (idx_t child_idx = 0; child_idx < child_writers.size(); child_idx++) {
1644
1656
  child_writers[child_idx]->BeginWrite(*state.child_states[child_idx]);
1645
1657
  }
1646
1658
  }
1647
1659
 
1648
1660
  void StructColumnWriter::Write(ColumnWriterState &state_p, Vector &vector, idx_t count) {
1649
- auto &state = (StructColumnWriterState &)state_p;
1661
+ auto &state = state_p.Cast<StructColumnWriterState>();
1650
1662
  auto &child_vectors = StructVector::GetEntries(vector);
1651
1663
  for (idx_t child_idx = 0; child_idx < child_writers.size(); child_idx++) {
1652
1664
  child_writers[child_idx]->Write(*state.child_states[child_idx], *child_vectors[child_idx], count);
@@ -1654,7 +1666,7 @@ void StructColumnWriter::Write(ColumnWriterState &state_p, Vector &vector, idx_t
1654
1666
  }
1655
1667
 
1656
1668
  void StructColumnWriter::FinalizeWrite(ColumnWriterState &state_p) {
1657
- auto &state = (StructColumnWriterState &)state_p;
1669
+ auto &state = state_p.Cast<StructColumnWriterState>();
1658
1670
  for (idx_t child_idx = 0; child_idx < child_writers.size(); child_idx++) {
1659
1671
  // we add the null count of the struct to the null count of the children
1660
1672
  child_writers[child_idx]->null_count += null_count;
@@ -1713,19 +1725,19 @@ bool ListColumnWriter::HasAnalyze() {
1713
1725
  return child_writer->HasAnalyze();
1714
1726
  }
1715
1727
  void ListColumnWriter::Analyze(ColumnWriterState &state_p, ColumnWriterState *parent, Vector &vector, idx_t count) {
1716
- auto &state = (ListColumnWriterState &)state_p;
1728
+ auto &state = state_p.Cast<ListColumnWriterState>();
1717
1729
  auto &list_child = ListVector::GetEntry(vector);
1718
1730
  auto list_count = ListVector::GetListSize(vector);
1719
1731
  child_writer->Analyze(*state.child_state, &state_p, list_child, list_count);
1720
1732
  }
1721
1733
 
1722
1734
  void ListColumnWriter::FinalizeAnalyze(ColumnWriterState &state_p) {
1723
- auto &state = (ListColumnWriterState &)state_p;
1735
+ auto &state = state_p.Cast<ListColumnWriterState>();
1724
1736
  child_writer->FinalizeAnalyze(*state.child_state);
1725
1737
  }
1726
1738
 
1727
1739
  void ListColumnWriter::Prepare(ColumnWriterState &state_p, ColumnWriterState *parent, Vector &vector, idx_t count) {
1728
- auto &state = (ListColumnWriterState &)state_p;
1740
+ auto &state = state_p.Cast<ListColumnWriterState>();
1729
1741
 
1730
1742
  auto list_data = FlatVector::GetData<list_entry_t>(vector);
1731
1743
  auto &validity = FlatVector::Validity(vector);
@@ -1782,12 +1794,12 @@ void ListColumnWriter::Prepare(ColumnWriterState &state_p, ColumnWriterState *pa
1782
1794
  }
1783
1795
 
1784
1796
  void ListColumnWriter::BeginWrite(ColumnWriterState &state_p) {
1785
- auto &state = (ListColumnWriterState &)state_p;
1797
+ auto &state = state_p.Cast<ListColumnWriterState>();
1786
1798
  child_writer->BeginWrite(*state.child_state);
1787
1799
  }
1788
1800
 
1789
1801
  void ListColumnWriter::Write(ColumnWriterState &state_p, Vector &vector, idx_t count) {
1790
- auto &state = (ListColumnWriterState &)state_p;
1802
+ auto &state = state_p.Cast<ListColumnWriterState>();
1791
1803
 
1792
1804
  auto &list_child = ListVector::GetEntry(vector);
1793
1805
  Vector child_list(list_child);
@@ -1796,7 +1808,7 @@ void ListColumnWriter::Write(ColumnWriterState &state_p, Vector &vector, idx_t c
1796
1808
  }
1797
1809
 
1798
1810
  void ListColumnWriter::FinalizeWrite(ColumnWriterState &state_p) {
1799
- auto &state = (ListColumnWriterState &)state_p;
1811
+ auto &state = state_p.Cast<ListColumnWriterState>();
1800
1812
  child_writer->FinalizeWrite(*state.child_state);
1801
1813
  }
1802
1814
 
@@ -28,7 +28,7 @@ public:
28
28
  unique_ptr<BaseStatistics> Stats(idx_t row_group_idx_p, const vector<ColumnChunk> &columns) override;
29
29
  void InitializeRead(idx_t row_group_idx_p, const vector<ColumnChunk> &columns, TProtocol &protocol_p) override;
30
30
 
31
- idx_t Read(uint64_t num_values, parquet_filter_t &filter, uint8_t *define_out, uint8_t *repeat_out,
31
+ idx_t Read(uint64_t num_values, parquet_filter_t &filter, data_ptr_t define_out, data_ptr_t repeat_out,
32
32
  Vector &result) override;
33
33
 
34
34
  void Skip(idx_t num_values) override;
@@ -51,7 +51,7 @@ public:
51
51
  const SchemaElement &schema_p, idx_t schema_idx_p, idx_t max_define,
52
52
  idx_t max_repeat);
53
53
  virtual void InitializeRead(idx_t row_group_index, const vector<ColumnChunk> &columns, TProtocol &protocol_p);
54
- virtual idx_t Read(uint64_t num_values, parquet_filter_t &filter, uint8_t *define_out, uint8_t *repeat_out,
54
+ virtual idx_t Read(uint64_t num_values, parquet_filter_t &filter, data_ptr_t define_out, data_ptr_t repeat_out,
55
55
  Vector &result_out);
56
56
 
57
57
  virtual void Skip(idx_t num_values);
@@ -143,7 +143,8 @@ private:
143
143
  void PreparePage(PageHeader &page_hdr);
144
144
  void PrepareDataPage(PageHeader &page_hdr);
145
145
  void PreparePageV2(PageHeader &page_hdr);
146
- void DecompressInternal(CompressionCodec::type codec, const char *src, idx_t src_size, char *dst, idx_t dst_size);
146
+ void DecompressInternal(CompressionCodec::type codec, const_data_ptr_t src, idx_t src_size, data_ptr_t dst,
147
+ idx_t dst_size);
147
148
 
148
149
  const duckdb_parquet::format::ColumnChunk *chunk = nullptr;
149
150
 
@@ -174,7 +175,7 @@ public:
174
175
  if (TARGET::TYPE != PhysicalType::INVALID && type.InternalType() != TARGET::TYPE) {
175
176
  throw InternalException("Failed to cast column reader to type - type mismatch");
176
177
  }
177
- return (TARGET &)*this;
178
+ return reinterpret_cast<TARGET &>(*this);
178
179
  }
179
180
 
180
181
  template <class TARGET>
@@ -182,7 +183,7 @@ public:
182
183
  if (TARGET::TYPE != PhysicalType::INVALID && type.InternalType() != TARGET::TYPE) {
183
184
  throw InternalException("Failed to cast column reader to type - type mismatch");
184
185
  }
185
- return (const TARGET &)*this;
186
+ return reinterpret_cast<const TARGET &>(*this);
186
187
  }
187
188
  };
188
189
 
@@ -24,6 +24,18 @@ public:
24
24
  vector<uint16_t> definition_levels;
25
25
  vector<uint16_t> repetition_levels;
26
26
  vector<bool> is_empty;
27
+
28
+ public:
29
+ template <class TARGET>
30
+ TARGET &Cast() {
31
+ D_ASSERT(dynamic_cast<TARGET *>(this));
32
+ return reinterpret_cast<TARGET &>(*this);
33
+ }
34
+ template <class TARGET>
35
+ const TARGET &Cast() const {
36
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
37
+ return reinterpret_cast<const TARGET &>(*this);
38
+ }
27
39
  };
28
40
 
29
41
  class ColumnWriterStatistics {
@@ -34,6 +46,18 @@ public:
34
46
  virtual string GetMax();
35
47
  virtual string GetMinValue();
36
48
  virtual string GetMaxValue();
49
+
50
+ public:
51
+ template <class TARGET>
52
+ TARGET &Cast() {
53
+ D_ASSERT(dynamic_cast<TARGET *>(this));
54
+ return reinterpret_cast<TARGET &>(*this);
55
+ }
56
+ template <class TARGET>
57
+ const TARGET &Cast() const {
58
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
59
+ return reinterpret_cast<const TARGET &>(*this);
60
+ }
37
61
  };
38
62
 
39
63
  class ColumnWriter {
@@ -21,7 +21,7 @@ public:
21
21
  ListColumnReader(ParquetReader &reader, LogicalType type_p, const SchemaElement &schema_p, idx_t schema_idx_p,
22
22
  idx_t max_define_p, idx_t max_repeat_p, duckdb::unique_ptr<ColumnReader> child_column_reader_p);
23
23
 
24
- idx_t Read(uint64_t num_values, parquet_filter_t &filter, uint8_t *define_out, uint8_t *repeat_out,
24
+ idx_t Read(uint64_t num_values, parquet_filter_t &filter, data_ptr_t define_out, data_ptr_t repeat_out,
25
25
  Vector &result_out) override;
26
26
 
27
27
  void ApplyPendingSkips(idx_t num_values) override;
@@ -4,7 +4,7 @@
4
4
  namespace duckdb {
5
5
  class DbpDecoder {
6
6
  public:
7
- DbpDecoder(const uint8_t *buffer, uint32_t buffer_len) : buffer_((char *)buffer, buffer_len) {
7
+ DbpDecoder(data_ptr_t buffer, uint32_t buffer_len) : buffer_(buffer, buffer_len) {
8
8
  //<block size in values> <number of miniblocks in a block> <total value count> <first value>
9
9
  // overall header
10
10
  block_value_count = ParquetDecodeUtils::VarintDecode<uint64_t>(buffer_);
@@ -35,8 +35,8 @@ public:
35
35
  }
36
36
 
37
37
  template <typename T>
38
- void GetBatch(char *values_target_ptr, uint32_t batch_size) {
39
- auto values = (T *)values_target_ptr;
38
+ void GetBatch(data_ptr_t values_target_ptr, uint32_t batch_size) {
39
+ auto values = reinterpret_cast<T *>(values_target_ptr);
40
40
 
41
41
  if (batch_size == 0) {
42
42
  return;
@@ -97,7 +97,7 @@ public:
97
97
  return;
98
98
  }
99
99
  auto data = duckdb::unique_ptr<uint32_t[]>(new uint32_t[values_left_in_miniblock]);
100
- GetBatch<uint32_t>((char *)data.get(), values_left_in_miniblock);
100
+ GetBatch<uint32_t>(data_ptr_cast(data.get()), values_left_in_miniblock);
101
101
  }
102
102
 
103
103
  uint64_t TotalValues() {
@@ -18,9 +18,8 @@ class RleBpDecoder {
18
18
  public:
19
19
  /// Create a decoder object. buffer/buffer_len is the decoded data.
20
20
  /// bit_width is the width of each value (before encoding).
21
- RleBpDecoder(const uint8_t *buffer, uint32_t buffer_len, uint32_t bit_width)
22
- : buffer_((char *)buffer, buffer_len), bit_width_(bit_width), current_value_(0), repeat_count_(0),
23
- literal_count_(0) {
21
+ RleBpDecoder(data_ptr_t buffer, uint32_t buffer_len, uint32_t bit_width)
22
+ : buffer_(buffer, buffer_len), bit_width_(bit_width), current_value_(0), repeat_count_(0), literal_count_(0) {
24
23
  if (bit_width >= 64) {
25
24
  throw std::runtime_error("Decode bit width too large");
26
25
  }
@@ -29,8 +28,8 @@ public:
29
28
  }
30
29
 
31
30
  template <typename T>
32
- void GetBatch(char *values_target_ptr, uint32_t batch_size) {
33
- auto values = (T *)values_target_ptr;
31
+ void GetBatch(data_ptr_t values_target_ptr, uint32_t batch_size) {
32
+ auto values = reinterpret_cast<T *>(values_target_ptr);
34
33
  uint32_t values_read = 0;
35
34
 
36
35
  while (values_read < batch_size) {
@@ -19,9 +19,9 @@ namespace duckdb {
19
19
  class ByteBuffer { // on to the 10 thousandth impl
20
20
  public:
21
21
  ByteBuffer() {};
22
- ByteBuffer(char *ptr, uint64_t len) : ptr(ptr), len(len) {};
22
+ ByteBuffer(data_ptr_t ptr, uint64_t len) : ptr(ptr), len(len) {};
23
23
 
24
- char *ptr = nullptr;
24
+ data_ptr_t ptr = nullptr;
25
25
  uint64_t len = 0;
26
26
 
27
27
  public:
@@ -41,7 +41,7 @@ public:
41
41
  template <class T>
42
42
  T get() {
43
43
  available(sizeof(T));
44
- T val = Load<T>((data_ptr_t)ptr);
44
+ T val = Load<T>(ptr);
45
45
  return val;
46
46
  }
47
47
 
@@ -76,7 +76,7 @@ public:
76
76
  if (new_size > alloc_len) {
77
77
  alloc_len = NextPowerOfTwo(new_size);
78
78
  allocated_data = allocator.Allocate(alloc_len);
79
- ptr = (char *)allocated_data.get();
79
+ ptr = allocated_data.get();
80
80
  }
81
81
  }
82
82
 
@@ -26,7 +26,7 @@ public:
26
26
  idx_t max_define_p, idx_t max_repeat_p);
27
27
 
28
28
  public:
29
- idx_t Read(uint64_t num_values, parquet_filter_t &filter, uint8_t *define_out, uint8_t *repeat_out,
29
+ idx_t Read(uint64_t num_values, parquet_filter_t &filter, data_ptr_t define_out, data_ptr_t repeat_out,
30
30
  Vector &result) override;
31
31
 
32
32
  unique_ptr<BaseStatistics> Stats(idx_t row_group_idx_p, const vector<ColumnChunk> &columns) override;
@@ -29,7 +29,7 @@ public:
29
29
 
30
30
  void InitializeRead(idx_t row_group_idx_p, const vector<ColumnChunk> &columns, TProtocol &protocol_p) override;
31
31
 
32
- idx_t Read(uint64_t num_values, parquet_filter_t &filter, uint8_t *define_out, uint8_t *repeat_out,
32
+ idx_t Read(uint64_t num_values, parquet_filter_t &filter, data_ptr_t define_out, data_ptr_t repeat_out,
33
33
  Vector &result) override;
34
34
 
35
35
  void Skip(idx_t num_values) override;
@@ -343,7 +343,7 @@ public:
343
343
 
344
344
  static unique_ptr<GlobalTableFunctionState> ParquetScanInitGlobal(ClientContext &context,
345
345
  TableFunctionInitInput &input) {
346
- auto &bind_data = (ParquetReadBindData &)*input.bind_data;
346
+ auto &bind_data = input.bind_data->CastNoConst<ParquetReadBindData>();
347
347
  auto result = make_uniq<ParquetReadGlobalState>();
348
348
 
349
349
  result->file_opening = vector<bool>(bind_data.files.size(), false);
@@ -19,7 +19,7 @@ struct ParquetMetaDataBindData : public TableFunctionData {
19
19
 
20
20
  public:
21
21
  bool Equals(const FunctionData &other_p) const override {
22
- auto &other = (const ParquetMetaDataBindData &)other_p;
22
+ auto &other = other_p.Cast<ParquetMetaDataBindData>();
23
23
  return other.return_types == return_types && files == other.files;
24
24
  }
25
25
  };