duckdb 0.8.1-dev51.0 → 0.8.1-dev96.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/package.json +1 -1
  2. package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
  3. package/src/duckdb/extension/json/include/json_common.hpp +1 -1
  4. package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
  5. package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -6
  6. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +1 -1
  7. package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
  8. package/src/duckdb/extension/parquet/column_reader.cpp +52 -51
  9. package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
  10. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
  11. package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
  12. package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
  13. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
  14. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  15. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  16. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  17. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  18. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  19. package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
  20. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  21. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  22. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  23. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  24. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  25. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  26. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  27. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  28. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  29. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
  30. package/src/duckdb/src/common/checksum.cpp +1 -1
  31. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  32. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  33. package/src/duckdb/src/common/field_writer.cpp +1 -1
  34. package/src/duckdb/src/common/file_system.cpp +15 -2
  35. package/src/duckdb/src/common/fsst.cpp +11 -6
  36. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  37. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  38. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  39. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  40. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  41. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  42. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  43. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  44. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  45. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  46. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  47. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  48. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  49. package/src/duckdb/src/common/serializer.cpp +1 -1
  50. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  51. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  52. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  53. package/src/duckdb/src/common/types/bit.cpp +5 -5
  54. package/src/duckdb/src/common/types/blob.cpp +8 -8
  55. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  56. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  57. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  58. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  59. package/src/duckdb/src/common/types/hash.cpp +2 -2
  60. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  61. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  62. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  63. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  64. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +17 -17
  65. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  66. package/src/duckdb/src/common/types/value.cpp +2 -2
  67. package/src/duckdb/src/common/types/vector.cpp +98 -101
  68. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  69. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  70. package/src/duckdb/src/common/types.cpp +44 -33
  71. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  72. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  73. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  74. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  75. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +3 -3
  76. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +3 -3
  77. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +4 -4
  78. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +12 -11
  79. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +3 -3
  80. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +3 -3
  81. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +2 -2
  82. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +7 -7
  83. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +2 -2
  84. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +2 -2
  85. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +2 -2
  86. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +14 -14
  87. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +2 -2
  88. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +21 -21
  89. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +18 -19
  90. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +3 -4
  91. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +4 -4
  92. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +4 -4
  93. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +1 -1
  94. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +1 -1
  95. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +2 -2
  96. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +1 -1
  97. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  98. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
  99. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  100. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  101. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  102. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  103. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
  104. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  105. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
  106. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
  107. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  108. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  109. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  110. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +1 -1
  111. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  112. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
  113. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  114. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  115. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  116. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  117. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  118. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  119. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  120. package/src/duckdb/src/execution/expression_executor.cpp +28 -28
  121. package/src/duckdb/src/execution/index/art/art.cpp +30 -32
  122. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
  123. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  124. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  125. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  126. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  127. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  128. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  129. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  130. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  131. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  132. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  133. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  134. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  135. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  136. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  137. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  138. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  139. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  140. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  141. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  142. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  143. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  144. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  145. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
  146. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  147. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  148. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  149. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  150. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  151. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  152. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  153. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  154. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  155. package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
  156. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  157. package/src/duckdb/src/function/aggregate/distributive/count.cpp +2 -2
  158. package/src/duckdb/src/function/aggregate/distributive/first.cpp +5 -5
  159. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +8 -8
  160. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  161. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  162. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  163. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  164. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  165. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  166. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  167. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  168. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
  169. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
  170. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  171. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  172. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  173. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  174. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  175. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  176. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  177. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
  178. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  179. package/src/duckdb/src/function/table/arrow.cpp +4 -4
  180. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  181. package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
  182. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  183. package/src/duckdb/src/function/table/glob.cpp +1 -1
  184. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  185. package/src/duckdb/src/function/table/range.cpp +4 -4
  186. package/src/duckdb/src/function/table/read_csv.cpp +4 -4
  187. package/src/duckdb/src/function/table/repeat.cpp +2 -2
  188. package/src/duckdb/src/function/table/repeat_row.cpp +2 -2
  189. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  190. package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
  191. package/src/duckdb/src/function/table/table_scan.cpp +2 -2
  192. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  193. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  194. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -2
  195. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  196. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  197. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  198. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  199. package/src/duckdb/src/include/duckdb/common/exception.hpp +2 -2
  200. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  201. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  202. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  203. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  204. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  205. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  206. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  207. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  208. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  209. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  210. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  211. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  212. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  213. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  214. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  215. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  216. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +20 -19
  217. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  218. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  219. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  220. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  221. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +1 -1
  222. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +1 -1
  223. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +1 -1
  224. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -1
  225. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +1 -1
  226. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +2 -2
  227. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  228. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -3
  229. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  230. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  231. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  232. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  233. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  234. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  235. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  236. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  237. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  238. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  239. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  240. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
  241. package/src/duckdb/src/include/duckdb/function/table_function.hpp +6 -6
  242. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  243. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  244. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  245. package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
  246. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  247. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  248. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  249. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  250. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  251. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  252. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  253. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  254. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  255. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  256. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  257. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  258. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  259. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  260. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  261. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  262. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  263. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  264. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  265. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  266. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  267. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  268. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  269. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  270. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  271. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  272. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  273. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  274. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  275. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  276. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -1
  277. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  278. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  279. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
  280. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  281. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  282. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  283. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +107 -91
  284. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +1 -1
  285. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  286. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  287. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
  288. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  289. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  290. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  291. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  292. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  293. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  294. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  295. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  296. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  297. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  298. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  299. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  300. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  301. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  302. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  303. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  304. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  305. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  306. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  307. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  308. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  309. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  310. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -2
  311. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  312. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  313. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  314. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  315. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  316. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  317. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  318. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  319. package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
  320. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  321. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  322. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  323. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  324. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  325. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  326. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  327. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  328. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  329. package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
  330. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  331. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  332. package/src/duckdb/src/main/capi/config-c.cpp +1 -1
  333. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  334. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  335. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  336. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  337. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  338. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  339. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  340. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  341. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  342. package/src/duckdb/src/main/client_context.cpp +3 -3
  343. package/src/duckdb/src/main/database_manager.cpp +1 -1
  344. package/src/duckdb/src/main/error_manager.cpp +1 -1
  345. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  346. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  347. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  348. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  349. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  350. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  351. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  352. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  353. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  354. package/src/duckdb/src/main/relation.cpp +1 -1
  355. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  356. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  357. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  358. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  359. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  360. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  361. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  362. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  363. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  364. package/src/duckdb/src/parallel/executor.cpp +1 -1
  365. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  366. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  367. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  368. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  369. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  370. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  371. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  372. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  373. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  374. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  375. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  376. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  377. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  378. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  379. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  380. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  381. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  382. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  383. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  384. package/src/duckdb/src/parser/parser.cpp +3 -3
  385. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  386. package/src/duckdb/src/parser/query_node.cpp +7 -6
  387. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  388. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  389. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  390. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  391. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  392. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  393. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  394. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  395. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  396. package/src/duckdb/src/parser/tableref.cpp +12 -3
  397. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  398. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  399. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  400. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  401. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  402. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  403. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  404. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  405. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  406. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +69 -75
  407. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  408. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  409. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  410. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  411. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
  412. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  413. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  414. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  415. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  416. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  417. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  418. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  419. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  420. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  421. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  422. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  423. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  424. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  425. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +3 -4
  426. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  427. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  428. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  429. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  430. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  431. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  432. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  433. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  434. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  435. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  436. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -22
  437. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  438. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  439. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  440. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  441. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  442. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  443. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  444. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  445. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  446. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  447. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  448. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  449. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  450. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  451. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  452. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  453. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  454. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  455. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  456. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  457. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  458. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  459. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +27 -27
  460. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  461. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  462. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  463. package/src/duckdb/src/parser/transformer.cpp +46 -46
  464. package/src/duckdb/src/planner/bind_context.cpp +6 -6
  465. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
  466. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  467. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  468. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  469. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
  470. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  471. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +1 -1
  472. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  473. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +1 -1
  474. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +1 -1
  475. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +2 -2
  476. package/src/duckdb/src/planner/binder.cpp +1 -1
  477. package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
  478. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
  479. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  480. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  481. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  482. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  483. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  484. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  485. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  486. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  487. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  488. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  489. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  490. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  491. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  492. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  493. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  494. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  495. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  496. package/src/duckdb/src/planner/expression.cpp +15 -0
  497. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  498. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  499. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  500. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  501. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  502. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  503. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  504. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  505. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  506. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  507. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  508. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  509. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  510. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  511. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  512. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  513. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  514. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  515. package/src/duckdb/src/storage/data_table.cpp +2 -2
  516. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  517. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  518. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  519. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  520. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  521. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  522. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  523. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  524. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  525. package/src/duckdb/src/storage/table/list_column_data.cpp +3 -3
  526. package/src/duckdb/src/storage/table/row_group.cpp +4 -4
  527. package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
  528. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  529. package/src/duckdb/src/storage/wal_replay.cpp +1 -1
  530. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  531. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  532. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  533. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  534. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  535. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  536. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  537. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  538. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
