duckdb 0.8.1-dev26.0 → 0.8.1-dev276.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 (604) 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/icu/icu-makedate.cpp +5 -4
  5. package/src/duckdb/extension/json/buffered_json_reader.cpp +23 -14
  6. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +6 -6
  7. package/src/duckdb/extension/json/include/json_common.hpp +13 -3
  8. package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
  9. package/src/duckdb/extension/json/include/json_scan.hpp +3 -1
  10. package/src/duckdb/extension/json/json_functions/json_create.cpp +16 -16
  11. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +3 -3
  12. package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +2 -2
  13. package/src/duckdb/extension/json/json_functions/json_structure.cpp +5 -3
  14. package/src/duckdb/extension/json/json_functions/json_transform.cpp +12 -12
  15. package/src/duckdb/extension/json/json_functions/read_json.cpp +2 -1
  16. package/src/duckdb/extension/json/json_functions.cpp +6 -3
  17. package/src/duckdb/extension/json/json_scan.cpp +40 -25
  18. package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
  19. package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
  20. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
  21. package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
  22. package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
  23. package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
  24. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
  25. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  26. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  27. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  28. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  29. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  30. package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
  31. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  32. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  33. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  34. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  35. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  36. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  37. package/src/duckdb/src/catalog/catalog.cpp +5 -17
  38. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +113 -0
  39. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +7 -0
  40. package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
  41. package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
  42. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  43. package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
  44. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  45. package/src/duckdb/src/catalog/duck_catalog.cpp +1 -0
  46. package/src/duckdb/src/common/adbc/adbc.cpp +301 -106
  47. package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -22
  48. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  49. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
  50. package/src/duckdb/src/common/checksum.cpp +1 -1
  51. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  52. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  53. package/src/duckdb/src/common/exception.cpp +4 -1
  54. package/src/duckdb/src/common/exception_format_value.cpp +19 -14
  55. package/src/duckdb/src/common/field_writer.cpp +1 -1
  56. package/src/duckdb/src/common/file_system.cpp +15 -2
  57. package/src/duckdb/src/common/fsst.cpp +11 -6
  58. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  59. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  60. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  61. package/src/duckdb/src/common/multi_file_reader.cpp +3 -0
  62. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  63. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  64. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  65. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  66. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  67. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  68. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  69. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  70. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  71. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  72. package/src/duckdb/src/common/serializer.cpp +1 -1
  73. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  74. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  75. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  76. package/src/duckdb/src/common/types/bit.cpp +5 -5
  77. package/src/duckdb/src/common/types/blob.cpp +8 -8
  78. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  79. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  80. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  81. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  82. package/src/duckdb/src/common/types/hash.cpp +2 -2
  83. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  84. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  85. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  86. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
  87. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  88. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +61 -24
  89. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  90. package/src/duckdb/src/common/types/value.cpp +3 -2
  91. package/src/duckdb/src/common/types/vector.cpp +98 -101
  92. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  93. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  94. package/src/duckdb/src/common/types.cpp +44 -33
  95. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  96. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  97. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  98. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  99. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
  100. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
  101. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +32 -36
  102. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
  103. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
  104. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +44 -44
  105. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
  106. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
  107. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
  108. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
  109. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
  110. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
  111. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +36 -37
  112. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
  113. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
  114. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
  115. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +97 -121
  116. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
  117. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  118. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
  119. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
  120. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
  121. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
  122. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
  123. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
  124. package/src/duckdb/src/core_functions/function_list.cpp +1 -0
  125. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  126. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
  127. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  128. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  129. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  130. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  131. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
  132. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
  133. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  134. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
  135. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
  136. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  137. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  138. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  139. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +4 -1
  140. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  141. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
  142. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  143. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  144. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  145. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  146. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  147. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  148. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  149. package/src/duckdb/src/execution/expression_executor.cpp +28 -28
  150. package/src/duckdb/src/execution/index/art/art.cpp +30 -32
  151. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
  152. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  153. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  154. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  155. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  156. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  157. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  158. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  159. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +7 -5
  160. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  161. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
  162. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
  163. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  164. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  165. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  166. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  167. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  168. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  169. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  170. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  171. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  172. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  173. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  174. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  175. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  176. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  177. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
  178. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  179. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  180. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  181. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  182. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  183. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  184. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  185. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  186. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  187. package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
  188. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  189. package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
  190. package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
  191. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
  192. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  193. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  194. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  195. package/src/duckdb/src/function/cast/list_casts.cpp +2 -4
  196. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  197. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  198. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  199. package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
  200. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  201. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  202. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
  203. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
  204. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  205. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  206. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  207. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  208. package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +6 -2
  209. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  210. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  211. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  212. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
  213. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  214. package/src/duckdb/src/function/table/arrow.cpp +6 -6
  215. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  216. package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
  217. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  218. package/src/duckdb/src/function/table/glob.cpp +1 -1
  219. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  220. package/src/duckdb/src/function/table/range.cpp +4 -4
  221. package/src/duckdb/src/function/table/read_csv.cpp +15 -20
  222. package/src/duckdb/src/function/table/repeat.cpp +2 -2
  223. package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
  224. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  225. package/src/duckdb/src/function/table/system/test_vector_types.cpp +82 -26
  226. package/src/duckdb/src/function/table/table_scan.cpp +2 -2
  227. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  228. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  229. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -5
  230. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
  231. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +6 -0
  232. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  233. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
  234. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
  235. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +5 -0
  236. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  237. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  238. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  239. package/src/duckdb/src/include/duckdb/common/exception.hpp +5 -2
  240. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  241. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  242. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  243. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  244. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  245. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  246. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  247. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  248. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  249. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  250. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  251. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  252. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  253. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  254. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  255. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  256. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
  257. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  258. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  259. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  260. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  261. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
  262. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
  263. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
  264. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
  265. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
  266. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
  267. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
  268. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
  269. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
  270. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  271. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -3
  272. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  273. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  274. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  275. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  276. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +8 -29
  277. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
  278. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  279. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  280. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  281. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  282. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  283. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +3 -1
  284. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  285. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  286. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
  287. package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -7
  288. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  289. package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
  290. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  291. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  292. package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
  293. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  294. package/src/duckdb/src/include/duckdb/main/settings.hpp +9 -0
  295. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  296. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  297. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  298. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  299. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  300. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  301. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  302. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  303. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  304. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  305. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  306. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  307. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  308. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  309. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  310. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  311. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  312. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  313. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  314. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  315. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  316. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  318. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  319. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  320. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  321. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  322. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  323. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  324. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  325. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
  326. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  327. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  328. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
  329. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  330. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  331. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  332. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +107 -91
  333. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
  334. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  335. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  336. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
  337. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  338. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  339. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  340. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  341. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  342. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  343. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  344. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  345. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  346. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  347. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  348. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  349. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  350. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  351. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  352. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  353. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  354. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  355. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  356. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
  357. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  358. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  359. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  360. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +7 -2
  361. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +6 -2
  362. package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +4 -0
  363. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +5 -1
  364. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +5 -1
  365. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  366. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +6 -2
  367. package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +4 -0
  368. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  369. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  370. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  371. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  372. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  373. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  374. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  375. package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
  376. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  377. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  378. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  379. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  380. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  381. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  382. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  383. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  384. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  385. package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
  386. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  387. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  388. package/src/duckdb/src/main/capi/config-c.cpp +1 -1
  389. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  390. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  391. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  392. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  393. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  394. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  395. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  396. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  397. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  398. package/src/duckdb/src/main/client_context.cpp +3 -3
  399. package/src/duckdb/src/main/config.cpp +1 -0
  400. package/src/duckdb/src/main/database_manager.cpp +1 -1
  401. package/src/duckdb/src/main/error_manager.cpp +1 -1
  402. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  403. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  404. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  405. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  406. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  407. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  408. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  409. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  410. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  411. package/src/duckdb/src/main/relation.cpp +1 -1
  412. package/src/duckdb/src/main/settings/settings.cpp +22 -6
  413. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  414. package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
  415. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  416. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  417. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  418. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  419. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  420. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  421. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  422. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  423. package/src/duckdb/src/parallel/executor.cpp +1 -1
  424. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  425. package/src/duckdb/src/parser/column_definition.cpp +5 -8
  426. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  427. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  428. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  429. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  430. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  431. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  432. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  433. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  434. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  435. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  436. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  437. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  438. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  439. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  440. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  441. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  442. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  443. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  444. package/src/duckdb/src/parser/parser.cpp +4 -4
  445. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  446. package/src/duckdb/src/parser/query_node.cpp +7 -6
  447. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  448. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  449. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  450. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  451. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  452. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  453. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  454. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  455. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  456. package/src/duckdb/src/parser/tableref.cpp +12 -3
  457. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  458. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  459. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  460. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  461. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  462. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  463. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  464. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  465. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  466. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
  467. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  468. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  469. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  470. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  471. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
  472. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  473. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  474. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  475. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  476. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  477. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  478. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  479. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  480. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  481. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  482. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  483. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  484. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  485. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +3 -4
  486. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  487. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  488. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  489. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  490. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  491. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  492. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  493. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  494. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  495. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  496. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -22
  497. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  498. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  499. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  500. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  501. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  502. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  503. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  504. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  505. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  506. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  507. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  508. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  509. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  510. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  511. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  512. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  513. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  514. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  515. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  516. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  517. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  518. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  519. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
  520. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  521. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  522. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  523. package/src/duckdb/src/parser/transformer.cpp +46 -46
  524. package/src/duckdb/src/planner/bind_context.cpp +9 -10
  525. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
  526. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  527. package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +8 -3
  528. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  529. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  530. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
  531. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  532. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +1 -1
  533. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
  534. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  535. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
  536. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +4 -2
  537. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +17 -7
  538. package/src/duckdb/src/planner/binder.cpp +1 -1
  539. package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
  540. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
  541. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  542. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  543. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  544. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  545. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  546. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  547. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  548. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  549. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  550. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  551. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  552. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  553. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  554. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  555. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  556. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  557. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  558. package/src/duckdb/src/planner/expression.cpp +15 -0
  559. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  560. package/src/duckdb/src/planner/expression_binder.cpp +3 -2
  561. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  562. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  563. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  564. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  565. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  566. package/src/duckdb/src/planner/planner.cpp +5 -15
  567. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  568. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  569. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  570. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  571. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  572. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  573. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  574. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  575. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  576. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  577. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  578. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  579. package/src/duckdb/src/storage/data_table.cpp +8 -7
  580. package/src/duckdb/src/storage/index.cpp +1 -3
  581. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  582. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  583. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  584. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  585. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  586. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  587. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  588. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  589. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  590. package/src/duckdb/src/storage/table/list_column_data.cpp +3 -3
  591. package/src/duckdb/src/storage/table/row_group.cpp +4 -4
  592. package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
  593. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  594. package/src/duckdb/src/storage/wal_replay.cpp +5 -6
  595. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  596. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  597. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  598. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  599. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  600. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  601. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  602. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  603. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
  604. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
