duckdb 0.8.1-dev2.0 → 0.8.1-dev219.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 (586) hide show
  1. package/binding.gyp +8 -8
  2. package/package.json +1 -1
  3. package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
  4. package/src/duckdb/extension/json/include/json_common.hpp +1 -1
  5. package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
  6. package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -6
  7. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +1 -1
  8. package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
  9. package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
  10. package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
  11. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
  12. package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
  13. package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
  14. package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
  15. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
  16. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  17. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  18. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  19. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  20. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  21. package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
  22. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  23. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  24. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  25. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  26. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  27. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  28. package/src/duckdb/src/catalog/catalog.cpp +5 -21
  29. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +113 -0
  30. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +7 -0
  31. package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
  32. package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
  33. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  34. package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
  35. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  36. package/src/duckdb/src/catalog/duck_catalog.cpp +1 -0
  37. package/src/duckdb/src/common/adbc/adbc.cpp +301 -106
  38. package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -22
  39. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  40. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
  41. package/src/duckdb/src/common/checksum.cpp +1 -1
  42. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  43. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  44. package/src/duckdb/src/common/exception.cpp +4 -1
  45. package/src/duckdb/src/common/exception_format_value.cpp +19 -14
  46. package/src/duckdb/src/common/field_writer.cpp +1 -1
  47. package/src/duckdb/src/common/file_system.cpp +15 -2
  48. package/src/duckdb/src/common/fsst.cpp +11 -6
  49. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  50. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  51. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  52. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  53. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  54. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  55. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  56. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  57. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  58. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  59. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  60. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  61. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  62. package/src/duckdb/src/common/serializer.cpp +1 -1
  63. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  64. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  65. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  66. package/src/duckdb/src/common/types/bit.cpp +5 -5
  67. package/src/duckdb/src/common/types/blob.cpp +8 -8
  68. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  69. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  70. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  71. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  72. package/src/duckdb/src/common/types/hash.cpp +2 -2
  73. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  74. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  75. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  76. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
  77. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  78. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +59 -24
  79. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  80. package/src/duckdb/src/common/types/value.cpp +3 -2
  81. package/src/duckdb/src/common/types/vector.cpp +101 -101
  82. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  83. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  84. package/src/duckdb/src/common/types.cpp +44 -33
  85. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  86. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  87. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  88. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  89. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
  90. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
  91. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +32 -36
  92. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
  93. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
  94. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +44 -44
  95. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
  96. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
  97. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
  98. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
  99. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
  100. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
  101. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +36 -37
  102. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
  103. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
  104. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
  105. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +97 -121
  106. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
  107. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  108. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
  109. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
  110. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
  111. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
  112. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
  113. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
  114. package/src/duckdb/src/core_functions/function_list.cpp +1 -0
  115. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  116. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
  117. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  118. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  119. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  120. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  121. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
  122. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
  123. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  124. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
  125. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
  126. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  127. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  128. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  129. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +4 -1
  130. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  131. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
  132. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  133. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  134. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  135. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  136. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  137. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  138. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  139. package/src/duckdb/src/execution/expression_executor.cpp +33 -28
  140. package/src/duckdb/src/execution/index/art/art.cpp +30 -32
  141. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
  142. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  143. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  144. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  145. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  146. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  147. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  148. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  149. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  150. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
  151. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
  152. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  153. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  154. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  155. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  156. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  157. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  158. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  159. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  160. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  161. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  162. package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +2 -0
  163. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  164. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  165. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  166. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  167. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
  168. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  169. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  170. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  171. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  172. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  173. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  174. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  175. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  176. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  177. package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
  178. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  179. package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
  180. package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
  181. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
  182. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  183. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  184. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  185. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  186. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  187. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  188. package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
  189. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  190. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  191. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
  192. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
  193. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  194. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  195. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  196. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  197. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  198. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  199. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  200. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
  201. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  202. package/src/duckdb/src/function/table/arrow.cpp +6 -6
  203. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  204. package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
  205. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  206. package/src/duckdb/src/function/table/glob.cpp +1 -1
  207. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  208. package/src/duckdb/src/function/table/range.cpp +4 -4
  209. package/src/duckdb/src/function/table/read_csv.cpp +15 -23
  210. package/src/duckdb/src/function/table/repeat.cpp +2 -2
  211. package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
  212. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  213. package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
  214. package/src/duckdb/src/function/table/table_scan.cpp +2 -2
  215. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  216. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  217. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -5
  218. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
  219. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +6 -0
  220. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  221. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
  222. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
  223. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +5 -0
  224. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  225. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  226. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  227. package/src/duckdb/src/include/duckdb/common/exception.hpp +5 -2
  228. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  229. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  230. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  231. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  232. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  233. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  234. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  235. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  236. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  237. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  238. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  239. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  240. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  241. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  242. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  243. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  244. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
  245. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  246. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  247. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  248. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  249. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
  250. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
  251. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
  252. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
  253. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
  254. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
  255. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
  256. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
  257. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
  258. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  259. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -3
  260. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  261. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  262. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  263. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  264. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +8 -29
  265. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
  266. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  267. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  268. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  269. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  270. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  271. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +3 -1
  272. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  273. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  274. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
  275. package/src/duckdb/src/include/duckdb/function/table_function.hpp +6 -6
  276. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  277. package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
  278. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  279. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  280. package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
  281. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  282. package/src/duckdb/src/include/duckdb/main/settings.hpp +9 -0
  283. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  284. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  285. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  286. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  287. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  288. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  289. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  290. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  291. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  292. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  293. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  294. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  295. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  296. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  297. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  298. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  299. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  300. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  301. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  302. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  303. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  304. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  305. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  306. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  307. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  308. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  309. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  310. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  311. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  312. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  313. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
  314. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  315. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  316. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  318. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  319. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  320. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +107 -91
  321. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
  322. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  323. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  324. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
  325. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  326. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  327. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  328. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  329. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  330. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  331. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  332. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  333. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  334. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  335. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  336. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  337. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  338. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  339. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  340. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  341. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  342. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  343. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  344. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
  345. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  346. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  347. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  348. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -2
  349. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  350. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  351. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  352. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  353. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  354. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  355. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  356. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  357. package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
  358. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  359. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  360. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  361. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  362. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  363. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  364. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  365. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  366. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  367. package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
  368. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  369. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  370. package/src/duckdb/src/main/capi/config-c.cpp +1 -1
  371. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  372. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  373. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  374. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  375. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  376. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  377. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  378. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  379. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  380. package/src/duckdb/src/main/client_context.cpp +3 -3
  381. package/src/duckdb/src/main/config.cpp +1 -0
  382. package/src/duckdb/src/main/database_manager.cpp +1 -1
  383. package/src/duckdb/src/main/error_manager.cpp +1 -1
  384. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  385. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  386. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  387. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  388. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  389. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  390. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  391. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  392. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  393. package/src/duckdb/src/main/relation.cpp +1 -1
  394. package/src/duckdb/src/main/settings/settings.cpp +22 -6
  395. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  396. package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
  397. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  398. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  399. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +4 -7
  400. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  401. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  402. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  403. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  404. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  405. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  406. package/src/duckdb/src/parallel/executor.cpp +1 -1
  407. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  408. package/src/duckdb/src/parser/column_definition.cpp +5 -8
  409. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  410. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  411. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  412. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  413. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  414. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  415. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  416. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  417. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  418. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  419. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  420. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  421. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  422. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  423. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  424. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  425. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  426. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  427. package/src/duckdb/src/parser/parser.cpp +4 -4
  428. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  429. package/src/duckdb/src/parser/query_node.cpp +7 -6
  430. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  431. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  432. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  433. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  434. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  435. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  436. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  437. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  438. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  439. package/src/duckdb/src/parser/tableref.cpp +12 -3
  440. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  441. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  442. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  443. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  444. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  445. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  446. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  447. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  448. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  449. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
  450. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  451. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  452. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  453. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  454. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
  455. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  456. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  457. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  458. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  459. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  460. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  461. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  462. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  463. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  464. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  465. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  466. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  467. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  468. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +3 -4
  469. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  470. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  471. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  472. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  473. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  474. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  475. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  476. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  477. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  478. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  479. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -22
  480. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  481. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  482. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  483. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  484. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  485. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  486. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  487. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  488. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  489. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  490. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  491. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  492. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  493. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  494. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  495. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  496. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  497. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  498. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  499. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  500. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  501. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  502. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
  503. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  504. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  505. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  506. package/src/duckdb/src/parser/transformer.cpp +46 -46
  507. package/src/duckdb/src/planner/bind_context.cpp +9 -10
  508. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
  509. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  510. package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +7 -2
  511. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  512. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  513. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
  514. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  515. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +13 -5
  516. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  517. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
  518. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +4 -2
  519. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +17 -7
  520. package/src/duckdb/src/planner/binder.cpp +1 -1
  521. package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
  522. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
  523. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  524. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  525. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  526. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  527. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  528. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  529. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  530. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  531. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  532. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  533. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  534. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  535. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  536. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  537. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  538. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  539. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  540. package/src/duckdb/src/planner/expression.cpp +15 -0
  541. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  542. package/src/duckdb/src/planner/expression_binder.cpp +3 -2
  543. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  544. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  545. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  546. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  547. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  548. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  549. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  550. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  551. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  552. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  553. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  554. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  555. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  556. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  557. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  558. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  559. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  560. package/src/duckdb/src/storage/data_table.cpp +8 -7
  561. package/src/duckdb/src/storage/index.cpp +1 -3
  562. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  563. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  564. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  565. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  566. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  567. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  568. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  569. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  570. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  571. package/src/duckdb/src/storage/table/list_column_data.cpp +8 -7
  572. package/src/duckdb/src/storage/table/row_group.cpp +4 -4
  573. package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
  574. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  575. package/src/duckdb/src/storage/wal_replay.cpp +5 -6
  576. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  577. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  578. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  579. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  580. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  581. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  582. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  583. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  584. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +13479 -13564
  585. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
  586. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