@@ -41,7 +41,7 @@ public:
41
41
  if (type != TARGET::TYPE) {
42
42
  throw InternalException("Failed to cast bound query node to type - query node type mismatch");
43
43
  }
44
- return (TARGET &)*this;
44
+ return reinterpret_cast<TARGET &>(*this);
45
45
  }
46
46
 
47
47
  template <class TARGET>
@@ -49,7 +49,7 @@ public:
49
49
  if (type != TARGET::TYPE) {
50
50
  throw InternalException("Failed to cast bound query node to type - query node type mismatch");
51
51
  }
52
- return (const TARGET &)*this;
52
+ return reinterpret_cast<const TARGET &>(*this);
53
53
  }
54
54
  };
55
55
 
@@ -23,9 +23,29 @@ public:
23
23
  virtual ~BoundResultModifier();
24
24
 
25
25
  ResultModifierType type;
26
+
27
+ public:
28
+ template <class TARGET>
29
+ TARGET &Cast() {
30
+ if (type != TARGET::TYPE) {
31
+ throw InternalException("Failed to cast result modifier to type - result modifier type mismatch");
32
+ }
33
+ return reinterpret_cast<TARGET &>(*this);
34
+ }
35
+
36
+ template <class TARGET>
37
+ const TARGET &Cast() const {
38
+ if (type != TARGET::TYPE) {
39
+ throw InternalException("Failed to cast result modifier to type - result modifier type mismatch");
40
+ }
41
+ return reinterpret_cast<const TARGET &>(*this);
42
+ }
26
43
  };