@@ -51,12 +51,10 @@ bool ListCast::ListToListCast(Vector &source, Vector &result, idx_t count, CastP
51
51
  auto &append_vector = ListVector::GetEntry(result);
52
52
 
53
53
  CastParameters child_parameters(parameters, cast_data.child_cast_info.cast_data, parameters.local_state);
54
- if (!cast_data.child_cast_info.function(source_cc, append_vector, source_size, child_parameters)) {
55
- return false;
56
- }
54
+ bool all_succeeded = cast_data.child_cast_info.function(source_cc, append_vector, source_size, child_parameters);
57
55
  ListVector::SetListSize(result, source_size);
58
56
  D_ASSERT(ListVector::GetListSize(result) == source_size);
59
- return true;
57
+ return all_succeeded;
60
58
  }
61
59
 
62
60
  static bool ListToVarcharCast(Vector &source, Vector &result, idx_t count, CastParameters &parameters) {
@@ -8,7 +8,7 @@
8
8
  namespace duckdb {
9
9
 
10
10
  template <class T>
11
- bool StringEnumCastLoop(string_t *source_data, ValidityMask &source_mask, const LogicalType &source_type,
11
+ bool StringEnumCastLoop(const string_t *source_data, ValidityMask &source_mask, const LogicalType &source_type,
12
12
  T *result_data, ValidityMask &result_mask, const LogicalType &result_type, idx_t count,
13
13
  string *error_message, const SelectionVector *sel) {
14
14
  bool all_converted = true;
@@ -55,7 +55,7 @@ bool StringEnumCast(Vector &source, Vector &result, idx_t count, CastParameters
55
55
 
56
56
  result.SetVectorType(VectorType::FLAT_VECTOR);
57
57
 
58
- auto source_data = (string_t *)vdata.data;
58
+ auto source_data = UnifiedVectorFormat::GetData<string_t>(vdata);
59
59
  auto source_sel = vdata.sel;
60
60
  auto source_mask = vdata.validity;
61
61
  auto result_data = FlatVector::GetData<T>(result);
@@ -119,9 +119,9 @@ static BoundCastInfo VectorStringCastNumericSwitch(BindCastInput &input, const L
119
119
  //===--------------------------------------------------------------------===//
120
120
  // string -> list casting
121
121
  //===--------------------------------------------------------------------===//
122
- bool VectorStringToList::StringToNestedTypeCastLoop(string_t *source_data, ValidityMask &source_mask, Vector &result,
123
- ValidityMask &result_mask, idx_t count, CastParameters &parameters,
124
- const SelectionVector *sel) {
122
+ bool VectorStringToList::StringToNestedTypeCastLoop(const string_t *source_data, ValidityMask &source_mask,
123
+ Vector &result, ValidityMask &result_mask, idx_t count,
124
+ CastParameters &parameters, const SelectionVector *sel) {
125
125
  idx_t total_list_size = 0;
126
126
  for (idx_t i = 0; i < count; i++) {
127
127
  idx_t idx = i;
@@ -183,8 +183,8 @@ static LogicalType InitVarcharStructType(const LogicalType &target) {
183
183
  //===--------------------------------------------------------------------===//
184
184
  // string -> struct casting
185
185
  //===--------------------------------------------------------------------===//
186
- bool VectorStringToStruct::StringToNestedTypeCastLoop(string_t *source_data, ValidityMask &source_mask, Vector &result,
187
- ValidityMask &result_mask, idx_t count,
186
+ bool VectorStringToStruct::StringToNestedTypeCastLoop(const string_t *source_data, ValidityMask &source_mask,
187
+ Vector &result, ValidityMask &result_mask, idx_t count,
188
188
  CastParameters &parameters, const SelectionVector *sel) {
189
189
  auto varchar_struct_type = InitVarcharStructType(result.GetType());
190
190
  Vector varchar_vector(varchar_struct_type, count);
@@ -253,9 +253,9 @@ unique_ptr<FunctionLocalState> InitMapCastLocalState(CastLocalStateParameters &p
253
253
  return std::move(result);
254
254
  }
255
255
 
256
- bool VectorStringToMap::StringToNestedTypeCastLoop(string_t *source_data, ValidityMask &source_mask, Vector &result,
257
- ValidityMask &result_mask, idx_t count, CastParameters &parameters,
258
- const SelectionVector *sel) {
256
+ bool VectorStringToMap::StringToNestedTypeCastLoop(const string_t *source_data, ValidityMask &source_mask,
257
+ Vector &result, ValidityMask &result_mask, idx_t count,
258
+ CastParameters &parameters, const SelectionVector *sel) {
259
259
  idx_t total_elements = 0;
260
260
  for (idx_t i = 0; i < count; i++) {
261
261
  idx_t idx = i;
@@ -352,7 +352,7 @@ bool StringToNestedTypeCast(Vector &source, Vector &result, idx_t count, CastPar
352
352
 
353
353
  source.ToUnifiedFormat(count, unified_source);
354
354
  auto source_sel = unified_source.sel;
355
- auto source_data = (string_t *)unified_source.data;
355
+ auto source_data = UnifiedVectorFormat::GetData<string_t>(unified_source);
356
356
  auto &source_mask = unified_source.validity;
357
357
  auto &result_mask = FlatVector::Validity(result);
358
358
 
@@ -293,7 +293,7 @@ static bool UnionToUnionCast(Vector &source, Vector &result, idx_t count, CastPa
293
293
  auto source_row_idx = source_tag_format.sel->get_index(row_idx);
294
294
  if (source_tag_format.validity.RowIsValid(source_row_idx)) {
295
295
  // map the tag
296
- auto source_tag = ((union_tag_t *)source_tag_format.data)[source_row_idx];
296
+ auto source_tag = (UnifiedVectorFormat::GetData<union_tag_t>(source_tag_format))[source_row_idx];
297
297
  auto target_tag = cast_data.tag_map[source_tag];
298
298
  FlatVector::GetData<union_tag_t>(result_tag_vector)[row_idx] = target_tag;
299
299
  } else {
@@ -339,7 +339,7 @@ static bool UnionToVarcharCast(Vector &source, Vector &result, idx_t count, Cast
339
339
  auto mapped_idx = member_vdata.sel->get_index(i);
340
340
  auto member_valid = member_vdata.validity.RowIsValid(mapped_idx);
341
341
  if (member_valid) {
342
- auto member_str = ((string_t *)member_vdata.data)[mapped_idx];
342
+ auto member_str = (UnifiedVectorFormat::GetData<string_t>(member_vdata))[mapped_idx];
343
343
  result_data[i] = StringVector::AddString(result, member_str);
344
344
  } else {
345
345
  result_data[i] = StringVector::AddString(result, "NULL");
@@ -299,8 +299,9 @@ static bool FindValueStruct(const char *buf, idx_t len, idx_t &pos, Vector &varc
299
299
  return false;
300
300
  }
301
301
 
302
- bool VectorStringToStruct::SplitStruct(string_t &input, vector<unique_ptr<Vector>> &varchar_vectors, idx_t &row_idx,
303
- string_map_t<idx_t> &child_names, vector<ValidityMask *> &child_masks) {
302
+ bool VectorStringToStruct::SplitStruct(const string_t &input, vector<unique_ptr<Vector>> &varchar_vectors,
303
+ idx_t &row_idx, string_map_t<idx_t> &child_names,
304
+ vector<ValidityMask *> &child_masks) {
304
305
  const char *buf = input.GetData();
305
306
  idx_t len = input.GetSize();
306
307
  idx_t pos = 0;
@@ -18,21 +18,18 @@ string PragmaTableInfo(ClientContext &context, const FunctionParameters &paramet
18
18
  }
19
19
 
20
20
  string PragmaShowTables(ClientContext &context, const FunctionParameters &parameters) {
21
- auto catalog = DatabaseManager::GetDefaultDatabase(context);
22
- auto schema = ClientData::Get(context).catalog_search_path->GetDefault().schema;
23
- schema = (schema == INVALID_SCHEMA) ? DEFAULT_SCHEMA : schema; // NOLINT
24
-
25
- auto where_clause = StringUtil::Format("where ((database_name = '%s') and (schema_name = '%s'))", catalog, schema);
26
21
  // clang-format off
27
- auto pragma_query = StringUtil::Format(R"EOF(
22
+ return R"EOF(
28
23
  with "tables" as
29
24
  (
30
25
  SELECT table_name as "name"
31
- FROM duckdb_tables %s
26
+ FROM duckdb_tables
27
+ where in_search_path(database_name, schema_name)
32
28
  ), "views" as
33
29
  (
34
30
  SELECT view_name as "name"
35
- FROM duckdb_views %s
31
+ FROM duckdb_views
32
+ where in_search_path(database_name, schema_name)
36
33
  ), db_objects as
37
34
  (
38
35
  SELECT "name" FROM "tables"
@@ -41,26 +38,39 @@ string PragmaShowTables(ClientContext &context, const FunctionParameters &parame
41
38
  )
42
39
  SELECT "name"
43
40
  FROM db_objects
44
- ORDER BY "name";)EOF", where_clause, where_clause);
41
+ ORDER BY "name";)EOF";
45
42
  // clang-format on
46
-
47
- return pragma_query;
48
43
  }
49
44
 
50
45
  string PragmaShowTablesExpanded(ClientContext &context, const FunctionParameters &parameters) {
51
46
  return R"(
52
- SELECT
53
- t.database_name AS database,
54
- t.schema_name AS schema,
55
- t.table_name,
56
- LIST(c.column_name order by c.column_index) AS column_names,
57
- LIST(c.data_type order by c.column_index) AS column_types,
58
- FIRST(t.temporary) AS temporary,
59
- FROM duckdb_tables t
60
- JOIN duckdb_columns c
61
- USING (table_oid)
62
- GROUP BY t.database_name, t.schema_name, t.table_name
63
- ORDER BY t.database_name, t.schema_name, t.table_name;
47
+ SELECT
48
+ t.database_name AS database,
49
+ t.schema_name AS schema,
50
+ t.table_name AS name,
51
+ LIST(c.column_name order by c.column_index) AS column_names,
52
+ LIST(c.data_type order by c.column_index) AS column_types,
53
+ FIRST(t.temporary) AS temporary,
54
+ FROM duckdb_tables t
55
+ JOIN duckdb_columns c
56
+ USING (table_oid)
57
+ GROUP BY database, schema, name
58
+
59
+ UNION ALL
60
+
61
+ SELECT
62
+ v.database_name AS database,
63
+ v.schema_name AS schema,
64
+ v.view_name AS name,
65
+ LIST(c.column_name order by c.column_index) AS column_names,
66
+ LIST(c.data_type order by c.column_index) AS column_types,
67
+ FIRST(v.temporary) AS temporary,
68
+ FROM duckdb_views v
69
+ JOIN duckdb_columns c
70
+ ON (v.view_oid=c.table_oid)
71
+ GROUP BY database, schema, name
72
+
73
+ ORDER BY database, schema, name
64
74
  )";
65
75
  }
66
76
 
@@ -17,7 +17,7 @@ public:
17
17
  }
18
18
 
19
19
  bool Equals(const FunctionData &other_p) const override {
20
- auto &other = (const ConstantOrNullBindData &)other_p;
20
+ auto &other = other_p.Cast<ConstantOrNullBindData>();
21
21
  return value == other.value;
22
22
  }
23
23
  };
@@ -25,8 +25,8 @@ static void ListConcatFunction(DataChunk &args, ExpressionState &state, Vector &
25
25
  UnifiedVectorFormat rhs_data;
26
26
  lhs.ToUnifiedFormat(count, lhs_data);
27
27
  rhs.ToUnifiedFormat(count, rhs_data);
28
- auto lhs_entries = (list_entry_t *)lhs_data.data;
29
- auto rhs_entries = (list_entry_t *)rhs_data.data;
28
+ auto lhs_entries = UnifiedVectorFormat::GetData<list_entry_t>(lhs_data);
29
+ auto rhs_entries = UnifiedVectorFormat::GetData<list_entry_t>(rhs_data);
30
30
 
31
31
  auto lhs_list_size = ListVector::GetListSize(lhs);
32
32
  auto rhs_list_size = ListVector::GetListSize(rhs);
@@ -32,7 +32,7 @@ void ListExtractTemplate(idx_t count, UnifiedVectorFormat &list_data, UnifiedVec
32
32
 
33
33
  // this is lifted from ExecuteGenericLoop because we can't push the list child data into this otherwise
34
34
  // should have gone with GetValue perhaps
35
- auto child_data = (T *)child_format.data;
35
+ auto child_data = UnifiedVectorFormat::GetData<T>(child_format);
36
36
  for (idx_t i = 0; i < count; i++) {
37
37
  auto list_index = list_data.sel->get_index(i);
38
38
  auto offsets_index = offsets_data.sel->get_index(i);
@@ -44,8 +44,8 @@ void ListExtractTemplate(idx_t count, UnifiedVectorFormat &list_data, UnifiedVec
44
44
  result_mask.SetInvalid(i);
45
45
  continue;
46
46
  }
47
- auto list_entry = ((list_entry_t *)list_data.data)[list_index];
48
- auto offsets_entry = ((int64_t *)offsets_data.data)[offsets_index];
47
+ auto list_entry = (UnifiedVectorFormat::GetData<list_entry_t>(list_data))[list_index];
48
+ auto offsets_entry = (UnifiedVectorFormat::GetData<int64_t>(offsets_data))[offsets_index];
49
49
 
50
50
  // 1-based indexing
51
51
  if (offsets_entry == 0) {
@@ -249,9 +249,8 @@ unique_ptr<FunctionData> BindDecimalAddSubtract(ClientContext &context, ScalarFu
249
249
 
250
250
  static void SerializeDecimalArithmetic(FieldWriter &writer, const FunctionData *bind_data_p,
251
251
  const ScalarFunction &function) {
252
- D_ASSERT(bind_data_p);
253
- auto bind_data = (DecimalArithmeticBindData *)bind_data_p;
254
- writer.WriteField(bind_data->check_overflow);
252
+ auto &bind_data = bind_data_p->Cast<DecimalArithmeticBindData>();
253
+ writer.WriteField(bind_data.check_overflow);
255
254
  writer.WriteSerializable(function.return_type);
256
255
  writer.WriteRegularSerializableList(function.arguments);
257
256
  }
@@ -31,7 +31,7 @@ static void ConcatFunction(DataChunk &args, ExpressionState &state, Vector &resu
31
31
  UnifiedVectorFormat vdata;
32
32
  input.ToUnifiedFormat(args.size(), vdata);
33
33
 
34
- auto input_data = (string_t *)vdata.data;
34
+ auto input_data = UnifiedVectorFormat::GetData<string_t>(vdata);
35
35
  // now add the length of each vector to the result length
36
36
  for (idx_t i = 0; i < args.size(); i++) {
37
37
  auto idx = vdata.sel->get_index(i);
@@ -77,7 +77,7 @@ static void ConcatFunction(DataChunk &args, ExpressionState &state, Vector &resu
77
77
  UnifiedVectorFormat idata;
78
78
  input.ToUnifiedFormat(args.size(), idata);
79
79
 
80
- auto input_data = (string_t *)idata.data;
80
+ auto input_data = UnifiedVectorFormat::GetData<string_t>(idata);
81
81
  for (idx_t i = 0; i < args.size(); i++) {
82
82
  auto idx = idata.sel->get_index(i);
83
83
  if (!idata.validity.RowIsValid(idx)) {
@@ -114,7 +114,7 @@ static void ConcatOperator(DataChunk &args, ExpressionState &state, Vector &resu
114
114
  });
115
115
  }
116
116
 
117
- static void TemplatedConcatWS(DataChunk &args, string_t *sep_data, const SelectionVector &sep_sel,
117
+ static void TemplatedConcatWS(DataChunk &args, const string_t *sep_data, const SelectionVector &sep_sel,
118
118
  const SelectionVector &rsel, idx_t count, Vector &result) {
119
119
  vector<idx_t> result_lengths(args.size(), 0);
120
120
  vector<bool> has_results(args.size(), false);
@@ -127,7 +127,7 @@ static void TemplatedConcatWS(DataChunk &args, string_t *sep_data, const Selecti
127
127
  for (idx_t col_idx = 1; col_idx < args.ColumnCount(); col_idx++) {
128
128
  auto &idata = orrified_data[col_idx - 1];
129
129
 
130
- auto input_data = (string_t *)idata.data;
130
+ auto input_data = UnifiedVectorFormat::GetData<string_t>(idata);
131
131
  for (idx_t i = 0; i < count; i++) {
132
132
  auto ridx = rsel.get_index(i);
133
133
  auto sep_idx = sep_sel.get_index(ridx);
@@ -157,7 +157,7 @@ static void TemplatedConcatWS(DataChunk &args, string_t *sep_data, const Selecti
157
157
  // now that the empty space for the strings has been allocated, perform the concatenation
158
158
  for (idx_t col_idx = 1; col_idx < args.ColumnCount(); col_idx++) {
159
159
  auto &idata = orrified_data[col_idx - 1];
160
- auto input_data = (string_t *)idata.data;
160
+ auto input_data = UnifiedVectorFormat::GetData<string_t>(idata);
161
161
  for (idx_t i = 0; i < count; i++) {
162
162
  auto ridx = rsel.get_index(i);
163
163
  auto sep_idx = sep_sel.get_index(ridx);
@@ -206,7 +206,7 @@ static void ConcatWSFunction(DataChunk &args, ExpressionState &state, Vector &re
206
206
  }
207
207
  // no null values
208
208
  auto sel = FlatVector::IncrementalSelectionVector();
209
- TemplatedConcatWS(args, (string_t *)vdata.data, *vdata.sel, *sel, args.size(), result);
209
+ TemplatedConcatWS(args, UnifiedVectorFormat::GetData<string_t>(vdata), *vdata.sel, *sel, args.size(), result);
210
210
  return;
211
211
  }
212
212
  default: {
@@ -221,7 +221,8 @@ static void ConcatWSFunction(DataChunk &args, ExpressionState &state, Vector &re
221
221
  not_null_vector.set_index(not_null_count++, i);
222
222
  }
223
223
  }
224
- TemplatedConcatWS(args, (string_t *)vdata.data, *vdata.sel, not_null_vector, not_null_count, result);
224
+ TemplatedConcatWS(args, UnifiedVectorFormat::GetData<string_t>(vdata), *vdata.sel, not_null_vector,
225
+ not_null_count, result);
225
226
  return;
226
227
  }
227
228
  }
@@ -106,9 +106,9 @@ idx_t ContainsFun::Find(const unsigned char *haystack, idx_t haystack_size, cons
106
106
  if (location == nullptr) {
107
107
  return DConstants::INVALID_INDEX;
108
108
  }
109
- idx_t base_offset = (const unsigned char *)location - haystack;
109
+ idx_t base_offset = const_uchar_ptr_cast(location) - haystack;
110
110
  haystack_size -= base_offset;
111
- haystack = (const unsigned char *)location;
111
+ haystack = const_uchar_ptr_cast(location);
112
112
  // switch algorithm depending on needle size
113
113
  switch (needle_size) {
114
114
  case 1:
@@ -133,9 +133,9 @@ idx_t ContainsFun::Find(const unsigned char *haystack, idx_t haystack_size, cons
133
133
  }
134
134
 
135
135
  idx_t ContainsFun::Find(const string_t &haystack_s, const string_t &needle_s) {
136
- auto haystack = (const unsigned char *)haystack_s.GetData();
136
+ auto haystack = const_uchar_ptr_cast(haystack_s.GetData());
137
137
  auto haystack_size = haystack_s.GetSize();
138
- auto needle = (const unsigned char *)needle_s.GetData();
138
+ auto needle = const_uchar_ptr_cast(needle_s.GetData());
139
139
  auto needle_size = needle_s.GetSize();
140
140
  if (needle_size == 0) {
141
141
  // empty needle: always true
@@ -78,7 +78,7 @@ struct LikeMatcher : public FunctionData {
78
78
  }
79
79
 
80
80
  bool Match(string_t &str) {
81
- auto str_data = (const unsigned char *)str.GetData();
81
+ auto str_data = const_uchar_ptr_cast(str.GetData());
82
82
  auto str_len = str.GetSize();
83
83
  idx_t segment_idx = 0;
84
84
  idx_t end_idx = segments.size() - 1;
@@ -105,7 +105,7 @@ struct LikeMatcher : public FunctionData {
105
105
  for (; segment_idx < end_idx; segment_idx++) {
106
106
  auto &segment = segments[segment_idx];
107
107
  // find the pattern of the current segment
108
- idx_t next_offset = ContainsFun::Find(str_data, str_len, (const unsigned char *)segment.pattern.c_str(),
108
+ idx_t next_offset = ContainsFun::Find(str_data, str_len, const_uchar_ptr_cast(segment.pattern.c_str()),
109
109
  segment.pattern.size());
110
110
  if (next_offset == DConstants::INVALID_INDEX) {
111
111
  // could not find this pattern in the string: no match
@@ -130,7 +130,7 @@ struct LikeMatcher : public FunctionData {
130
130
  } else {
131
131
  auto &segment = segments.back();
132
132
  // find the pattern of the current segment
133
- idx_t next_offset = ContainsFun::Find(str_data, str_len, (const unsigned char *)segment.pattern.c_str(),
133
+ idx_t next_offset = ContainsFun::Find(str_data, str_len, const_uchar_ptr_cast(segment.pattern.c_str()),
134
134
  segment.pattern.size());
135
135
  return next_offset != DConstants::INVALID_INDEX;
136
136
  }
@@ -179,7 +179,7 @@ struct LikeMatcher : public FunctionData {
179
179
  }
180
180
 
181
181
  bool Equals(const FunctionData &other_p) const override {
182
- auto &other = (const LikeMatcher &)other_p;
182
+ auto &other = other_p.Cast<LikeMatcher>();
183
183
  return like_pattern == other.like_pattern;
184
184
  }
185
185
 
@@ -491,7 +491,7 @@ template <class OP, bool INVERT>
491
491
  static void RegularLikeFunction(DataChunk &input, ExpressionState &state, Vector &result) {
492
492
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
493
493
  if (func_expr.bind_info) {
494
- auto &matcher = (LikeMatcher &)*func_expr.bind_info;
494
+ auto &matcher = func_expr.bind_info->Cast<LikeMatcher>();
495
495
  // use fast like matcher
496
496
  UnaryExecutor::Execute<string_t, bool>(input.data[0], result, input.size(), [&](string_t input) {
497
497
  return INVERT ? !matcher.Match(input) : matcher.Match(input);
@@ -94,7 +94,7 @@ void ExtractSingleTuple(const string_t &string, duckdb_re2::RE2 &pattern, int32_
94
94
  } else {
95
95
  // Every group is a substring of the original, we can find out the offset using the pointer
96
96
  // the 'match_group' address is guaranteed to be bigger than that of the source
97
- D_ASSERT((const char *)match_group.begin() >= string.GetData());
97
+ D_ASSERT(const_char_ptr_cast(match_group.begin()) >= string.GetData());
98
98
  idx_t offset = match_group.begin() - string.GetData();
99
99
  list_content[child_idx] = string_t(string.GetData() + offset, match_group.size());
100
100
  }
@@ -119,7 +119,7 @@ int32_t GetGroupIndex(DataChunk &args, idx_t row, int32_t &result) {
119
119
  if (!format.validity.RowIsValid(index)) {
120
120
  return false;
121
121
  }
122
- result = ((int32_t *)format.data)[index];
122
+ result = UnifiedVectorFormat::GetData<int32_t>(format)[index];
123
123
  return true;
124
124
  }
125
125
 
@@ -188,7 +188,7 @@ void RegexpExtractAll::Execute(DataChunk &args, ExpressionState &state, Vector &
188
188
  if (!pattern_data.validity.RowIsValid(pattern_idx)) {
189
189
  pattern_valid = false;
190
190
  } else {
191
- auto &pattern_p = ((string_t *)pattern_data.data)[pattern_idx];
191
+ auto &pattern_p = UnifiedVectorFormat::GetData<string_t>(pattern_data)[pattern_idx];
192
192
  auto pattern_strpiece = CreateStringPiece(pattern_p);
193
193
  stored_re = make_uniq<duckdb_re2::RE2>(pattern_strpiece, info.options);
194
194
 
@@ -216,7 +216,7 @@ void RegexpExtractAll::Execute(DataChunk &args, ExpressionState &state, Vector &
216
216
 
217
217
  auto &re = GetPattern(info, state, stored_re);
218
218
  auto &groups = GetGroupsBuffer(info, state, non_const_args);
219
- auto &string = ((string_t *)strings_data.data)[string_idx];
219
+ auto &string = UnifiedVectorFormat::GetData<string_t>(strings_data)[string_idx];
220
220
  ExtractSingleTuple(string, re, group_index, groups, result, row);
221
221
  }
222
222
 
@@ -69,9 +69,13 @@ void ParseRegexOptions(ClientContext &context, Expression &expr, RE2::Options &t
69
69
  throw InvalidInputException("Regex options field must be a constant");
70
70
  }
71
71
  Value options_str = ExpressionExecutor::EvaluateScalar(context, expr);
72
- if (!options_str.IsNull() && options_str.type().id() == LogicalTypeId::VARCHAR) {
73
- ParseRegexOptions(StringValue::Get(options_str), target, global_replace);
72
+ if (options_str.IsNull()) {
73
+ throw InvalidInputException("Regex options field must not be NULL");
74
74
  }
75
+ if (options_str.type().id() != LogicalTypeId::VARCHAR) {
76
+ throw InvalidInputException("Regex options field must be a string");
77
+ }
78
+ ParseRegexOptions(StringValue::Get(options_str), target, global_replace);
75
79
  }
76
80
 
77
81
  } // namespace regexp_util
@@ -146,7 +146,7 @@ unique_ptr<FunctionData> RegexpReplaceBindData::Copy() const {
146
146
  }
147
147
 
148
148
  bool RegexpReplaceBindData::Equals(const FunctionData &other_p) const {
149
- auto &other = (const RegexpReplaceBindData &)other_p;
149
+ auto &other = other_p.Cast<RegexpReplaceBindData>();
150
150
  return RegexpBaseBindData::Equals(other) && global_replace == other.global_replace;
151
151
  }
152
152
 
@@ -214,7 +214,7 @@ unique_ptr<FunctionData> RegexpExtractBindData::Copy() const {
214
214
  }
215
215
 
216
216
  bool RegexpExtractBindData::Equals(const FunctionData &other_p) const {
217
- auto &other = (const RegexpExtractBindData &)other_p;
217
+ auto &other = other_p.Cast<RegexpExtractBindData>();
218
218
  return RegexpBaseBindData::Equals(other) && group_string == other.group_string;
219
219
  }
220
220
 
@@ -286,7 +286,7 @@ static void RegexExtractStructFunction(DataChunk &args, ExpressionState &state,
286
286
  input.ToUnifiedFormat(count, iunified);
287
287
 
288
288
  const auto &ivalidity = iunified.validity;
289
- auto idata = (const string_t *)iunified.data;
289
+ auto idata = UnifiedVectorFormat::GetData<string_t>(iunified);
290
290
 
291
291
  // Start with a valid flat vector
292
292
  result.SetVectorType(VectorType::FLAT_VECTOR);
@@ -23,7 +23,7 @@ struct StripAccentsOperator {
23
23
 
24
24
  // non-ascii, perform collation
25
25
  auto stripped = utf8proc_remove_accents((const utf8proc_uint8_t *)input.GetData(), input.GetSize());
26
- auto result_str = StringVector::AddString(result, (const char *)stripped);
26
+ auto result_str = StringVector::AddString(result, const_char_ptr_cast(stripped));
27
27
  free(stripped);
28
28
  return result_str;
29
29
  }
@@ -21,7 +21,7 @@ public:
21
21
  return make_uniq<StructExtractBindData>(key, index, type);
22
22
  }
23
23
  bool Equals(const FunctionData &other_p) const override {
24
- auto &other = (const StructExtractBindData &)other_p;
24
+ auto &other = other_p.Cast<StructExtractBindData>();
25
25
  return key == other.key && index == other.index && type == other.type;
26
26
  }
27
27
  };
@@ -23,7 +23,7 @@ struct ExportAggregateBindData : public FunctionData {
23
23
  }
24
24
 
25
25
  bool Equals(const FunctionData &other_p) const override {
26
- auto &other = (const ExportAggregateBindData &)other_p;
26
+ auto &other = other_p.Cast<ExportAggregateBindData>();
27
27
  return aggr == other.aggr && state_size == other.state_size;
28
28
  }
29
29
 
@@ -42,14 +42,14 @@ struct CombineState : public FunctionLocalState {
42
42
  explicit CombineState(idx_t state_size_p)
43
43
  : state_size(state_size_p), state_buffer0(make_unsafe_uniq_array<data_t>(state_size_p)),
44
44
  state_buffer1(make_unsafe_uniq_array<data_t>(state_size_p)),
45
- state_vector0(Value::POINTER((uintptr_t)state_buffer0.get())),
46
- state_vector1(Value::POINTER((uintptr_t)state_buffer1.get())) {
45
+ state_vector0(Value::POINTER(CastPointerToValue(state_buffer0.get()))),
46
+ state_vector1(Value::POINTER(CastPointerToValue(state_buffer1.get()))) {
47
47
  }
48
48
  };
49
49
 
50
50
  static unique_ptr<FunctionLocalState> InitCombineState(ExpressionState &state, const BoundFunctionExpression &expr,
51
51
  FunctionData *bind_data_p) {
52
- auto &bind_data = *(ExportAggregateBindData *)bind_data_p;
52
+ auto &bind_data = bind_data_p->Cast<ExportAggregateBindData>();
53
53
  return make_uniq<CombineState>(bind_data.state_size);
54
54
  }
55
55
 
@@ -67,13 +67,13 @@ struct FinalizeState : public FunctionLocalState {
67
67
 
68
68
  static unique_ptr<FunctionLocalState> InitFinalizeState(ExpressionState &state, const BoundFunctionExpression &expr,
69
69
  FunctionData *bind_data_p) {
70
- auto &bind_data = *(ExportAggregateBindData *)bind_data_p;
70
+ auto &bind_data = bind_data_p->Cast<ExportAggregateBindData>();
71
71
  return make_uniq<FinalizeState>(bind_data.state_size);
72
72
  }
73
73
 
74
74
  static void AggregateStateFinalize(DataChunk &input, ExpressionState &state_p, Vector &result) {
75
75
  auto &bind_data = ExportAggregateBindData::GetFrom(state_p);
76
- auto &local_state = (FinalizeState &)*((ExecuteFunctionState &)state_p).local_state;
76
+ auto &local_state = ExecuteFunctionState::GetFunctionState(state_p)->Cast<FinalizeState>();
77
77
 
78
78
  D_ASSERT(bind_data.state_size == bind_data.aggr.state_size());
79
79
  D_ASSERT(input.data.size() == 1);
@@ -86,8 +86,8 @@ static void AggregateStateFinalize(DataChunk &input, ExpressionState &state_p, V
86
86
  input.data[0].ToUnifiedFormat(input.size(), state_data);
87
87
  for (idx_t i = 0; i < input.size(); i++) {
88
88
  auto state_idx = state_data.sel->get_index(i);
89
- auto state_entry = &((string_t *)state_data.data)[state_idx];
90
- auto target_ptr = (const char *)local_state.state_buffer.get() + aligned_state_size * i;
89
+ auto state_entry = UnifiedVectorFormat::GetData<string_t>(state_data) + state_idx;
90
+ auto target_ptr = char_ptr_cast(local_state.state_buffer.get()) + aligned_state_size * i;
91
91
 
92
92
  if (state_data.validity.RowIsValid(state_idx)) {
93
93
  D_ASSERT(state_entry->GetSize() == bind_data.state_size);
@@ -95,9 +95,9 @@ static void AggregateStateFinalize(DataChunk &input, ExpressionState &state_p, V
95
95
  } else {
96
96
  // create a dummy state because finalize does not understand NULLs in its input
97
97
  // we put the NULL back in explicitly below
98
- bind_data.aggr.initialize((data_ptr_t)target_ptr);
98
+ bind_data.aggr.initialize(data_ptr_cast(target_ptr));
99
99
  }
100
- state_vec_ptr[i] = (data_ptr_t)target_ptr;
100
+ state_vec_ptr[i] = data_ptr_cast(target_ptr);
101
101
  }
102
102
 
103
103
  AggregateInputData aggr_input_data(nullptr, Allocator::DefaultAllocator());
@@ -113,7 +113,7 @@ static void AggregateStateFinalize(DataChunk &input, ExpressionState &state_p, V
113
113
 
114
114
  static void AggregateStateCombine(DataChunk &input, ExpressionState &state_p, Vector &result) {
115
115
  auto &bind_data = ExportAggregateBindData::GetFrom(state_p);
116
- auto &local_state = (CombineState &)*((ExecuteFunctionState &)state_p).local_state;
116
+ auto &local_state = ExecuteFunctionState::GetFunctionState(state_p)->Cast<CombineState>();
117
117
 
118
118
  D_ASSERT(bind_data.state_size == bind_data.aggr.state_size());
119
119
 
@@ -136,8 +136,8 @@ static void AggregateStateCombine(DataChunk &input, ExpressionState &state_p, Ve
136
136
  auto state0_idx = state0_data.sel->get_index(i);
137
137
  auto state1_idx = state1_data.sel->get_index(i);
138
138
 
139
- auto &state0 = ((string_t *)state0_data.data)[state0_idx];
140
- auto &state1 = ((string_t *)state1_data.data)[state1_idx];
139
+ auto &state0 = UnifiedVectorFormat::GetData<string_t>(state0_data)[state0_idx];
140
+ auto &state1 = UnifiedVectorFormat::GetData<string_t>(state1_data)[state1_idx];
141
141
 
142
142
  // if both are NULL, we return NULL. If either of them is not, the result is that one
143
143
  if (!state0_data.validity.RowIsValid(state0_idx) && !state1_data.validity.RowIsValid(state1_idx)) {
@@ -145,11 +145,13 @@ static void AggregateStateCombine(DataChunk &input, ExpressionState &state_p, Ve
145
145
  continue;
146
146
  }
147
147
  if (state0_data.validity.RowIsValid(state0_idx) && !state1_data.validity.RowIsValid(state1_idx)) {
148
- result_ptr[i] = StringVector::AddStringOrBlob(result, (const char *)state0.GetData(), bind_data.state_size);
148
+ result_ptr[i] =
149
+ StringVector::AddStringOrBlob(result, const_char_ptr_cast(state0.GetData()), bind_data.state_size);
149
150
  continue;
150
151
  }
151
152
  if (!state0_data.validity.RowIsValid(state0_idx) && state1_data.validity.RowIsValid(state1_idx)) {
152
- result_ptr[i] = StringVector::AddStringOrBlob(result, (const char *)state1.GetData(), bind_data.state_size);
153
+ result_ptr[i] =
154
+ StringVector::AddStringOrBlob(result, const_char_ptr_cast(state1.GetData()), bind_data.state_size);
153
155
  continue;
154
156
  }
155
157
 
@@ -165,8 +167,8 @@ static void AggregateStateCombine(DataChunk &input, ExpressionState &state_p, Ve
165
167
  AggregateInputData aggr_input_data(nullptr, Allocator::DefaultAllocator());
166
168
  bind_data.aggr.combine(local_state.state_vector0, local_state.state_vector1, aggr_input_data, 1);
167
169
 
168
- result_ptr[i] =
169
- StringVector::AddStringOrBlob(result, (const char *)local_state.state_buffer1.get(), bind_data.state_size);
170
+ result_ptr[i] = StringVector::AddStringOrBlob(result, const_char_ptr_cast(local_state.state_buffer1.get()),
171
+ bind_data.state_size);
170
172
  }
171
173
  }
172
174
 
@@ -244,19 +246,19 @@ static unique_ptr<FunctionData> BindAggregateState(ClientContext &context, Scala
244
246
  static void ExportAggregateFinalize(Vector &state, AggregateInputData &aggr_input_data, Vector &result, idx_t count,
245
247
  idx_t offset) {
246
248
  D_ASSERT(offset == 0);
247
- auto bind_data = (ExportAggregateFunctionBindData *)aggr_input_data.bind_data;
248
- auto state_size = bind_data->aggregate->function.state_size();
249
+ auto &bind_data = aggr_input_data.bind_data->Cast<ExportAggregateFunctionBindData>();
250
+ auto state_size = bind_data.aggregate->function.state_size();
249
251
  auto blob_ptr = FlatVector::GetData<string_t>(result);
250
252
  auto addresses_ptr = FlatVector::GetData<data_ptr_t>(state);
251
253
  for (idx_t row_idx = 0; row_idx < count; row_idx++) {
252
254
  auto data_ptr = addresses_ptr[row_idx];
253
- blob_ptr[row_idx] = StringVector::AddStringOrBlob(result, (const char *)data_ptr, state_size);
255
+ blob_ptr[row_idx] = StringVector::AddStringOrBlob(result, const_char_ptr_cast(data_ptr), state_size);
254
256
  }
255
257
  }
256
258
 
257
259
  ExportAggregateFunctionBindData::ExportAggregateFunctionBindData(unique_ptr<Expression> aggregate_p) {
258
260
  D_ASSERT(aggregate_p->type == ExpressionType::BOUND_AGGREGATE);
259
- aggregate = unique_ptr<BoundAggregateExpression>((BoundAggregateExpression *)aggregate_p.release());
261
+ aggregate = unique_ptr_cast<Expression, BoundAggregateExpression>(std::move(aggregate_p));
260
262
  }
261
263
 
262
264
  unique_ptr<FunctionData> ExportAggregateFunctionBindData::Copy() const {
@@ -264,8 +266,8 @@ unique_ptr<FunctionData> ExportAggregateFunctionBindData::Copy() const {
264
266
  }
265
267
 
266
268
  bool ExportAggregateFunctionBindData::Equals(const FunctionData &other_p) const {
267
- auto &other = (const ExportAggregateFunctionBindData &)other_p;
268
- return aggregate->Equals(other.aggregate.get());
269
+ auto &other = other_p.Cast<ExportAggregateFunctionBindData>();
270
+ return aggregate->Equals(*other.aggregate);
269
271
  }
270
272
 
271
273
  static void ExportStateAggregateSerialize(FieldWriter &writer, const FunctionData *bind_data_p,