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
@@ -17,8 +17,14 @@ static data_ptr_t AllocatePrimitiveData(Allocator &allocator, uint16_t capacity)
17
17
  }
18
18
 
19
19
  template <class T>
20
- static T *GetPrimitiveData(const ListSegment *segment) {
21
- return (T *)(((char *)segment) + sizeof(ListSegment) + segment->capacity * sizeof(bool));
20
+ static T *GetPrimitiveData(ListSegment *segment) {
21
+ return reinterpret_cast<T *>(data_ptr_cast(segment) + sizeof(ListSegment) + segment->capacity * sizeof(bool));
22
+ }
23
+
24
+ template <class T>
25
+ static const T *GetPrimitiveData(const ListSegment *segment) {
26
+ return reinterpret_cast<const T *>(const_data_ptr_cast(segment) + sizeof(ListSegment) +
27
+ segment->capacity * sizeof(bool));
22
28
  }
23
29
 
24
30
  //===--------------------------------------------------------------------===//
@@ -32,13 +38,24 @@ static data_ptr_t AllocateListData(Allocator &allocator, uint16_t capacity) {
32
38
  return allocator.AllocateData(GetAllocationSizeList(capacity));
33
39
  }
34
40
 
35
- static uint64_t *GetListLengthData(const ListSegment *segment) {
36
- return (uint64_t *)(((char *)segment) + sizeof(ListSegment) + segment->capacity * sizeof(bool));
41
+ static uint64_t *GetListLengthData(ListSegment *segment) {
42
+ return reinterpret_cast<uint64_t *>(data_ptr_cast(segment) + sizeof(ListSegment) +
43
+ segment->capacity * sizeof(bool));
44
+ }
45
+
46
+ static const uint64_t *GetListLengthData(const ListSegment *segment) {
47
+ return reinterpret_cast<const uint64_t *>(const_data_ptr_cast(segment) + sizeof(ListSegment) +
48
+ segment->capacity * sizeof(bool));
49
+ }
50
+
51
+ static const LinkedList *GetListChildData(const ListSegment *segment) {
52
+ return reinterpret_cast<const LinkedList *>(const_data_ptr_cast(segment) + sizeof(ListSegment) +
53
+ segment->capacity * (sizeof(bool) + sizeof(uint64_t)));
37
54
  }
38
55
 
39
- static LinkedList *GetListChildData(const ListSegment *segment) {
40
- return (LinkedList *)(((char *)segment) + sizeof(ListSegment) +
41
- segment->capacity * (sizeof(bool) + sizeof(uint64_t)));
56
+ static LinkedList *GetListChildData(ListSegment *segment) {
57
+ return reinterpret_cast<LinkedList *>(data_ptr_cast(segment) + sizeof(ListSegment) +
58
+ segment->capacity * (sizeof(bool) + sizeof(uint64_t)));
42
59
  }
43
60
 
44
61
  //===--------------------------------------------------------------------===//
@@ -52,12 +69,22 @@ static data_ptr_t AllocateStructData(Allocator &allocator, uint16_t capacity, id
52
69
  return allocator.AllocateData(GetAllocationSizeStruct(capacity, child_count));
53
70
  }
54
71
 
55
- static ListSegment **GetStructData(const ListSegment *segment) {
56
- return (ListSegment **)(((char *)segment) + sizeof(ListSegment) + segment->capacity * sizeof(bool));
72
+ static ListSegment **GetStructData(ListSegment *segment) {
73
+ return reinterpret_cast<ListSegment **>(data_ptr_cast(segment) + +sizeof(ListSegment) +
74
+ segment->capacity * sizeof(bool));
57
75
  }
58
76
 
59
- static bool *GetNullMask(const ListSegment *segment) {
60
- return (bool *)(((char *)segment) + sizeof(ListSegment));
77
+ static const ListSegment *const *GetStructData(const ListSegment *segment) {
78
+ return reinterpret_cast<const ListSegment *const *>(const_data_ptr_cast(segment) + sizeof(ListSegment) +
79
+ segment->capacity * sizeof(bool));
80
+ }
81
+
82
+ static bool *GetNullMask(ListSegment *segment) {
83
+ return reinterpret_cast<bool *>(data_ptr_cast(segment) + sizeof(ListSegment));
84
+ }
85
+
86
+ static const bool *GetNullMask(const ListSegment *segment) {
87
+ return reinterpret_cast<const bool *>(const_data_ptr_cast(segment) + sizeof(ListSegment));
61
88
  }
62
89
 
63
90
  static uint16_t GetCapacityForNewSegment(uint16_t capacity) {
@@ -96,12 +123,12 @@ static ListSegment *CreatePrimitiveSegment(const ListSegmentFunctions &, Allocat
96
123
  template <class T>
97
124
  void DestroyPrimitiveSegment(const ListSegmentFunctions &, ListSegment *segment, Allocator &allocator) {
98
125
  D_ASSERT(segment);
99
- allocator.FreeData((data_ptr_t)segment, GetAllocationSize<T>(segment->capacity));
126
+ allocator.FreeData(data_ptr_cast(segment), GetAllocationSize<T>(segment->capacity));
100
127
  }
101
128
 
102
129
  static ListSegment *CreateListSegment(const ListSegmentFunctions &, Allocator &allocator, uint16_t capacity) {
103
130
  // allocate data and set the header
104
- auto segment = (ListSegment *)AllocateListData(allocator, capacity);
131
+ auto segment = reinterpret_cast<ListSegment *>(AllocateListData(allocator, capacity));
105
132
  segment->capacity = capacity;
106
133
  segment->count = 0;
107
134
  segment->next = nullptr;
@@ -109,24 +136,25 @@ static ListSegment *CreateListSegment(const ListSegmentFunctions &, Allocator &a
109
136
  // create an empty linked list for the child vector
110
137
  auto linked_child_list = GetListChildData(segment);
111
138
  LinkedList linked_list(0, nullptr, nullptr);
112
- Store<LinkedList>(linked_list, (data_ptr_t)linked_child_list);
139
+ Store<LinkedList>(linked_list, data_ptr_cast(linked_child_list));
113
140
 
114
141
  return segment;
115
142
  }
116
143
 
117
144
  void DestroyListSegment(const ListSegmentFunctions &functions, ListSegment *segment, Allocator &allocator) {
118
145
  // destroy the child list
119
- auto linked_child_list = Load<LinkedList>((data_ptr_t)GetListChildData(segment));
146
+ auto linked_child_list = Load<LinkedList>(data_ptr_cast(GetListChildData(segment)));
120
147
  DestroyLinkedList(functions.child_functions[0], allocator, linked_child_list);
121
148
 
122
149
  // destroy the list segment itself
123
- allocator.FreeData((data_ptr_t)segment, GetAllocationSizeList(segment->capacity));
150
+ allocator.FreeData(data_ptr_cast(segment), GetAllocationSizeList(segment->capacity));
124
151
  }
125
152
 
126
153
  static ListSegment *CreateStructSegment(const ListSegmentFunctions &functions, Allocator &allocator,
127
154
  uint16_t capacity) {
128
155
  // allocate data and set header
129
- auto segment = (ListSegment *)AllocateStructData(allocator, capacity, functions.child_functions.size());
156
+ auto segment =
157
+ reinterpret_cast<ListSegment *>(AllocateStructData(allocator, capacity, functions.child_functions.size()));
130
158
  segment->capacity = capacity;
131
159
  segment->count = 0;
132
160
  segment->next = nullptr;
@@ -136,7 +164,7 @@ static ListSegment *CreateStructSegment(const ListSegmentFunctions &functions, A
136
164
  for (idx_t i = 0; i < functions.child_functions.size(); i++) {
137
165
  auto child_function = functions.child_functions[i];
138
166
  auto child_segment = child_function.create_segment(child_function, allocator, capacity);
139
- Store<ListSegment *>(child_segment, (data_ptr_t)(child_segments + i));
167
+ Store<ListSegment *>(child_segment, data_ptr_cast(child_segments + i));
140
168
  }
141
169
 
142
170
  return segment;
@@ -147,12 +175,12 @@ void DestroyStructSegment(const ListSegmentFunctions &functions, ListSegment *se
147
175
  auto child_segments = GetStructData(segment);
148
176
  for (idx_t i = 0; i < functions.child_functions.size(); i++) {
149
177
  auto child_function = functions.child_functions[i];
150
- auto child_segment = Load<ListSegment *>((data_ptr_t)(child_segments + i));
178
+ auto child_segment = Load<ListSegment *>(data_ptr_cast(child_segments + i));
151
179
  child_function.destroy(child_function, child_segment, allocator);
152
180
  }
153
181
 
154
182
  // destroy the struct segment itself
155
- allocator.FreeData((data_ptr_t)segment,
183
+ allocator.FreeData(data_ptr_cast(segment),
156
184
  GetAllocationSizeStruct(segment->capacity, functions.child_functions.size()));
157
185
  }
158
186
 
@@ -200,7 +228,7 @@ static void WriteDataToPrimitiveSegment(const ListSegmentFunctions &functions, A
200
228
  // write value
201
229
  if (!is_null) {
202
230
  auto data = GetPrimitiveData<T>(segment);
203
- Store<T>(((T *)input_data)[entry_idx], (data_ptr_t)(data + segment->count));
231
+ Store<T>(((T *)input_data)[entry_idx], data_ptr_cast(data + segment->count));
204
232
  }
205
233
  }
206
234
 
@@ -208,7 +236,7 @@ static void WriteDataToVarcharSegment(const ListSegmentFunctions &functions, All
208
236
  Vector &input, idx_t &entry_idx, idx_t &count) {
209
237
 
210
238
  // get the vector data and the source index of the entry that we want to write
211
- auto input_data = FlatVector::GetData(input);
239
+ auto input_data = FlatVector::GetData<string_t>(input);
212
240
 
213
241
  // write null validity
214
242
  auto null_mask = GetNullMask(segment);
@@ -222,19 +250,19 @@ static void WriteDataToVarcharSegment(const ListSegmentFunctions &functions, All
222
250
  // get the string
223
251
  string_t str_t;
224
252
  if (!is_null) {
225
- str_t = ((string_t *)input_data)[entry_idx];
253
+ str_t = input_data[entry_idx];
226
254
  str_length = str_t.GetSize();
227
255
  }
228
256
 
229
257
  // we can reconstruct the offset from the length
230
- Store<uint64_t>(str_length, (data_ptr_t)(str_length_data + segment->count));
258
+ Store<uint64_t>(str_length, data_ptr_cast(str_length_data + segment->count));
231
259
 
232
260
  if (is_null) {
233
261
  return;
234
262
  }
235
263
 
236
264
  // write the characters to the linked list of child segments
237
- auto child_segments = Load<LinkedList>((data_ptr_t)GetListChildData(segment));
265
+ auto child_segments = Load<LinkedList>(data_ptr_cast(GetListChildData(segment)));
238
266
  for (char &c : str_t.GetString()) {
239
267
  auto child_segment = GetSegment(functions.child_functions.back(), allocator, child_segments);
240
268
  auto data = GetPrimitiveData<char>(child_segment);
@@ -244,14 +272,14 @@ static void WriteDataToVarcharSegment(const ListSegmentFunctions &functions, All
244
272
  }
245
273
 
246
274
  // store the updated linked list
247
- Store<LinkedList>(child_segments, (data_ptr_t)GetListChildData(segment));
275
+ Store<LinkedList>(child_segments, data_ptr_cast(GetListChildData(segment)));
248
276
  }
249
277
 
250
278
  static void WriteDataToListSegment(const ListSegmentFunctions &functions, Allocator &allocator, ListSegment *segment,
251
279
  Vector &input, idx_t &entry_idx, idx_t &count) {
252
280
 
253
281
  // get the vector data and the source index of the entry that we want to write
254
- auto input_data = FlatVector::GetData(input);
282
+ auto input_data = FlatVector::GetData<list_entry_t>(input);
255
283
 
256
284
  // write null validity
257
285
  auto null_mask = GetNullMask(segment);
@@ -264,7 +292,7 @@ static void WriteDataToListSegment(const ListSegmentFunctions &functions, Alloca
264
292
 
265
293
  if (!is_null) {
266
294
  // get list entry information
267
- auto list_entries = (list_entry_t *)input_data;
295
+ auto list_entries = input_data;
268
296
  const auto &list_entry = list_entries[entry_idx];
269
297
  list_length = list_entry.length;
270
298
 
@@ -273,7 +301,7 @@ static void WriteDataToListSegment(const ListSegmentFunctions &functions, Alloca
273
301
  auto &child_vector = ListVector::GetEntry(input);
274
302
 
275
303
  // loop over the child vector entries and recurse on them
276
- auto child_segments = Load<LinkedList>((data_ptr_t)GetListChildData(segment));
304
+ auto child_segments = Load<LinkedList>(data_ptr_cast(GetListChildData(segment)));
277
305
  D_ASSERT(functions.child_functions.size() == 1);
278
306
  for (idx_t child_idx = 0; child_idx < list_entry.length; child_idx++) {
279
307
  auto source_idx_child = list_entry.offset + child_idx;
@@ -281,10 +309,10 @@ static void WriteDataToListSegment(const ListSegmentFunctions &functions, Alloca
281
309
  lists_size);
282
310
  }
283
311
  // store the updated linked list
284
- Store<LinkedList>(child_segments, (data_ptr_t)GetListChildData(segment));
312
+ Store<LinkedList>(child_segments, data_ptr_cast(GetListChildData(segment)));
285
313
  }
286
314
 
287
- Store<uint64_t>(list_length, (data_ptr_t)(list_length_data + segment->count));
315
+ Store<uint64_t>(list_length, data_ptr_cast(list_length_data + segment->count));
288
316
  }
289
317
 
290
318
  static void WriteDataToStructSegment(const ListSegmentFunctions &functions, Allocator &allocator, ListSegment *segment,
@@ -302,7 +330,7 @@ static void WriteDataToStructSegment(const ListSegmentFunctions &functions, Allo
302
330
 
303
331
  // write the data of each of the children of the struct
304
332
  for (idx_t child_count = 0; child_count < children.size(); child_count++) {
305
- auto child_list_segment = Load<ListSegment *>((data_ptr_t)(child_list + child_count));
333
+ auto child_list_segment = Load<ListSegment *>(data_ptr_cast(child_list + child_count));
306
334
  auto &child_function = functions.child_functions[child_count];
307
335
  child_function.write_data(child_function, allocator, child_list_segment, *children[child_count], entry_idx,
308
336
  count);
@@ -339,13 +367,13 @@ static void ReadDataFromPrimitiveSegment(const ListSegmentFunctions &, const Lis
339
367
  }
340
368
  }
341
369
 
342
- auto aggr_vector_data = FlatVector::GetData(result);
370
+ auto aggr_vector_data = FlatVector::GetData<T>(result);
343
371
 
344
372
  // load values
345
373
  for (idx_t i = 0; i < segment->count; i++) {
346
374
  if (aggr_vector_validity.RowIsValid(total_count + i)) {
347
375
  auto data = GetPrimitiveData<T>(segment);
348
- ((T *)aggr_vector_data)[total_count + i] = Load<T>((data_ptr_t)(data + i));
376
+ aggr_vector_data[total_count + i] = Load<T>(const_data_ptr_cast(data + i));
349
377
  }
350
378
  }
351
379
  }
@@ -365,7 +393,7 @@ static void ReadDataFromVarcharSegment(const ListSegmentFunctions &, const ListS
365
393
 
366
394
  // append all the child chars to one string
367
395
  string str = "";
368
- auto linked_child_list = Load<LinkedList>((data_ptr_t)GetListChildData(segment));
396
+ auto linked_child_list = Load<LinkedList>(const_data_ptr_cast(GetListChildData(segment)));
369
397
  while (linked_child_list.first_segment) {
370
398
  auto child_segment = linked_child_list.first_segment;
371
399
  auto data = GetPrimitiveData<char>(child_segment);
@@ -375,17 +403,17 @@ static void ReadDataFromVarcharSegment(const ListSegmentFunctions &, const ListS
375
403
  linked_child_list.last_segment = nullptr;
376
404
 
377
405
  // use length and (reconstructed) offset to get the correct substrings
378
- auto aggr_vector_data = FlatVector::GetData(result);
406
+ auto aggr_vector_data = FlatVector::GetData<string_t>(result);
379
407
  auto str_length_data = GetListLengthData(segment);
380
408
 
381
409
  // get the substrings and write them to the result vector
382
410
  idx_t offset = 0;
383
411
  for (idx_t i = 0; i < segment->count; i++) {
384
412
  if (!null_mask[i]) {
385
- auto str_length = Load<uint64_t>((data_ptr_t)(str_length_data + i));
413
+ auto str_length = Load<uint64_t>(const_data_ptr_cast(str_length_data + i));
386
414
  auto substr = str.substr(offset, str_length);
387
415
  auto str_t = StringVector::AddStringOrBlob(result, substr);
388
- ((string_t *)aggr_vector_data)[total_count + i] = str_t;
416
+ aggr_vector_data[total_count + i] = str_t;
389
417
  offset += str_length;
390
418
  }
391
419
  }
@@ -416,14 +444,14 @@ static void ReadDataFromListSegment(const ListSegmentFunctions &functions, const
416
444
  // set length and offsets
417
445
  auto list_length_data = GetListLengthData(segment);
418
446
  for (idx_t i = 0; i < segment->count; i++) {
419
- auto list_length = Load<uint64_t>((data_ptr_t)(list_length_data + i));
447
+ auto list_length = Load<uint64_t>(const_data_ptr_cast(list_length_data + i));
420
448
  list_vector_data[total_count + i].length = list_length;
421
449
  list_vector_data[total_count + i].offset = offset;
422
450
  offset += list_length;
423
451
  }
424
452
 
425
453
  auto &child_vector = ListVector::GetEntry(result);
426
- auto linked_child_list = Load<LinkedList>((data_ptr_t)GetListChildData(segment));
454
+ auto linked_child_list = Load<LinkedList>(const_data_ptr_cast(GetListChildData(segment)));
427
455
  ListVector::Reserve(result, offset);
428
456
 
429
457
  // recurse into the linked list of child values
@@ -451,7 +479,7 @@ static void ReadDataFromStructSegment(const ListSegmentFunctions &functions, con
451
479
  D_ASSERT(children.size() == functions.child_functions.size());
452
480
  auto struct_children = GetStructData(segment);
453
481
  for (idx_t child_count = 0; child_count < children.size(); child_count++) {
454
- auto struct_children_segment = Load<ListSegment *>((data_ptr_t)(struct_children + child_count));
482
+ auto struct_children_segment = Load<ListSegment *>(const_data_ptr_cast(struct_children + child_count));
455
483
  auto &child_function = functions.child_functions[child_count];
456
484
  child_function.read_data(child_function, struct_children_segment, *children[child_count], total_count);
457
485
  }
@@ -487,25 +515,25 @@ static ListSegment *CopyDataFromListSegment(const ListSegmentFunctions &function
487
515
  Allocator &allocator) {
488
516
 
489
517
  // create an empty linked list for the child vector of target
490
- auto source_linked_child_list = Load<LinkedList>((data_ptr_t)GetListChildData(source));
518
+ auto source_linked_child_list = Load<LinkedList>(const_data_ptr_cast(GetListChildData(source)));
491
519
 
492
520
  // create the segment
493
- auto target = (ListSegment *)AllocateListData(allocator, source->capacity);
521
+ auto target = reinterpret_cast<ListSegment *>(AllocateListData(allocator, source->capacity));
494
522
  memcpy(target, source,
495
523
  sizeof(ListSegment) + source->capacity * (sizeof(bool) + sizeof(uint64_t)) + sizeof(LinkedList));
496
524
  target->next = nullptr;
497
525
 
498
526
  auto target_linked_list = GetListChildData(target);
499
527
  LinkedList linked_list(source_linked_child_list.total_capacity, nullptr, nullptr);
500
- Store<LinkedList>(linked_list, (data_ptr_t)target_linked_list);
528
+ Store<LinkedList>(linked_list, data_ptr_cast(target_linked_list));
501
529
 
502
530
  // recurse to copy the linked child list
503
- auto target_linked_child_list = Load<LinkedList>((data_ptr_t)GetListChildData(target));
531
+ auto target_linked_child_list = Load<LinkedList>(data_ptr_cast(GetListChildData(target)));
504
532
  D_ASSERT(functions.child_functions.size() == 1);
505
533
  functions.child_functions[0].CopyLinkedList(source_linked_child_list, target_linked_child_list, allocator);
506
534
 
507
535
  // store the updated linked list
508
- Store<LinkedList>(target_linked_child_list, (data_ptr_t)GetListChildData(target));
536
+ Store<LinkedList>(target_linked_child_list, data_ptr_cast(GetListChildData(target)));
509
537
  return target;
510
538
  }
511
539
 
@@ -513,7 +541,7 @@ static ListSegment *CopyDataFromStructSegment(const ListSegmentFunctions &functi
513
541
  Allocator &allocator) {
514
542
 
515
543
  auto source_child_count = functions.child_functions.size();
516
- auto target = (ListSegment *)AllocateStructData(allocator, source->capacity, source_child_count);
544
+ auto target = reinterpret_cast<ListSegment *>(AllocateStructData(allocator, source->capacity, source_child_count));
517
545
  memcpy(target, source,
518
546
  sizeof(ListSegment) + source->capacity * sizeof(bool) + source_child_count * sizeof(ListSegment *));
519
547
  target->next = nullptr;
@@ -524,9 +552,9 @@ static ListSegment *CopyDataFromStructSegment(const ListSegmentFunctions &functi
524
552
 
525
553
  for (idx_t i = 0; i < functions.child_functions.size(); i++) {
526
554
  auto child_function = functions.child_functions[i];
527
- auto source_child_segment = Load<ListSegment *>((data_ptr_t)(source_child_segments + i));
555
+ auto source_child_segment = Load<ListSegment *>(const_data_ptr_cast(source_child_segments + i));
528
556
  auto target_child_segment = child_function.copy_data(child_function, source_child_segment, allocator);
529
- Store<ListSegment *>(target_child_segment, (data_ptr_t)(target_child_segments + i));
557
+ Store<ListSegment *>(target_child_segment, data_ptr_cast(target_child_segments + i));
530
558
  }
531
559
  return target;
532
560
  }
@@ -19,7 +19,7 @@ PartitionedTupleData::PartitionedTupleData(const PartitionedTupleData &other)
19
19
  unique_ptr<PartitionedTupleData> PartitionedTupleData::CreateShared() {
20
20
  switch (type) {
21
21
  case PartitionedTupleDataType::RADIX:
22
- return make_uniq<RadixPartitionedTupleData>((RadixPartitionedTupleData &)*this);
22
+ return make_uniq<RadixPartitionedTupleData>(Cast<RadixPartitionedTupleData>());
23
23
  default:
24
24
  throw NotImplementedException("CreateShared for this type of PartitionedTupleData");
25
25
  }
@@ -101,16 +101,17 @@ void RowDataCollectionScanner::AlignHeapBlocks(RowDataCollection &swizzled_block
101
101
  make_uniq<RowDataBlock>(buffer_manager, MaxValue<idx_t>(total_size, (idx_t)Storage::BLOCK_SIZE), 1));
102
102
  auto new_heap_handle = buffer_manager.Pin(swizzled_string_heap.blocks.back()->block);
103
103
  auto new_heap_ptr = new_heap_handle.Ptr();
104
+ for (auto &ptr_and_size : ptrs_and_sizes) {
105
+ memcpy(new_heap_ptr, ptr_and_size.first, ptr_and_size.second);
106
+ new_heap_ptr += ptr_and_size.second;
107
+ }
108
+ new_heap_ptr = new_heap_handle.Ptr();
104
109
  if (swizzled_string_heap.keep_pinned) {
105
110
  // Since the heap blocks are pinned, we can unswizzle the data again.
106
111
  swizzled_string_heap.pinned_blocks.emplace_back(std::move(new_heap_handle));
107
112
  RowOperations::UnswizzlePointers(layout, base_row_ptr, new_heap_ptr, data_block->count);
108
113
  RowOperations::UnswizzleHeapPointer(layout, base_row_ptr, new_heap_ptr, data_block->count);
109
114
  }
110
- for (auto &ptr_and_size : ptrs_and_sizes) {
111
- memcpy(new_heap_ptr, ptr_and_size.first, ptr_and_size.second);
112
- new_heap_ptr += ptr_and_size.second;
113
- }
114
115
  }
115
116
  }
116
117
 
@@ -241,8 +241,10 @@ void TupleDataAllocator::InitializeChunkStateInternal(TupleDataPinState &pin_sta
241
241
  lock_guard<mutex> guard(part->lock);
242
242
  const auto old_base_heap_ptr = part->base_heap_ptr;
243
243
  if (old_base_heap_ptr != new_base_heap_ptr) {
244
- Vector old_heap_ptrs(Value::POINTER((uintptr_t)old_base_heap_ptr + part->heap_block_offset));
245
- Vector new_heap_ptrs(Value::POINTER((uintptr_t)new_base_heap_ptr + part->heap_block_offset));
244
+ Vector old_heap_ptrs(
245
+ Value::POINTER(CastPointerToValue(old_base_heap_ptr + part->heap_block_offset)));
246
+ Vector new_heap_ptrs(
247
+ Value::POINTER(CastPointerToValue(new_base_heap_ptr + part->heap_block_offset)));
246
248
  RecomputeHeapPointers(old_heap_ptrs, *ConstantVector::ZeroSelectionVector(), row_locations,
247
249
  new_heap_ptrs, offset, next, layout, 0);
248
250
  part->base_heap_ptr = new_base_heap_ptr;
@@ -298,7 +300,7 @@ void TupleDataAllocator::RecomputeHeapPointers(Vector &old_heap_ptrs, const Sele
298
300
 
299
301
  UnifiedVectorFormat new_heap_data;
300
302
  new_heap_ptrs.ToUnifiedFormat(offset + count, new_heap_data);
301
- const auto new_heap_locations = (data_ptr_t *)new_heap_data.data;
303
+ const auto new_heap_locations = UnifiedVectorFormat::GetData<data_ptr_t>(new_heap_data);
302
304
  const auto new_heap_sel = *new_heap_data.sel;
303
305
 
304
306
  for (idx_t col_idx = 0; col_idx < layout.ColumnCount(); col_idx++) {
@@ -30,7 +30,7 @@ inline void TupleDataValueStore(const string_t &source, const data_ptr_t &row_lo
30
30
  Store<string_t>(source, row_location + offset_in_row);
31
31
  } else {
32
32
  memcpy(heap_location, source.GetData(), source.GetSize());
33
- Store<string_t>(string_t((const char *)heap_location, source.GetSize()), row_location + offset_in_row);
33
+ Store<string_t>(string_t(const_char_ptr_cast(heap_location), source.GetSize()), row_location + offset_in_row);
34
34
  heap_location += source.GetSize();
35
35
  }
36
36
  }
@@ -57,13 +57,24 @@ static inline T TupleDataWithinListValueLoad(const data_ptr_t &location, data_pt
57
57
  template <>
58
58
  inline string_t TupleDataWithinListValueLoad(const data_ptr_t &location, data_ptr_t &heap_location) {
59
59
  const auto size = Load<uint32_t>(location);
60
- string_t result((const char *)heap_location, size);
60
+ string_t result(const_char_ptr_cast(heap_location), size);
61
61
  heap_location += size;
62
62
  return result;
63
63
  }
64
64
 
65
+ static void ResetCombinedListData(vector<TupleDataVectorFormat> &vector_data) {
66
+ for (auto &vd : vector_data) {
67
+ vd.combined_list_data = nullptr;
68
+ ResetCombinedListData(vd.child_formats);
69
+ }
70
+ }
71
+
65
72
  void TupleDataCollection::ComputeHeapSizes(TupleDataChunkState &chunk_state, const DataChunk &new_chunk,
66
73
  const SelectionVector &append_sel, const idx_t append_count) {
74
+ #ifdef DEBUG
75
+ ResetCombinedListData(chunk_state.vector_data);
76
+ #endif
77
+
67
78
  auto heap_sizes = FlatVector::GetData<idx_t>(chunk_state.heap_sizes);
68
79
  std::fill_n(heap_sizes, new_chunk.size(), 0);
69
80
 
@@ -96,7 +107,7 @@ void TupleDataCollection::ComputeHeapSizes(Vector &heap_sizes_v, const Vector &s
96
107
  switch (type) {
97
108
  case PhysicalType::VARCHAR: {
98
109
  // Only non-inlined strings are stored in the heap
99
- const auto source_data = (string_t *)source_vector_data.data;
110
+ const auto source_data = UnifiedVectorFormat::GetData<string_t>(source_vector_data);
100
111
  for (idx_t i = 0; i < append_count; i++) {
101
112
  const auto source_idx = source_sel.get_index(append_sel.get_index(i));
102
113
  if (source_validity.RowIsValid(source_idx)) {
@@ -175,7 +186,7 @@ void TupleDataCollection::ComputeFixedWithinListHeapSizes(Vector &heap_sizes_v,
175
186
  const UnifiedVectorFormat &list_data) {
176
187
  // List data
177
188
  const auto list_sel = *list_data.sel;
178
- const auto list_entries = (list_entry_t *)list_data.data;
189
+ const auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
179
190
  const auto &list_validity = list_data.validity;
180
191
 
181
192
  // Target
@@ -206,12 +217,12 @@ void TupleDataCollection::StringWithinListComputeHeapSizes(Vector &heap_sizes_v,
206
217
  // Source
207
218
  const auto &source_data = source_format.data;
208
219
  const auto source_sel = *source_data.sel;
209
- const auto data = (string_t *)source_data.data;
220
+ const auto data = UnifiedVectorFormat::GetData<string_t>(source_data);
210
221
  const auto &source_validity = source_data.validity;
211
222
 
212
223
  // List data
213
224
  const auto list_sel = *list_data.sel;
214
- const auto list_entries = (list_entry_t *)list_data.data;
225
+ const auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
215
226
  const auto &list_validity = list_data.validity;
216
227
 
217
228
  // Target
@@ -249,7 +260,7 @@ void TupleDataCollection::StructWithinListComputeHeapSizes(Vector &heap_sizes_v,
249
260
  const UnifiedVectorFormat &list_data) {
250
261
  // List data
251
262
  const auto list_sel = *list_data.sel;
252
- const auto list_entries = (list_entry_t *)list_data.data;
263
+ const auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
253
264
  const auto &list_validity = list_data.validity;
254
265
 
255
266
  // Target
@@ -293,7 +304,12 @@ static void ApplySliceRecursive(const Vector &source_v, TupleDataVectorFormat &s
293
304
  for (idx_t struct_col_idx = 0; struct_col_idx < struct_sources.size(); struct_col_idx++) {
294
305
  auto &struct_source = *struct_sources[struct_col_idx];
295
306
  auto &struct_format = source_format.child_formats[struct_col_idx];
296
- struct_format.combined_list_data = make_uniq<CombinedListData>();
307
+ #ifdef DEBUG
308
+ D_ASSERT(!struct_format.combined_list_data);
309
+ #endif
310
+ if (!struct_format.combined_list_data) {
311
+ struct_format.combined_list_data = make_uniq<CombinedListData>();
312
+ }
297
313
  ApplySliceRecursive(struct_source, struct_format, *source_format.data.sel, count);
298
314
  }
299
315
  }
@@ -305,17 +321,18 @@ void TupleDataCollection::ListWithinListComputeHeapSizes(Vector &heap_sizes_v, c
305
321
  const UnifiedVectorFormat &list_data) {
306
322
  // List data (of the list Vector that "source_v" is in)
307
323
  const auto list_sel = *list_data.sel;
308
- const auto list_entries = (list_entry_t *)list_data.data;
324
+ const auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
309
325
  const auto &list_validity = list_data.validity;
310
326
 
311
- // Child list
327
+ // Child list ("source_v")
312
328
  const auto &child_list_data = source_format.data;
313
329
  const auto child_list_sel = *child_list_data.sel;
314
- const auto child_list_entries = (list_entry_t *)child_list_data.data;
330
+ const auto child_list_entries = UnifiedVectorFormat::GetData<list_entry_t>(child_list_data);
315
331
  const auto &child_list_validity = child_list_data.validity;
316
332
 
317
- // Figure out actual child list size (differs from ListVector::GetListSize if dict/const vector)
318
- idx_t child_list_child_count = ListVector::GetListSize(source_v);
333
+ // Figure out actual child list size (can differ from ListVector::GetListSize if dict/const vector),
334
+ // and we cannot use ConstantVector::ZeroSelectionVector because it may need to be longer than STANDARD_VECTOR_SIZE
335
+ idx_t sum_of_sizes = 0;
319
336
  for (idx_t i = 0; i < append_count; i++) {
320
337
  const auto list_idx = list_sel.get_index(append_sel.get_index(i));
321
338
  if (!list_validity.RowIsValid(list_idx)) {
@@ -324,15 +341,33 @@ void TupleDataCollection::ListWithinListComputeHeapSizes(Vector &heap_sizes_v, c
324
341
  const auto &list_entry = list_entries[list_idx];
325
342
  const auto &list_offset = list_entry.offset;
326
343
  const auto &list_length = list_entry.length;
327
- child_list_child_count = MaxValue<idx_t>(child_list_child_count, list_offset + list_length);
344
+
345
+ for (idx_t child_i = 0; child_i < list_length; child_i++) {
346
+ const auto child_list_idx = child_list_sel.get_index(list_offset + child_i);
347
+ if (!child_list_validity.RowIsValid(child_list_idx)) {
348
+ continue;
349
+ }
350
+
351
+ const auto &child_list_entry = child_list_entries[child_list_idx];
352
+ const auto &child_list_length = child_list_entry.length;
353
+
354
+ sum_of_sizes += child_list_length;
355
+ }
328
356
  }
357
+ const auto child_list_child_count = MaxValue<idx_t>(sum_of_sizes, ListVector::GetListSize(source_v));
329
358
 
330
359
  // Target
331
360
  auto heap_sizes = FlatVector::GetData<idx_t>(heap_sizes_v);
332
361
 
333
362
  // Construct combined list entries and a selection vector for the child list child
334
363
  auto &child_format = source_format.child_formats[0];
335
- child_format.combined_list_data = make_uniq<CombinedListData>();
364
+ #ifdef DEBUG
365
+ // In debug mode this should be deleted by ResetCombinedListData
366
+ D_ASSERT(!child_format.combined_list_data);
367
+ #endif
368
+ if (!child_format.combined_list_data) {
369
+ child_format.combined_list_data = make_uniq<CombinedListData>();
370
+ }
336
371
  auto &combined_list_data = *child_format.combined_list_data;
337
372
  auto &combined_list_entries = combined_list_data.combined_list_entries;
338
373
  SelectionVector combined_sel(child_list_child_count);
@@ -365,7 +400,7 @@ void TupleDataCollection::ListWithinListComputeHeapSizes(Vector &heap_sizes_v, c
365
400
  const auto &child_list_offset = child_list_entry.offset;
366
401
  const auto &child_list_length = child_list_entry.length;
367
402
 
368
- // Add this child's list entry's to the combined selection vector
403
+ // Add this child's list entries to the combined selection vector
369
404
  for (idx_t child_value_i = 0; child_value_i < child_list_length; child_value_i++) {
370
405
  auto idx = combined_list_offset + child_list_size + child_value_i;
371
406
  auto loc = child_list_offset + child_value_i;
@@ -384,7 +419,7 @@ void TupleDataCollection::ListWithinListComputeHeapSizes(Vector &heap_sizes_v, c
384
419
  // Create a combined child_list_data to be used as list_data in the recursion
385
420
  auto &combined_child_list_data = combined_list_data.combined_data;
386
421
  combined_child_list_data.sel = list_data.sel;
387
- combined_child_list_data.data = (data_ptr_t)combined_list_entries;
422
+ combined_child_list_data.data = data_ptr_cast(combined_list_entries);
388
423
  combined_child_list_data.validity = list_data.validity;
389
424
 
390
425
  // Combine the selection vectors
@@ -439,7 +474,7 @@ static void TupleDataTemplatedScatter(const Vector &source, const TupleDataVecto
439
474
  // Source
440
475
  const auto &source_data = source_format.data;
441
476
  const auto source_sel = *source_data.sel;
442
- const auto data = (T *)source_data.data;
477
+ const auto data = UnifiedVectorFormat::GetData<T>(source_data);
443
478
  const auto &validity = source_data.validity;
444
479
 
445
480
  // Target
@@ -535,7 +570,7 @@ static void TupleDataListScatter(const Vector &source, const TupleDataVectorForm
535
570
  // Source
536
571
  const auto &source_data = source_format.data;
537
572
  const auto source_sel = *source_data.sel;
538
- const auto data = (list_entry_t *)source_data.data;
573
+ const auto data = UnifiedVectorFormat::GetData<list_entry_t>(source_data);
539
574
  const auto &validity = source_data.validity;
540
575
 
541
576
  // Target
@@ -582,12 +617,12 @@ static void TupleDataTemplatedWithinListScatter(const Vector &source, const Tupl
582
617
  // Source
583
618
  const auto &source_data = source_format.data;
584
619
  const auto source_sel = *source_data.sel;
585
- const auto data = (T *)source_data.data;
620
+ const auto data = UnifiedVectorFormat::GetData<T>(source_data);
586
621
  const auto &source_validity = source_data.validity;
587
622
 
588
623
  // List data
589
624
  const auto list_sel = *list_data.sel;
590
- const auto list_entries = (list_entry_t *)list_data.data;
625
+ const auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
591
626
  const auto &list_validity = list_data.validity;
592
627
 
593
628
  // Target
@@ -641,7 +676,7 @@ static void TupleDataStructWithinListScatter(const Vector &source, const TupleDa
641
676
 
642
677
  // List data
643
678
  const auto list_sel = *list_data.sel;
644
- const auto list_entries = (list_entry_t *)list_data.data;
679
+ const auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
645
680
  const auto &list_validity = list_data.validity;
646
681
 
647
682
  // Target
@@ -693,13 +728,13 @@ static void TupleDataListWithinListScatter(const Vector &child_list, const Tuple
693
728
  const vector<TupleDataScatterFunction> &child_functions) {
694
729
  // List data (of the list Vector that "child_list" is in)
695
730
  const auto list_sel = *list_data.sel;
696
- const auto list_entries = (list_entry_t *)list_data.data;
731
+ const auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
697
732
  const auto &list_validity = list_data.validity;
698
733
 
699
734
  // Child list
700
735
  const auto &child_list_data = child_list_format.data;
701
736
  const auto child_list_sel = *child_list_data.sel;
702
- const auto child_list_entries = (list_entry_t *)child_list_data.data;
737
+ const auto child_list_entries = UnifiedVectorFormat::GetData<list_entry_t>(child_list_data);
703
738
  const auto &child_list_validity = child_list_data.validity;
704
739
 
705
740
  // Target
@@ -51,7 +51,7 @@ string_t StringHeap::AddBlob(const string_t &data) {
51
51
 
52
52
  string_t StringHeap::EmptyString(idx_t len) {
53
53
  D_ASSERT(len > string_t::INLINE_LENGTH);
54
- auto insert_pos = (const char *)allocator.Allocate(len);
54
+ auto insert_pos = const_char_ptr_cast(allocator.Allocate(len));
55
55
  return string_t(insert_pos, len);
56
56
  }
57
57