27
44
 
28
45
  struct BoundOrderByNode {
46
+ public:
47
+ static constexpr const ResultModifierType TYPE = ResultModifierType::ORDER_MODIFIER;
48
+
29
49
  public:
30
50
  BoundOrderByNode(OrderType type, OrderByNullType null_order, unique_ptr<Expression> expression);
31
51
  BoundOrderByNode(OrderType type, OrderByNullType null_order, unique_ptr<Expression> expression,
@@ -46,6 +66,9 @@ public:
46
66
  };
47
67
 
48
68
  class BoundLimitModifier : public BoundResultModifier {
69
+ public:
70
+ static constexpr const ResultModifierType TYPE = ResultModifierType::LIMIT_MODIFIER;
71
+
49
72
  public:
50
73
  BoundLimitModifier();
51
74
 
@@ -60,6 +83,9 @@ public:
60
83
  };
61
84
 
62
85
  class BoundOrderModifier : public BoundResultModifier {
86
+ public:
87
+ static constexpr const ResultModifierType TYPE = ResultModifierType::ORDER_MODIFIER;
88
+
63
89
  public:
64
90
  BoundOrderModifier();
65
91
 
@@ -67,12 +93,16 @@ public:
67
93
  vector<BoundOrderByNode> orders;
68
94
 
69
95
  unique_ptr<BoundOrderModifier> Copy() const;
70
- static bool Equals(const BoundOrderModifier *left, const BoundOrderModifier *right);
96
+ static bool Equals(const BoundOrderModifier &left, const BoundOrderModifier &right);
97
+ static bool Equals(const unique_ptr<BoundOrderModifier> &left, const unique_ptr<BoundOrderModifier> &right);
71
98
  };
72
99
 
73
100
  enum class DistinctType : uint8_t { DISTINCT = 0, DISTINCT_ON = 1 };
74
101
 
75
102
  class BoundDistinctModifier : public BoundResultModifier {
103
+ public:
104
+ static constexpr const ResultModifierType TYPE = ResultModifierType::DISTINCT_MODIFIER;
105
+
76
106
  public:
77
107
  BoundDistinctModifier();
78
108
 
@@ -83,6 +113,9 @@ public:
83
113
  };
84
114
 
85
115
  class BoundLimitPercentModifier : public BoundResultModifier {
116
+ public:
117
+ static constexpr const ResultModifierType TYPE = ResultModifierType::LIMIT_PERCENT_MODIFIER;
118
+
86
119
  public:
87
120
  BoundLimitPercentModifier();
88
121
 
@@ -32,7 +32,7 @@ public:
32
32
  if (type != TARGET::TYPE) {
33
33
  throw InternalException("Failed to cast bound table ref to type - table ref type mismatch");
34
34
  }
35
- return (TARGET &)*this;
35
+ return reinterpret_cast<TARGET &>(*this);
36
36
  }
37
37
 
38
38
  template <class TARGET>
@@ -40,7 +40,7 @@ public:
40
40
  if (type != TARGET::TYPE) {
41
41
  throw InternalException("Failed to cast bound table ref to type - table ref type mismatch");
42
42
  }
43
- return (const TARGET &)*this;
43
+ return reinterpret_cast<const TARGET &>(*this);
44
44
  }