@@ -162,8 +162,8 @@ struct ArrowScalarBaseData {
162
162
 
163
163
  // append the main data
164
164
  append_data.main_buffer.resize(append_data.main_buffer.size() + sizeof(TGT) * size);
165
- auto data = (SRC *)format.data;
166
- auto result_data = (TGT *)append_data.main_buffer.data();
165
+ auto data = UnifiedVectorFormat::GetData<SRC>(format);
166
+ auto result_data = append_data.main_buffer.GetData<TGT>();
167
167
 
168
168
  for (idx_t i = from; i < to; i++) {
169
169
  auto source_idx = format.sel->get_index(i);
@@ -210,8 +210,8 @@ struct ArrowEnumData : public ArrowScalarBaseData<TGT> {
210
210
 
211
211
  // resize the offset buffer - the offset buffer holds the offsets into the child array
212
212
  append_data.main_buffer.resize(append_data.main_buffer.size() + sizeof(uint32_t) * (size + 1));
213
- auto data = (string_t *)FlatVector::GetData<string_t>(input);
214
- auto offset_data = (uint32_t *)append_data.main_buffer.data();
213
+ auto data = FlatVector::GetData<string_t>(input);
214
+ auto offset_data = append_data.main_buffer.GetData<uint32_t>();
215
215
  if (append_data.row_count == 0) {
216
216
  // first entry
217
217
  offset_data[0] = 0;
@@ -269,10 +269,10 @@ struct ArrowBoolData {
269
269
  // we initialize both the validity and the bit set to 1's
270
270
  ResizeValidity(append_data.validity, append_data.row_count + size);
271
271
  ResizeValidity(append_data.main_buffer, append_data.row_count + size);
272
- auto data = (bool *)format.data;
272
+ auto data = UnifiedVectorFormat::GetData<bool>(format);
273
273
 
274
- auto result_data = (uint8_t *)append_data.main_buffer.data();
275
- auto validity_data = (uint8_t *)append_data.validity.data();
274
+ auto result_data = append_data.main_buffer.GetData<uint8_t>();
275
+ auto validity_data = append_data.validity.GetData<uint8_t>();
276
276
  uint8_t current_bit;
277
277
  idx_t current_byte;
278
278
  GetBitPosition(append_data.row_count, current_byte, current_bit);
@@ -318,7 +318,7 @@ struct ArrowUUIDConverter {
318
318
 
319
319
  template <class SRC>
320
320
  static void WriteData(data_ptr_t target, SRC input) {
321
- UUID::ToString(input, (char *)target);
321
+ UUID::ToString(input, char_ptr_cast(target));
322
322
  }
323
323
  };
324
324
 
@@ -341,8 +341,8 @@ struct ArrowVarcharData {
341
341
 
342
342
  // resize the offset buffer - the offset buffer holds the offsets into the child array
343
343
  append_data.main_buffer.resize(append_data.main_buffer.size() + sizeof(BUFTYPE) * (size + 1));
344
- auto data = (SRC *)format.data;
345
- auto offset_data = (BUFTYPE *)append_data.main_buffer.data();
344
+ auto data = UnifiedVectorFormat::GetData<SRC>(format);
345
+ auto offset_data = append_data.main_buffer.GetData<BUFTYPE>();
346
346
  if (append_data.row_count == 0) {
347
347
  // first entry
348
348
  offset_data[0] = 0;
@@ -441,8 +441,8 @@ void AppendListOffsets(ArrowAppendData &append_data, UnifiedVectorFormat &format
441
441
  // resize the offset buffer - the offset buffer holds the offsets into the child array
442
442
  idx_t size = to - from;
443
443
  append_data.main_buffer.resize(append_data.main_buffer.size() + sizeof(uint32_t) * (size + 1));
444
- auto data = (list_entry_t *)format.data;
445
- auto offset_data = (uint32_t *)append_data.main_buffer.data();
444
+ auto data = UnifiedVectorFormat::GetData<list_entry_t>(format);
445
+ auto offset_data = append_data.main_buffer.GetData<uint32_t>();
446
446
  if (append_data.row_count == 0) {
447
447
  // first entry
448
448
  offset_data[0] = 0;
@@ -77,7 +77,7 @@ int ResultArrowArrayStreamWrapper::MyStreamGetSchema(struct ArrowArrayStream *st
77
77
  if (!stream->release) {
78
78
  return -1;
79
79
  }
80
- auto my_stream = (ResultArrowArrayStreamWrapper *)stream->private_data;
80
+ auto my_stream = reinterpret_cast<ResultArrowArrayStreamWrapper *>(stream->private_data);
81
81
  if (!my_stream->column_types.empty()) {
82
82
  ArrowConverter::ToArrowSchema(out, my_stream->column_types, my_stream->column_names,
83
83
  my_stream->timezone_config);
@@ -90,7 +90,7 @@ int ResultArrowArrayStreamWrapper::MyStreamGetSchema(struct ArrowArrayStream *st
90
90
  return -1;
91
91
  }
92
92
  if (result.type == QueryResultType::STREAM_RESULT) {
93
- auto &stream_result = (StreamQueryResult &)result;
93
+ auto &stream_result = result.Cast<StreamQueryResult>();
94
94
  if (!stream_result.IsOpen()) {
95
95
  my_stream->last_error = PreservedError("Query Stream is closed");
96
96
  return -1;
@@ -108,14 +108,14 @@ int ResultArrowArrayStreamWrapper::MyStreamGetNext(struct ArrowArrayStream *stre
108
108
  if (!stream->release) {
109
109
  return -1;
110
110
  }
111
- auto my_stream = (ResultArrowArrayStreamWrapper *)stream->private_data;
111
+ auto my_stream = reinterpret_cast<ResultArrowArrayStreamWrapper *>(stream->private_data);
112
112
  auto &result = *my_stream->result;
113
113
  if (result.HasError()) {
114
114
  my_stream->last_error = result.GetErrorObject();
115
115
  return -1;
116
116
  }
117
117
  if (result.type == QueryResultType::STREAM_RESULT) {
118
- auto &stream_result = (StreamQueryResult &)result;
118
+ auto &stream_result = result.Cast<StreamQueryResult>();
119
119
  if (!stream_result.IsOpen()) {
120
120
  // Nothing to output
121
121
  out->release = nullptr;
@@ -145,7 +145,7 @@ void ResultArrowArrayStreamWrapper::MyStreamRelease(struct ArrowArrayStream *str
145
145
  return;
146
146
  }
147
147
  stream->release = nullptr;
148
- delete (ResultArrowArrayStreamWrapper *)stream->private_data;
148
+ delete reinterpret_cast<ResultArrowArrayStreamWrapper *>(stream->private_data);
149
149
  }
150
150
 
151
151
  const char *ResultArrowArrayStreamWrapper::MyStreamGetLastError(struct ArrowArrayStream *stream) {
@@ -153,7 +153,7 @@ const char *ResultArrowArrayStreamWrapper::MyStreamGetLastError(struct ArrowArra
153
153
  return "stream was released";
154
154
  }
155
155
  D_ASSERT(stream->private_data);
156
- auto my_stream = (ResultArrowArrayStreamWrapper *)stream->private_data;
156
+ auto my_stream = reinterpret_cast<ResultArrowArrayStreamWrapper *>(stream->private_data);
157
157
  return my_stream->last_error.Message().c_str();
158
158
  }
159
159
 
@@ -175,7 +175,7 @@ ResultArrowArrayStreamWrapper::ResultArrowArrayStreamWrapper(unique_ptr<QueryRes
175
175
 
176
176
  bool ArrowUtil::TryFetchNext(QueryResult &result, unique_ptr<DataChunk> &chunk, PreservedError &error) {
177
177
  if (result.type == QueryResultType::STREAM_RESULT) {
178
- auto &stream_result = (StreamQueryResult &)result;
178
+ auto &stream_result = result.Cast<StreamQueryResult>();
179
179
  if (!stream_result.IsOpen()) {
180
180
  return true;
181
181
  }
@@ -9,7 +9,7 @@ hash_t Checksum(uint64_t x) {
9
9
 
10
10
  uint64_t Checksum(uint8_t *buffer, size_t size) {
11
11
  uint64_t result = 5381;
12
- uint64_t *ptr = (uint64_t *)buffer;
12
+ uint64_t *ptr = reinterpret_cast<uint64_t *>(buffer);
13
13
  size_t i;
14
14
  // for efficiency, we first checksum uint64_t values
15
15
  for (i = 0; i < size / 8; i++) {
@@ -115,28 +115,28 @@ void CompressedFile::Close() {
115
115
  }
116
116
 
117
117
  int64_t CompressedFileSystem::Read(FileHandle &handle, void *buffer, int64_t nr_bytes) {
118
- auto &compressed_file = (CompressedFile &)handle;
118
+ auto &compressed_file = handle.Cast<CompressedFile>();
119
119
  return compressed_file.ReadData(buffer, nr_bytes);
120
120
  }
121
121
 
122
122
  int64_t CompressedFileSystem::Write(FileHandle &handle, void *buffer, int64_t nr_bytes) {
123
- auto &compressed_file = (CompressedFile &)handle;
124
- return compressed_file.WriteData((data_ptr_t)buffer, nr_bytes);
123
+ auto &compressed_file = handle.Cast<CompressedFile>();
124
+ return compressed_file.WriteData(data_ptr_cast(buffer), nr_bytes);
125
125
  }
126
126
 
127
127
  void CompressedFileSystem::Reset(FileHandle &handle) {
128
- auto &compressed_file = (CompressedFile &)handle;
128
+ auto &compressed_file = handle.Cast<CompressedFile>();
129
129
  compressed_file.child_handle->Reset();
130
130
  compressed_file.Initialize(compressed_file.write);
131
131
  }
132
132
 
133
133
  int64_t CompressedFileSystem::GetFileSize(FileHandle &handle) {
134
- auto &compressed_file = (CompressedFile &)handle;
134
+ auto &compressed_file = handle.Cast<CompressedFile>();
135
135
  return compressed_file.child_handle->GetFileSize();
136
136
  }
137
137
 
138
138
  bool CompressedFileSystem::OnDiskFile(FileHandle &handle) {
139
- auto &compressed_file = (CompressedFile &)handle;
139
+ auto &compressed_file = handle.Cast<CompressedFile>();
140
140
  return compressed_file.child_handle->OnDiskFile();
141
141
  }
142
142
 
@@ -30,7 +30,7 @@ static void ByteReverse(unsigned char *buf, unsigned longs) {
30
30
  uint32_t t;
31
31
  do {
32
32
  t = (uint32_t)((unsigned)buf[3] << 8 | buf[2]) << 16 | ((unsigned)buf[1] << 8 | buf[0]);
33
- *(uint32_t *)buf = t;
33
+ *reinterpret_cast<uint32_t *>(buf) = t;
34
34
  buf += 4;
35
35
  } while (--longs);
36
36
  }
@@ -174,7 +174,7 @@ void MD5Context::MD5Update(const_data_ptr_t input, idx_t len) {
174
174
  }
175
175
  memcpy(p, input, t);
176
176
  ByteReverse(in, 16);
177
- MD5Transform(buf, (uint32_t *)in);
177
+ MD5Transform(buf, reinterpret_cast<uint32_t *>(in));
178
178
  input += t;
179
179
  len -= t;
180
180
  }
@@ -184,7 +184,7 @@ void MD5Context::MD5Update(const_data_ptr_t input, idx_t len) {
184
184
  while (len >= 64) {
185
185
  memcpy(in, input, 64);
186
186
  ByteReverse(in, 16);
187
- MD5Transform(buf, (uint32_t *)in);
187
+ MD5Transform(buf, reinterpret_cast<uint32_t *>(in));
188
188
  input += 64;
189
189
  len -= 64;
190
190
  }
@@ -217,7 +217,7 @@ void MD5Context::Finish(data_ptr_t out_digest) {
217
217
  /* Two lots of padding: Pad the first block to 64 bytes */
218
218
  memset(p, 0, count);
219
219
  ByteReverse(in, 16);
220
- MD5Transform(buf, (uint32_t *)in);
220
+ MD5Transform(buf, reinterpret_cast<uint32_t *>(in));
221
221
 
222
222
  /* Now fill the next block with 56 bytes */
223
223
  memset(in, 0, 56);
@@ -228,11 +228,11 @@ void MD5Context::Finish(data_ptr_t out_digest) {
228
228
  ByteReverse(in, 14);
229
229
 
230
230
  /* Append length in bits and transform */
231
- ((uint32_t *)in)[14] = bits[0];
232
- ((uint32_t *)in)[15] = bits[1];
231
+ (reinterpret_cast<uint32_t *>(in))[14] = bits[0];
232
+ (reinterpret_cast<uint32_t *>(in))[15] = bits[1];
233
233
 
234
- MD5Transform(buf, (uint32_t *)in);
235
- ByteReverse((unsigned char *)buf, 4);
234
+ MD5Transform(buf, reinterpret_cast<uint32_t *>(in));
235
+ ByteReverse(reinterpret_cast<unsigned char *>(buf), 4);
236
236
  memcpy(out_digest, buf, 16);
237
237
  }
238
238
 
@@ -260,7 +260,7 @@ string MD5Context::FinishHex() {
260
260
  }
261
261
 
262
262
  void MD5Context::Add(const char *data) {
263
- MD5Update((const_data_ptr_t)data, strlen(data));
263
+ MD5Update(const_data_ptr_cast(data), strlen(data));
264
264
  }
265
265
 
266
266
  } // namespace duckdb
@@ -73,8 +73,11 @@ string Exception::ConstructMessageRecursive(const string &msg, std::vector<Excep
73
73
  parameter_count++;
74
74
  }
75
75
  if (parameter_count != values.size()) {
76
- throw InternalException("Expected %d parameters, received %d", parameter_count, values.size());
76
+ throw InternalException("Primary exception: %s\nSecondary exception in ConstructMessageRecursive: Expected %d "
77
+ "parameters, received %d",
78
+ msg.c_str(), parameter_count, values.size());
77
79
  }
80
+
78
81
  #endif
79
82
  return ExceptionFormatValue::Format(msg, values);
80
83
  }
@@ -68,22 +68,27 @@ ExceptionFormatValue ExceptionFormatValue::CreateFormatValue(hugeint_t value) {
68
68
  }
69
69
 
70
70
  string ExceptionFormatValue::Format(const string &msg, std::vector<ExceptionFormatValue> &values) {
71
- std::vector<duckdb_fmt::basic_format_arg<duckdb_fmt::printf_context>> format_args;
72
- for (auto &val : values) {
73
- switch (val.type) {
74
- case ExceptionFormatValueType::FORMAT_VALUE_TYPE_DOUBLE:
75
- format_args.push_back(duckdb_fmt::internal::make_arg<duckdb_fmt::printf_context>(val.dbl_val));
76
- break;
77
- case ExceptionFormatValueType::FORMAT_VALUE_TYPE_INTEGER:
78
- format_args.push_back(duckdb_fmt::internal::make_arg<duckdb_fmt::printf_context>(val.int_val));
79
- break;
80
- case ExceptionFormatValueType::FORMAT_VALUE_TYPE_STRING:
81
- format_args.push_back(duckdb_fmt::internal::make_arg<duckdb_fmt::printf_context>(val.str_val));
82
- break;
71
+ try {
72
+ std::vector<duckdb_fmt::basic_format_arg<duckdb_fmt::printf_context>> format_args;
73
+ for (auto &val : values) {
74
+ switch (val.type) {
75
+ case ExceptionFormatValueType::FORMAT_VALUE_TYPE_DOUBLE:
76
+ format_args.push_back(duckdb_fmt::internal::make_arg<duckdb_fmt::printf_context>(val.dbl_val));
77
+ break;
78
+ case ExceptionFormatValueType::FORMAT_VALUE_TYPE_INTEGER:
79
+ format_args.push_back(duckdb_fmt::internal::make_arg<duckdb_fmt::printf_context>(val.int_val));
80
+ break;
81
+ case ExceptionFormatValueType::FORMAT_VALUE_TYPE_STRING:
82
+ format_args.push_back(duckdb_fmt::internal::make_arg<duckdb_fmt::printf_context>(val.str_val));
83
+ break;
84
+ }
83
85
  }
86
+ return duckdb_fmt::vsprintf(msg, duckdb_fmt::basic_format_args<duckdb_fmt::printf_context>(
87
+ format_args.data(), static_cast<int>(format_args.size())));
88
+ } catch (std::exception &ex) {
89
+ throw InternalException(std::string("Primary exception: ") + msg +
90
+ "\nSecondary exception in ExceptionFormatValue: " + ex.what());
84
91
  }
85
- return duckdb_fmt::vsprintf(msg, duckdb_fmt::basic_format_args<duckdb_fmt::printf_context>(
86
- format_args.data(), static_cast<int>(format_args.size())));
87
92
  }
88
93
 
89
94
  } // namespace duckdb
@@ -29,7 +29,7 @@ template <>
29
29
  void FieldWriter::Write(const string &val) {
30
30
  Write<uint32_t>((uint32_t)val.size());
31
31
  if (!val.empty()) {
32
- WriteData((const_data_ptr_t)val.c_str(), val.size());
32
+ WriteData(const_data_ptr_cast(val.c_str()), val.size());
33
33
  }
34
34
  }
35
35
 
@@ -114,9 +114,22 @@ string FileSystem::GetEnvVariable(const string &env) {
114
114
  return WindowsUtil::UnicodeToUTF8(res_w);
115
115
  }
116
116
 
117
+ static bool StartsWithSingleBackslash(const string &path) {
118
+ if (path.size() < 2) {
119
+ return false;
120
+ }
121
+ if (path[0] != '/' && path[0] != '\\') {
122
+ return false;
123
+ }
124
+ if (path[1] == '/' || path[1] == '\\') {
125
+ return false;
126
+ }
127
+ return true;
128
+ }
129
+
117
130
  bool FileSystem::IsPathAbsolute(const string &path) {
118
131
  // 1) A single backslash or forward-slash
119
- if (PathMatched(path, "\\") || PathMatched(path, "/")) {
132
+ if (StartsWithSingleBackslash(path)) {
120
133
  return true;
121
134
  }
122
135
  // 2) A disk designator with a backslash (e.g., C:\ or C:/)
@@ -131,7 +144,7 @@ bool FileSystem::IsPathAbsolute(const string &path) {
131
144
  string FileSystem::NormalizeAbsolutePath(const string &path) {
132
145
  D_ASSERT(IsPathAbsolute(path));
133
146
  auto result = StringUtil::Lower(FileSystem::ConvertSeparators(path));
134
- if (PathMatched(result, "\\")) {
147
+ if (StartsWithSingleBackslash(result)) {
135
148
  // Path starts with a single backslash or forward slash
136
149
  // prepend drive letter
137
150
  return GetWorkingDirectory().substr(0, 2) + result;
@@ -4,27 +4,32 @@
4
4
  #include "fsst.h"
5
5
 
6
6
  namespace duckdb {
7
- string_t FSSTPrimitives::DecompressValue(void *duckdb_fsst_decoder, Vector &result, unsigned char *compressed_string,
7
+
8
+ string_t FSSTPrimitives::DecompressValue(void *duckdb_fsst_decoder, Vector &result, const char *compressed_string,
8
9
  idx_t compressed_string_len) {
9
10
  D_ASSERT(result.GetVectorType() == VectorType::FLAT_VECTOR);
10
11
  unsigned char decompress_buffer[StringUncompressed::STRING_BLOCK_LIMIT + 1];
12
+ auto fsst_decoder = reinterpret_cast<duckdb_fsst_decoder_t *>(duckdb_fsst_decoder);
13
+ auto compressed_string_ptr = (unsigned char *)compressed_string; // NOLINT
11
14
  auto decompressed_string_size =
12
- duckdb_fsst_decompress((duckdb_fsst_decoder_t *)duckdb_fsst_decoder, compressed_string_len, compressed_string,
15
+ duckdb_fsst_decompress(fsst_decoder, compressed_string_len, compressed_string_ptr,
13
16
  StringUncompressed::STRING_BLOCK_LIMIT + 1, &decompress_buffer[0]);
14
17
  D_ASSERT(decompressed_string_size <= StringUncompressed::STRING_BLOCK_LIMIT);
15
18
 
16
- return StringVector::AddStringOrBlob(result, (const char *)decompress_buffer, decompressed_string_size);
19
+ return StringVector::AddStringOrBlob(result, const_char_ptr_cast(decompress_buffer), decompressed_string_size);
17
20
  }
18
21
 
19
- Value FSSTPrimitives::DecompressValue(void *duckdb_fsst_decoder, unsigned char *compressed_string,
22
+ Value FSSTPrimitives::DecompressValue(void *duckdb_fsst_decoder, const char *compressed_string,
20
23
  idx_t compressed_string_len) {
21
24
  unsigned char decompress_buffer[StringUncompressed::STRING_BLOCK_LIMIT + 1];
25
+ auto compressed_string_ptr = (unsigned char *)compressed_string; // NOLINT
26
+ auto fsst_decoder = reinterpret_cast<duckdb_fsst_decoder_t *>(duckdb_fsst_decoder);
22
27
  auto decompressed_string_size =
23
- duckdb_fsst_decompress((duckdb_fsst_decoder_t *)duckdb_fsst_decoder, compressed_string_len, compressed_string,
28
+ duckdb_fsst_decompress(fsst_decoder, compressed_string_len, compressed_string_ptr,
24
29
  StringUncompressed::STRING_BLOCK_LIMIT + 1, &decompress_buffer[0]);
25
30
  D_ASSERT(decompressed_string_size <= StringUncompressed::STRING_BLOCK_LIMIT);
26
31
 
27
- return Value(string((char *)decompress_buffer, decompressed_string_size));
32
+ return Value(string(char_ptr_cast(decompress_buffer), decompressed_string_size));
28
33
  }
29
34
 
30
35
  } // namespace duckdb
@@ -183,19 +183,19 @@ bool MiniZStreamWrapper::Read(StreamData &sd) {
183
183
  }
184
184
 
185
185
  // actually decompress
186
- mz_stream_ptr->next_in = (data_ptr_t)sd.in_buff_start;
186
+ mz_stream_ptr->next_in = sd.in_buff_start;
187
187
  D_ASSERT(sd.in_buff_end - sd.in_buff_start < NumericLimits<int32_t>::Maximum());
188
188
  mz_stream_ptr->avail_in = (uint32_t)(sd.in_buff_end - sd.in_buff_start);
189
- mz_stream_ptr->next_out = (data_ptr_t)sd.out_buff_end;
189
+ mz_stream_ptr->next_out = data_ptr_cast(sd.out_buff_end);
190
190
  mz_stream_ptr->avail_out = (uint32_t)((sd.out_buff.get() + sd.out_buf_size) - sd.out_buff_end);
191
191
  auto ret = duckdb_miniz::mz_inflate(mz_stream_ptr, duckdb_miniz::MZ_NO_FLUSH);
192
192
  if (ret != duckdb_miniz::MZ_OK && ret != duckdb_miniz::MZ_STREAM_END) {
193
193
  throw IOException("Failed to decode gzip stream: %s", duckdb_miniz::mz_error(ret));
194
194
  }
195
195
  // update pointers following inflate()
196
- sd.in_buff_start = (data_ptr_t)mz_stream_ptr->next_in;
196
+ sd.in_buff_start = (data_ptr_t)mz_stream_ptr->next_in; // NOLINT
197
197
  sd.in_buff_end = sd.in_buff_start + mz_stream_ptr->avail_in;
198
- sd.out_buff_end = (data_ptr_t)mz_stream_ptr->next_out;
198
+ sd.out_buff_end = data_ptr_cast(mz_stream_ptr->next_out);
199
199
  D_ASSERT(sd.out_buff_end + mz_stream_ptr->avail_out == sd.out_buff.get() + sd.out_buf_size);
200
200
 
201
201
  // if stream ended, deallocate inflator
@@ -221,14 +221,14 @@ bool MiniZStreamWrapper::Read(StreamData &sd) {
221
221
  void MiniZStreamWrapper::Write(CompressedFile &file, StreamData &sd, data_ptr_t uncompressed_data,
222
222
  int64_t uncompressed_size) {
223
223
  // update the src and the total size
224
- crc = duckdb_miniz::mz_crc32(crc, (const unsigned char *)uncompressed_data, uncompressed_size);
224
+ crc = duckdb_miniz::mz_crc32(crc, reinterpret_cast<const unsigned char *>(uncompressed_data), uncompressed_size);
225
225
  total_size += uncompressed_size;
226
226
 
227
227
  auto remaining = uncompressed_size;
228
228
  while (remaining > 0) {
229
229
  idx_t output_remaining = (sd.out_buff.get() + sd.out_buf_size) - sd.out_buff_start;
230
230
 
231
- mz_stream_ptr->next_in = (const unsigned char *)uncompressed_data;
231
+ mz_stream_ptr->next_in = reinterpret_cast<const unsigned char *>(uncompressed_data);
232
232
  mz_stream_ptr->avail_in = remaining;
233
233
  mz_stream_ptr->next_out = sd.out_buff_start;
234
234
  mz_stream_ptr->avail_out = output_remaining;
@@ -360,7 +360,7 @@ string GZipFileSystem::UncompressGZIPString(const string &in) {
360
360
  }
361
361
 
362
362
  auto bytes_remaining = in.size() - (body_ptr - in.data());
363
- mz_stream_ptr->next_in = (unsigned char *)body_ptr;
363
+ mz_stream_ptr->next_in = const_uchar_ptr_cast(body_ptr);
364
364
  mz_stream_ptr->avail_in = bytes_remaining;
365
365
 
366
366
  unsigned char decompress_buffer[BUFSIZ];
@@ -373,7 +373,7 @@ string GZipFileSystem::UncompressGZIPString(const string &in) {
373
373
  if (status != duckdb_miniz::MZ_STREAM_END && status != duckdb_miniz::MZ_OK) {
374
374
  throw IOException("Failed to uncompress");
375
375
  }
376
- decompressed.append((char *)decompress_buffer, mz_stream_ptr->total_out - decompressed.size());
376
+ decompressed.append(char_ptr_cast(decompress_buffer), mz_stream_ptr->total_out - decompressed.size());
377
377
  }
378
378
  duckdb_miniz::mz_inflateEnd(mz_stream_ptr);
379
379
  if (decompressed.empty()) {
@@ -183,7 +183,7 @@ static void TemplatedGetHivePartitionValues(Vector &input, vector<HivePartitionK
183
183
  input.ToUnifiedFormat(count, format);
184
184
 
185
185
  const auto &sel = *format.sel;
186
- const auto data = (T *)format.data;
186
+ const auto data = UnifiedVectorFormat::GetData<T>(format);
187
187
  const auto &validity = format.validity;
188
188
 
189
189
  const auto &type = input.GetType();
@@ -242,7 +242,7 @@ unique_ptr<FileHandle> LocalFileSystem::OpenFile(const string &path_p, uint8_t f
242
242
  }
243
243
 
244
244
  void LocalFileSystem::SetFilePointer(FileHandle &handle, idx_t location) {
245
- int fd = ((UnixFileHandle &)handle).fd;
245
+ int fd = handle.Cast<UnixFileHandle>().fd;
246
246
  off_t offset = lseek(fd, location, SEEK_SET);
247
247
  if (offset == (off_t)-1) {
248
248
  throw IOException("Could not seek to location %lld for file \"%s\": %s", location, handle.path,
@@ -251,7 +251,7 @@ void LocalFileSystem::SetFilePointer(FileHandle &handle, idx_t location) {
251
251
  }
252
252
 
253
253
  idx_t LocalFileSystem::GetFilePointer(FileHandle &handle) {
254
- int fd = ((UnixFileHandle &)handle).fd;
254
+ int fd = handle.Cast<UnixFileHandle>().fd;
255
255
  off_t position = lseek(fd, 0, SEEK_CUR);
256
256
  if (position == (off_t)-1) {
257
257
  throw IOException("Could not get file position file \"%s\": %s", handle.path, strerror(errno));
@@ -260,7 +260,7 @@ idx_t LocalFileSystem::GetFilePointer(FileHandle &handle) {
260
260
  }
261
261
 
262
262
  void LocalFileSystem::Read(FileHandle &handle, void *buffer, int64_t nr_bytes, idx_t location) {
263
- int fd = ((UnixFileHandle &)handle).fd;
263
+ int fd = handle.Cast<UnixFileHandle>().fd;
264
264
  int64_t bytes_read = pread(fd, buffer, nr_bytes, location);
265
265
  if (bytes_read == -1) {
266
266
  throw IOException("Could not read from file \"%s\": %s", handle.path, strerror(errno));
@@ -272,7 +272,7 @@ void LocalFileSystem::Read(FileHandle &handle, void *buffer, int64_t nr_bytes, i
272
272
  }
273
273
 
274
274
  int64_t LocalFileSystem::Read(FileHandle &handle, void *buffer, int64_t nr_bytes) {
275
- int fd = ((UnixFileHandle &)handle).fd;
275
+ int fd = handle.Cast<UnixFileHandle>().fd;
276
276
  int64_t bytes_read = read(fd, buffer, nr_bytes);
277
277
  if (bytes_read == -1) {
278
278
  throw IOException("Could not read from file \"%s\": %s", handle.path, strerror(errno));
@@ -281,7 +281,7 @@ int64_t LocalFileSystem::Read(FileHandle &handle, void *buffer, int64_t nr_bytes
281
281
  }
282
282
 
283
283
  void LocalFileSystem::Write(FileHandle &handle, void *buffer, int64_t nr_bytes, idx_t location) {
284
- int fd = ((UnixFileHandle &)handle).fd;
284
+ int fd = handle.Cast<UnixFileHandle>().fd;
285
285
  int64_t bytes_written = pwrite(fd, buffer, nr_bytes, location);
286
286
  if (bytes_written == -1) {
287
287
  throw IOException("Could not write file \"%s\": %s", handle.path, strerror(errno));
@@ -293,7 +293,7 @@ void LocalFileSystem::Write(FileHandle &handle, void *buffer, int64_t nr_bytes,
293
293
  }
294
294
 
295
295
  int64_t LocalFileSystem::Write(FileHandle &handle, void *buffer, int64_t nr_bytes) {
296
- int fd = ((UnixFileHandle &)handle).fd;
296
+ int fd = handle.Cast<UnixFileHandle>().fd;
297
297
  int64_t bytes_written = write(fd, buffer, nr_bytes);
298
298
  if (bytes_written == -1) {
299
299
  throw IOException("Could not write file \"%s\": %s", handle.path, strerror(errno));
@@ -302,7 +302,7 @@ int64_t LocalFileSystem::Write(FileHandle &handle, void *buffer, int64_t nr_byte
302
302
  }
303
303
 
304
304
  int64_t LocalFileSystem::GetFileSize(FileHandle &handle) {
305
- int fd = ((UnixFileHandle &)handle).fd;
305
+ int fd = handle.Cast<UnixFileHandle>().fd;
306
306
  struct stat s;
307
307
  if (fstat(fd, &s) == -1) {
308
308
  return -1;
@@ -311,7 +311,7 @@ int64_t LocalFileSystem::GetFileSize(FileHandle &handle) {
311
311
  }
312
312
 
313
313
  time_t LocalFileSystem::GetLastModifiedTime(FileHandle &handle) {
314
- int fd = ((UnixFileHandle &)handle).fd;
314
+ int fd = handle.Cast<UnixFileHandle>().fd;
315
315
  struct stat s;
316
316
  if (fstat(fd, &s) == -1) {
317
317
  return -1;
@@ -320,12 +320,12 @@ time_t LocalFileSystem::GetLastModifiedTime(FileHandle &handle) {
320
320
  }
321
321
 
322
322
  FileType LocalFileSystem::GetFileType(FileHandle &handle) {
323
- int fd = ((UnixFileHandle &)handle).fd;
323
+ int fd = handle.Cast<UnixFileHandle>().fd;
324
324
  return GetFileTypeInternal(fd);
325
325
  }
326
326
 
327
327
  void LocalFileSystem::Truncate(FileHandle &handle, int64_t new_size) {
328
- int fd = ((UnixFileHandle &)handle).fd;
328
+ int fd = handle.Cast<UnixFileHandle>().fd;
329
329
  if (ftruncate(fd, new_size) != 0) {
330
330
  throw IOException("Could not truncate file \"%s\": %s", handle.path, strerror(errno));
331
331
  }
@@ -444,7 +444,7 @@ bool LocalFileSystem::ListFiles(const string &directory, const std::function<voi
444
444
  }
445
445
 
446
446
  void LocalFileSystem::FileSync(FileHandle &handle) {
447
- int fd = ((UnixFileHandle &)handle).fd;
447
+ int fd = handle.Cast<UnixFileHandle>().fd;
448
448
  if (fsync(fd) != 0) {
449
449
  throw FatalException("fsync failed!");
450
450
  }
@@ -1460,7 +1460,7 @@ bool TryCastToBlob::Operation(string_t input, string_t &result, Vector &result_v
1460
1460
  }
1461
1461
 
1462
1462
  result = StringVector::EmptyString(result_vector, result_size);
1463
- Blob::ToBlob(input, (data_ptr_t)result.GetDataWriteable());
1463
+ Blob::ToBlob(input, data_ptr_cast(result.GetDataWriteable()));
1464
1464
  result.Finalize();
1465
1465
  return true;
1466
1466
  }
@@ -33,12 +33,12 @@ void PipeFileSystem::Reset(FileHandle &handle) {
33
33
  }
34
34
 
35
35
  int64_t PipeFileSystem::Read(FileHandle &handle, void *buffer, int64_t nr_bytes) {
36
- auto &pipe = (PipeFile &)handle;
36
+ auto &pipe = handle.Cast<PipeFile>();
37
37
  return pipe.ReadChunk(buffer, nr_bytes);
38
38
  }
39
39
 
40
40
  int64_t PipeFileSystem::Write(FileHandle &handle, void *buffer, int64_t nr_bytes) {
41
- auto &pipe = (PipeFile &)handle;
41
+ auto &pipe = handle.Cast<PipeFile>();
42
42
  return pipe.WriteChunk(buffer, nr_bytes);
43
43
  }
44
44
 
@@ -219,8 +219,8 @@ void RadixPartitionedTupleData::RepartitionFinalizeStates(PartitionedTupleData &
219
219
  idx_t finished_partition_idx) const {
220
220
  D_ASSERT(old_partitioned_data.GetType() == PartitionedTupleDataType::RADIX &&
221
221
  new_partitioned_data.GetType() == PartitionedTupleDataType::RADIX);
222
- const auto &old_radix_partitions = (RadixPartitionedTupleData &)old_partitioned_data;
223
- const auto &new_radix_partitions = (RadixPartitionedTupleData &)new_partitioned_data;
222
+ const auto &old_radix_partitions = old_partitioned_data.Cast<RadixPartitionedTupleData>();
223
+ const auto &new_radix_partitions = new_partitioned_data.Cast<RadixPartitionedTupleData>();
224
224
  const auto old_radix_bits = old_radix_partitions.GetRadixBits();
225
225
  const auto new_radix_bits = new_radix_partitions.GetRadixBits();
226
226
  D_ASSERT(new_radix_bits > old_radix_bits);
@@ -29,7 +29,7 @@ static void HeapGatherStringVector(Vector &v, const idx_t vcount, const Selectio
29
29
  }
30
30
  auto len = Load<uint32_t>(key_locations[i]);
31
31
  key_locations[i] += sizeof(uint32_t);
32
- target[col_idx] = StringVector::AddStringOrBlob(v, string_t((const char *)key_locations[i], len));
32
+ target[col_idx] = StringVector::AddStringOrBlob(v, string_t(const_char_ptr_cast(key_locations[i]), len));
33
33
  key_locations[i] += len;
34
34
  }
35
35
  }
@@ -8,7 +8,7 @@ using ValidityBytes = TemplatedValidityMask<uint8_t>;
8
8
 
9
9
  static void ComputeStringEntrySizes(UnifiedVectorFormat &vdata, idx_t entry_sizes[], const idx_t ser_count,
10
10
  const SelectionVector &sel, const idx_t offset) {
11
- auto strings = (string_t *)vdata.data;
11
+ auto strings = UnifiedVectorFormat::GetData<string_t>(vdata);
12
12
  for (idx_t i = 0; i < ser_count; i++) {
13
13
  auto idx = sel.get_index(i);
14
14
  auto str_idx = vdata.sel->get_index(idx + offset);
@@ -116,14 +116,14 @@ void RowOperations::ComputeEntrySizes(Vector &v, idx_t entry_sizes[], idx_t vcou
116
116
  template <class T>
117
117
  static void TemplatedHeapScatter(UnifiedVectorFormat &vdata, const SelectionVector &sel, idx_t count, idx_t col_idx,
118
118
  data_ptr_t *key_locations, data_ptr_t *validitymask_locations, idx_t offset) {
119
- auto source = (T *)vdata.data;
119
+ auto source = UnifiedVectorFormat::GetData<T>(vdata);
120
120
  if (!validitymask_locations) {
121
121
  for (idx_t i = 0; i < count; i++) {
122
122
  auto idx = sel.get_index(i);
123
123
  auto source_idx = vdata.sel->get_index(idx + offset);
124
124
 
125
125
  auto target = (T *)key_locations[i];
126
- Store<T>(source[source_idx], (data_ptr_t)target);
126
+ Store<T>(source[source_idx], data_ptr_cast(target));
127
127
  key_locations[i] += sizeof(T);
128
128
  }
129
129
  } else {
@@ -136,7 +136,7 @@ static void TemplatedHeapScatter(UnifiedVectorFormat &vdata, const SelectionVect
136
136
  auto source_idx = vdata.sel->get_index(idx + offset);
137
137
 
138
138
  auto target = (T *)key_locations[i];
139
- Store<T>(source[source_idx], (data_ptr_t)target);
139
+ Store<T>(source[source_idx], data_ptr_cast(target));
140
140
  key_locations[i] += sizeof(T);
141
141
 
142
142
  // set the validitymask
@@ -152,7 +152,7 @@ static void HeapScatterStringVector(Vector &v, idx_t vcount, const SelectionVect
152
152
  UnifiedVectorFormat vdata;
153
153
  v.ToUnifiedFormat(vcount, vdata);
154
154
 
155
- auto strings = (string_t *)vdata.data;
155
+ auto strings = UnifiedVectorFormat::GetData<string_t>(vdata);
156
156
  if (!validitymask_locations) {
157
157
  for (idx_t i = 0; i < ser_count; i++) {
158
158
  auto idx = sel.get_index(i);
@@ -64,7 +64,7 @@ static void TemplatedMatchType(UnifiedVectorFormat &col, Vector &rows, Selection
64
64
  idx_t idx_in_entry;
65
65
  ValidityBytes::GetEntryIndex(col_no, entry_idx, idx_in_entry);
66
66
 
67
- auto data = (T *)col.data;
67
+ auto data = UnifiedVectorFormat::GetData<T>(col);
68
68
  auto ptrs = FlatVector::GetData<data_ptr_t>(rows);
69
69
  idx_t match_count = 0;
70
70
  if (!col.validity.AllValid()) {