45
45
  };
46
46
  } // namespace duckdb
@@ -53,7 +53,7 @@ public:
53
53
  string ToString() const override;
54
54
 
55
55
  hash_t Hash() const override;
56
- bool Equals(const BaseExpression *other) const override;
56
+ bool Equals(const BaseExpression &other) const override;
57
57
  unique_ptr<Expression> Copy() override;
58
58
  void Serialize(FieldWriter &writer) const override;
59
59
  static unique_ptr<Expression> Deserialize(ExpressionDeserializationState &state, FieldReader &reader);
@@ -29,7 +29,7 @@ public:
29
29
  public:
30
30
  string ToString() const override;
31
31
 
32
- bool Equals(const BaseExpression *other) const override;
32
+ bool Equals(const BaseExpression &other) const override;
33
33
 
34
34
  unique_ptr<Expression> Copy() override;
35
35
  void Serialize(FieldWriter &writer) const override;
@@ -35,7 +35,7 @@ public:
35
35
  public:
36
36
  string ToString() const override;
37
37
 
38
- bool Equals(const BaseExpression *other) const override;
38
+ bool Equals(const BaseExpression &other) const override;
39
39
 
40
40
  unique_ptr<Expression> Copy() override;
41
41
 
@@ -46,7 +46,7 @@ public:
46
46
 
47
47
  string ToString() const override;
48
48
 
49
- bool Equals(const BaseExpression *other) const override;
49
+ bool Equals(const BaseExpression &other) const override;
50
50
 
51
51
  unique_ptr<Expression> Copy() override;
52
52
 
@@ -44,7 +44,7 @@ public:
44
44
  string ToString() const override;
45
45
  string GetName() const override;
46
46
 
47
- bool Equals(const BaseExpression *other) const override;
47
+ bool Equals(const BaseExpression &other) const override;
48
48
  hash_t Hash() const override;
49
49
 
50
50
  unique_ptr<Expression> Copy() override;
@@ -25,7 +25,7 @@ public:
25
25
  public:
26
26
  string ToString() const override;
27
27
 
28
- bool Equals(const BaseExpression *other) const override;
28
+ bool Equals(const BaseExpression &other) const override;
29
29
 
30
30
  unique_ptr<Expression> Copy() override;
31
31
  void Serialize(FieldWriter &writer) const override;
@@ -25,7 +25,7 @@ public:
25
25
  public:
26
26
  string ToString() const override;
27
27
 
28
- bool Equals(const BaseExpression *other) const override;
28
+ bool Equals(const BaseExpression &other) const override;
29
29
 
30
30
  bool PropagatesNullValues() const override;
31
31
 
@@ -25,7 +25,7 @@ public:
25
25
  public:
26
26
  string ToString() const override;
27
27
 
28
- bool Equals(const BaseExpression *other) const override;
28
+ bool Equals(const BaseExpression &other) const override;
29
29
  hash_t Hash() const override;
30
30
 
31
31
  unique_ptr<Expression> Copy() override;
@@ -39,7 +39,7 @@ public:
39
39
  string ToString() const override;
40
40
  bool PropagatesNullValues() const override;
41
41
  hash_t Hash() const override;
42
- bool Equals(const BaseExpression *other) const override;
42
+ bool Equals(const BaseExpression &other) const override;
43
43
 
44
44
  unique_ptr<Expression> Copy() override;
45
45
  void Verify() const override;
@@ -28,7 +28,7 @@ public:
28
28
  public:
29
29
  string ToString() const override;
30
30
 
31
- bool Equals(const BaseExpression *other) const override;
31
+ bool Equals(const BaseExpression &other) const override;
32
32
 
33
33
  unique_ptr<Expression> Copy() override;
34
34
 
@@ -46,7 +46,7 @@ public:
46
46
 
47
47
  string ToString() const override;
48
48
 
49
- bool Equals(const BaseExpression *other) const override;
49
+ bool Equals(const BaseExpression &other) const override;
50
50
  hash_t Hash() const override;
51
51
 
52
52
  unique_ptr<Expression> Copy() override;
@@ -24,7 +24,7 @@ public:
24
24
  public:
25
25
  string ToString() const override;
26
26
 
27
- bool Equals(const BaseExpression *other) const override;
27
+ bool Equals(const BaseExpression &other) const override;
28
28
 
29
29
  unique_ptr<Expression> Copy() override;
30
30
 
@@ -35,7 +35,7 @@ public:
35
35
 
36
36
  string ToString() const override;
37
37
 
38
- bool Equals(const BaseExpression *other) const override;
38
+ bool Equals(const BaseExpression &other) const override;
39
39
  hash_t Hash() const override;
40
40
 
41
41
  unique_ptr<Expression> Copy() override;
@@ -35,7 +35,7 @@ public:
35
35
  string ToString() const override;
36
36
 
37
37
  hash_t Hash() const override;
38
- bool Equals(const BaseExpression *other) const override;
38
+ bool Equals(const BaseExpression &other) const override;
39
39
 
40
40
  unique_ptr<Expression> Copy() override;
41
41
 
@@ -55,7 +55,7 @@ public:
55
55
 
56
56
  string ToString() const override;
57
57
 
58
- bool Equals(const BaseExpression *other) const override;
58
+ bool Equals(const BaseExpression &other) const override;
59
59
 
60
60
  unique_ptr<Expression> Copy() override;
61
61
 
@@ -27,7 +27,7 @@ public:
27
27
  string ToString() const override;
28
28
 
29
29
  hash_t Hash() const override;
30
- bool Equals(const BaseExpression *other) const override;
30
+ bool Equals(const BaseExpression &other) const override;
31
31
 
32
32
  unique_ptr<Expression> Copy() override;
33
33
 
@@ -61,7 +61,7 @@ public:
61
61
  string ToString() const override;
62
62
 
63
63
  bool KeysAreCompatible(const BoundWindowExpression &other) const;
64
- bool Equals(const BaseExpression *other) const override;
64
+ bool Equals(const BaseExpression &other) const override;
65
65
 
66
66
  unique_ptr<Expression> Copy() override;
67
67
 
@@ -41,19 +41,17 @@ public:
41
41
 
42
42
  hash_t Hash() const override;
43
43
 
44
- bool Equals(const BaseExpression *other) const override {
44
+ bool Equals(const BaseExpression &other) const override {
45
45
  if (!BaseExpression::Equals(other)) {
46
46
  return false;
47
47
  }
48
- return return_type == ((Expression *)other)->return_type;
49
- }
50
-
51
- static bool Equals(const Expression *left, const Expression *right) {
52
- return BaseExpression::Equals((const BaseExpression *)left, (const BaseExpression *)right);
48
+ return return_type == ((Expression &)other).return_type;
53
49
  }
54
50
  static bool Equals(const Expression &left, const Expression &right) {
55
- return left.Equals(&right);
51
+ return left.Equals(right);
56
52
  }
53
+ static bool Equals(const unique_ptr<Expression> &left, const unique_ptr<Expression> &right);
54
+ static bool ListEquals(const vector<unique_ptr<Expression>> &left, const vector<unique_ptr<Expression>> &right);
57
55
  //! Create a copy of this expression
58
56
  virtual unique_ptr<Expression> Copy() = 0;
59
57
 
@@ -33,6 +33,9 @@ public:
33
33
  };
34
34
 
35
35
  class ConjunctionOrFilter : public ConjunctionFilter {
36
+ public:
37
+ static constexpr const TableFilterType TYPE = TableFilterType::CONJUNCTION_OR;
38
+
36
39
  public:
37
40
  ConjunctionOrFilter();
38
41
 
@@ -45,6 +48,9 @@ public:
45
48
  };
46
49
 
47
50
  class ConjunctionAndFilter : public ConjunctionFilter {
51
+ public:
52
+ static constexpr const TableFilterType TYPE = TableFilterType::CONJUNCTION_AND;
53
+
48
54
  public:
49
55
  ConjunctionAndFilter();
50
56
 
@@ -15,6 +15,9 @@
15
15
  namespace duckdb {
16
16
 
17
17
  class ConstantFilter : public TableFilter {
18
+ public:
19
+ static constexpr const TableFilterType TYPE = TableFilterType::CONSTANT_COMPARISON;
20
+
18
21
  public:
19
22
  ConstantFilter(ExpressionType comparison_type, Value constant);
20
23
 
@@ -13,6 +13,9 @@
13
13
  namespace duckdb {
14
14
 
15
15
  class IsNullFilter : public TableFilter {
16
+ public:
17
+ static constexpr const TableFilterType TYPE = TableFilterType::IS_NULL;
18
+
16
19
  public:
17
20
  IsNullFilter();
18
21
 
@@ -24,6 +27,9 @@ public:
24
27
  };
25
28
 
26
29
  class IsNotNullFilter : public TableFilter {
30
+ public:
31
+ static constexpr const TableFilterType TYPE = TableFilterType::IS_NOT_NULL;
32
+
27
33
  public:
28
34
  IsNotNullFilter();
29
35
 
@@ -96,7 +96,7 @@ public:
96
96
  if (TARGET::TYPE != LogicalOperatorType::LOGICAL_INVALID && type != TARGET::TYPE) {
97
97
  throw InternalException("Failed to cast logical operator to type - logical operator type mismatch");
98
98
  }
99
- return (TARGET &)*this;
99
+ return reinterpret_cast<TARGET &>(*this);
100
100
  }
101
101
 
102
102
  template <class TARGET>
@@ -104,7 +104,7 @@ public:
104
104
  if (TARGET::TYPE != LogicalOperatorType::LOGICAL_INVALID && type != TARGET::TYPE) {
105
105
  throw InternalException("Failed to cast logical operator to type - logical operator type mismatch");
106
106
  }
107
- return (const TARGET &)*this;
107
+ return reinterpret_cast<const TARGET &>(*this);
108
108
  }
109
109
  };
110
110
  } // namespace duckdb
@@ -17,6 +17,9 @@
17
17
  namespace duckdb {
18
18
 
19
19
  class LogicalPivot : public LogicalOperator {
20
+ public:
21
+ static constexpr const LogicalOperatorType TYPE = LogicalOperatorType::LOGICAL_PIVOT;
22
+
20
23
  public:
21
24
  LogicalPivot(idx_t pivot_idx, unique_ptr<LogicalOperator> plan, BoundPivotInfo info);
22
25
 
@@ -55,9 +55,29 @@ public:
55
55
  virtual string ColumnNotFoundError(const string &column_name) const;
56
56
  virtual BindResult Bind(ColumnRefExpression &colref, idx_t depth);
57
57
  virtual optional_ptr<StandardEntry> GetStandardEntry();
58
+
59
+ public:
60
+ template <class TARGET>
61
+ TARGET &Cast() {
62
+ if (binding_type != TARGET::TYPE) {
63
+ throw InternalException("Failed to cast binding to type - binding type mismatch");
64
+ }
65
+ return reinterpret_cast<TARGET &>(*this);
66
+ }
67
+
68
+ template <class TARGET>
69
+ const TARGET &Cast() const {
70
+ if (binding_type != TARGET::TYPE) {
71
+ throw InternalException("Failed to cast binding to type - binding type mismatch");
72
+ }
73
+ return reinterpret_cast<const TARGET &>(*this);
74
+ }
58
75
  };
59
76
 
60
77
  struct EntryBinding : public Binding {
78
+ public:
79
+ static constexpr const BindingType TYPE = BindingType::CATALOG_ENTRY;
80
+
61
81
  public:
62
82
  EntryBinding(const string &alias, vector<LogicalType> types, vector<string> names, idx_t index,
63
83
  StandardEntry &entry);
@@ -70,6 +90,10 @@ public:
70
90
  //! TableBinding is exactly like the Binding, except it keeps track of which columns were bound in the linked LogicalGet
71
91
  //! node for projection pushdown purposes.
72
92
  struct TableBinding : public Binding {
93
+ public:
94
+ static constexpr const BindingType TYPE = BindingType::TABLE;
95
+
96
+ public:
73
97
  TableBinding(const string &alias, vector<LogicalType> types, vector<string> names,
74
98
  vector<column_t> &bound_column_ids, optional_ptr<StandardEntry> entry, idx_t index,
75
99
  bool add_row_id = false);
@@ -94,6 +118,8 @@ protected:
94
118
  //! DummyBinding is like the Binding, except the alias and index are set by default. Used for binding lambdas and macro
95
119
  //! parameters.
96
120
  struct DummyBinding : public Binding {
121
+ public:
122
+ static constexpr const BindingType TYPE = BindingType::DUMMY;
97
123
  // NOTE: changing this string conflicts with the storage version
98
124
  static constexpr const char *DUMMY_NAME = "0_macro_parameters";
99
125
 
@@ -47,6 +47,23 @@ public:
47
47
  void Serialize(Serializer &serializer) const;
48
48
  virtual void Serialize(FieldWriter &writer) const = 0;
49
49
  static unique_ptr<TableFilter> Deserialize(Deserializer &source);
50
+
51
+ public:
52
+ template <class TARGET>
53
+ TARGET &Cast() {
54
+ if (filter_type != TARGET::TYPE) {
55
+ throw InternalException("Failed to cast table to type - table filter type mismatch");
56
+ }
57
+ return reinterpret_cast<TARGET &>(*this);
58
+ }
59
+
60
+ template <class TARGET>
61
+ const TARGET &Cast() const {
62
+ if (filter_type != TARGET::TYPE) {
63
+ throw InternalException("Failed to cast table to type - table filter type mismatch");
64
+ }
65
+ return reinterpret_cast<const TARGET &>(*this);
66
+ }
50
67
  };
51
68
 
52
69
  class TableFilterSet {
@@ -28,6 +28,9 @@ struct BoundPivotInfo {
28
28
  };
29
29
 
30
30
  class BoundPivotRef : public BoundTableRef {
31
+ public:
32
+ static constexpr const TableReferenceType TYPE = TableReferenceType::PIVOT;
33
+
31
34
  public:
32
35
  explicit BoundPivotRef() : BoundTableRef(TableReferenceType::PIVOT) {
33
36
  }
@@ -113,7 +113,7 @@ bool ChimpAnalyze(AnalyzeState &state, Vector &input, idx_t count) {
113
113
  UnifiedVectorFormat vdata;
114
114
  input.ToUnifiedFormat(count, vdata);
115
115
 
116
- auto data = (CHIMP_TYPE *)vdata.data;
116
+ auto data = UnifiedVectorFormat::GetData<CHIMP_TYPE>(vdata);
117
117
  for (idx_t i = 0; i < count; i++) {
118
118
  auto idx = vdata.sel->get_index(i);
119
119
  analyze_state.WriteValue(data[idx], vdata.validity.RowIsValid(idx));
@@ -127,7 +127,7 @@ public:
127
127
  }
128
128
 
129
129
  void Append(UnifiedVectorFormat &vdata, idx_t count) {
130
- auto data = (CHIMP_TYPE *)vdata.data;
130
+ auto data = UnifiedVectorFormat::GetData<CHIMP_TYPE>(vdata);
131
131
 
132
132
  for (idx_t i = 0; i < count; i++) {
133
133
  auto idx = vdata.sel->get_index(i);
@@ -145,7 +145,7 @@ public:
145
145
  current_segment->count++;
146
146
 
147
147
  if (is_valid) {
148
- T floating_point_value = Load<T>((const_data_ptr_t)&value);
148
+ T floating_point_value = Load<T>(const_data_ptr_cast(&value));
149
149
  NumericStats::Update<T>(current_segment->stats.statistics, floating_point_value);
150
150
  } else {
151
151
  //! FIXME: find a cheaper alternative to storing a NULL
@@ -102,7 +102,7 @@ struct EmptyPatasWriter {
102
102
  using EXACT_TYPE = typename FloatingToExact<VALUE_TYPE>::type;
103
103
 
104
104
  auto state_wrapper = (PatasAnalyzeState<VALUE_TYPE> *)state_p;
105
- state_wrapper->WriteValue(Load<EXACT_TYPE>((const_data_ptr_t)&uncompressed_value), is_valid);
105
+ state_wrapper->WriteValue(Load<EXACT_TYPE>(const_data_ptr_cast(&uncompressed_value)), is_valid);
106
106
  }
107
107
  };
108
108
 
@@ -117,7 +117,7 @@ bool PatasAnalyze(AnalyzeState &state, Vector &input, idx_t count) {
117
117
  UnifiedVectorFormat vdata;
118
118
  input.ToUnifiedFormat(count, vdata);
119
119
 
120
- auto data = (T *)vdata.data;
120
+ auto data = UnifiedVectorFormat::GetData<T>(vdata);
121
121
  for (idx_t i = 0; i < count; i++) {
122
122
  auto idx = vdata.sel->get_index(i);
123
123
  analyze_state.state.template Update<EmptyPatasWriter>(data[idx], vdata.validity.RowIsValid(idx));
@@ -52,7 +52,7 @@ public:
52
52
  NumericStats::Update<VALUE_TYPE>(state_wrapper->current_segment->stats.statistics, value);
53
53
  }
54
54
 
55
- state_wrapper->WriteValue(Load<EXACT_TYPE>((const_data_ptr_t)&value));
55
+ state_wrapper->WriteValue(Load<EXACT_TYPE>(const_data_ptr_cast(&value)));
56
56
  }
57
57
  };
58
58
 
@@ -138,7 +138,7 @@ public:
138
138
  }
139
139
 
140
140
  void Append(UnifiedVectorFormat &vdata, idx_t count) {
141
- auto data = (T *)vdata.data;
141
+ auto data = UnifiedVectorFormat::GetData<T>(vdata);
142
142
 
143
143
  for (idx_t i = 0; i < count; i++) {
144
144
  auto idx = vdata.sel->get_index(i);
@@ -153,13 +153,13 @@ public:
153
153
  template <class TARGET>
154
154
  TARGET &Cast() {
155
155
  D_ASSERT(dynamic_cast<TARGET *>(this));
156
- return (TARGET &)*this;
156
+ return reinterpret_cast<TARGET &>(*this);
157
157
  }
158
158
 
159
159
  template <class TARGET>
160
160
  const TARGET &Cast() const {
161
161
  D_ASSERT(dynamic_cast<const TARGET *>(this));
162
- return (const TARGET &)*this;
162
+ return reinterpret_cast<const TARGET &>(*this);
163
163
  }
164
164
  };
165
165
 
@@ -54,7 +54,7 @@ public:
54
54
  template <class TARGET>
55
55
  TARGET &Cast() {
56
56
  D_ASSERT(dynamic_cast<TARGET *>(this));
57
- return (TARGET &)*this;
57
+ return reinterpret_cast<TARGET &>(*this);
58
58
  }
59
59
  };
60
60
 
@@ -82,6 +82,18 @@ protected:
82
82
  unique_ptr<WriteAheadLog> wal;
83
83
  //! Whether or not the database is opened in read-only mode
84
84
  bool read_only;
85
+
86
+ public:
87
+ template <class TARGET>
88
+ TARGET &Cast() {
89
+ D_ASSERT(dynamic_cast<TARGET *>(this));
90
+ return reinterpret_cast<TARGET &>(*this);
91
+ }
92
+ template <class TARGET>
93
+ const TARGET &Cast() const {
94
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
95
+ return reinterpret_cast<const TARGET &>(*this);
96
+ }
85
97
  };
86
98
 
87
99
  //! Stores database in a single file.
@@ -80,7 +80,7 @@ public:
80
80
  UnifiedVectorFormat &data, idx_t offset, idx_t count) {
81
81
  D_ASSERT(segment.GetBlockOffset() == 0);
82
82
  auto handle_ptr = handle.Ptr();
83
- auto source_data = (string_t *)data.data;
83
+ auto source_data = UnifiedVectorFormat::GetData<string_t>(data);
84
84
  auto result_data = (int32_t *)(handle_ptr + DICTIONARY_HEADER_SIZE);
85
85
  uint32_t *dictionary_size = (uint32_t *)handle_ptr;
86
86
  uint32_t *dictionary_end = (uint32_t *)(handle_ptr + sizeof(uint32_t));
@@ -44,11 +44,31 @@ public:
44
44
 
45
45
  virtual void Serialize(Serializer &serialize) = 0;
46
46
  static unique_ptr<ChunkInfo> Deserialize(Deserializer &source);
47
+
48
+ public:
49
+ template <class TARGET>
50
+ TARGET &Cast() {
51
+ if (type != TARGET::TYPE) {
52
+ throw InternalException("Failed to cast chunk info to type - query result type mismatch");
53
+ }
54
+ return reinterpret_cast<TARGET &>(*this);
55
+ }
56
+
57
+ template <class TARGET>
58
+ const TARGET &Cast() const {
59
+ if (type != TARGET::TYPE) {
60
+ throw InternalException("Failed to cast chunk info to type - query result type mismatch");
61
+ }
62
+ return reinterpret_cast<const TARGET &>(*this);
63
+ }
47
64
  };
48
65
 
49
66
  class ChunkConstantInfo : public ChunkInfo {
50
67
  public:
51
- ChunkConstantInfo(idx_t start);
68
+ static constexpr const ChunkInfoType TYPE = ChunkInfoType::CONSTANT_INFO;
69
+
70
+ public:
71
+ explicit ChunkConstantInfo(idx_t start);
52
72
 
53
73
  atomic<transaction_t> insert_id;
54
74
  atomic<transaction_t> delete_id;
@@ -71,7 +91,10 @@ private:
71
91
 
72
92
  class ChunkVectorInfo : public ChunkInfo {
73
93
  public:
74
- ChunkVectorInfo(idx_t start);
94
+ static constexpr const ChunkInfoType TYPE = ChunkInfoType::VECTOR_INFO;
95
+
96
+ public:
97
+ explicit ChunkVectorInfo(idx_t start);
75
98
 
76
99
  //! The transaction ids of the transactions that inserted the tuples (if any)
77
100
  atomic<transaction_t> inserted[STANDARD_VECTOR_SIZE];