duckdb 0.8.1-dev23.0 → 0.8.1-dev253.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 (596) hide show
  1. package/package.json +1 -1
  2. package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
  3. package/src/duckdb/extension/icu/icu-makedate.cpp +5 -4
  4. package/src/duckdb/extension/json/include/json_common.hpp +1 -1
  5. package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
  6. package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -6
  7. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +1 -1
  8. package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
  9. package/src/duckdb/extension/json/json_functions.cpp +3 -0
  10. package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
  11. package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
  12. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
  13. package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
  14. package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
  15. package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
  16. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
  17. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  18. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  19. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  20. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  21. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  22. package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
  23. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  24. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  25. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  26. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  27. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  28. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  29. package/src/duckdb/src/catalog/catalog.cpp +5 -17
  30. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +113 -0
  31. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +7 -0
  32. package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
  33. package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
  34. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  35. package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
  36. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  37. package/src/duckdb/src/catalog/duck_catalog.cpp +1 -0
  38. package/src/duckdb/src/common/adbc/adbc.cpp +301 -106
  39. package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -22
  40. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  41. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
  42. package/src/duckdb/src/common/checksum.cpp +1 -1
  43. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  44. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  45. package/src/duckdb/src/common/exception.cpp +4 -1
  46. package/src/duckdb/src/common/exception_format_value.cpp +19 -14
  47. package/src/duckdb/src/common/field_writer.cpp +1 -1
  48. package/src/duckdb/src/common/file_system.cpp +15 -2
  49. package/src/duckdb/src/common/fsst.cpp +11 -6
  50. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  51. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  52. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  53. package/src/duckdb/src/common/multi_file_reader.cpp +3 -0
  54. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  55. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  56. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  57. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  58. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  59. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  60. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  61. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  62. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  63. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  64. package/src/duckdb/src/common/serializer.cpp +1 -1
  65. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  66. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  67. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  68. package/src/duckdb/src/common/types/bit.cpp +5 -5
  69. package/src/duckdb/src/common/types/blob.cpp +8 -8
  70. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  71. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  72. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  73. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  74. package/src/duckdb/src/common/types/hash.cpp +2 -2
  75. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  76. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  77. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  78. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
  79. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  80. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +61 -24
  81. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  82. package/src/duckdb/src/common/types/value.cpp +3 -2
  83. package/src/duckdb/src/common/types/vector.cpp +98 -101
  84. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  85. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  86. package/src/duckdb/src/common/types.cpp +44 -33
  87. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  88. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  89. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  90. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  91. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
  92. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
  93. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +32 -36
  94. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
  95. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
  96. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +44 -44
  97. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
  98. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
  99. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
  100. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
  101. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
  102. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
  103. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +36 -37
  104. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
  105. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
  106. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
  107. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +97 -121
  108. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
  109. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  110. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
  111. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
  112. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
  113. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
  114. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
  115. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
  116. package/src/duckdb/src/core_functions/function_list.cpp +1 -0
  117. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  118. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
  119. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  120. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  121. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  122. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  123. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
  124. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
  125. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  126. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
  127. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
  128. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  129. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  130. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  131. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +4 -1
  132. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  133. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
  134. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  135. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  136. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  137. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  138. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  139. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  140. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  141. package/src/duckdb/src/execution/expression_executor.cpp +28 -28
  142. package/src/duckdb/src/execution/index/art/art.cpp +30 -32
  143. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
  144. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  145. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  146. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  147. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  148. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  149. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  150. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  151. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +7 -5
  152. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  153. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
  154. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
  155. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  156. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  157. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  158. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  159. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  160. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  161. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  162. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  163. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  164. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  165. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  166. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  167. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  168. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  169. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
  170. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  171. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  172. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  173. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  174. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  175. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  176. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  177. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  178. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  179. package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
  180. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  181. package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
  182. package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
  183. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
  184. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  185. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  186. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  187. package/src/duckdb/src/function/cast/list_casts.cpp +2 -4
  188. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  189. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  190. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  191. package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
  192. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  193. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  194. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
  195. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
  196. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  197. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  198. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  199. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  200. package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +6 -2
  201. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  202. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  203. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  204. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
  205. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  206. package/src/duckdb/src/function/table/arrow.cpp +6 -6
  207. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  208. package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
  209. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  210. package/src/duckdb/src/function/table/glob.cpp +1 -1
  211. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  212. package/src/duckdb/src/function/table/range.cpp +4 -4
  213. package/src/duckdb/src/function/table/read_csv.cpp +15 -20
  214. package/src/duckdb/src/function/table/repeat.cpp +2 -2
  215. package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
  216. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  217. package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
  218. package/src/duckdb/src/function/table/table_scan.cpp +2 -2
  219. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  220. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  221. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -5
  222. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
  223. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +6 -0
  224. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  225. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
  226. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
  227. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +5 -0
  228. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  229. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  230. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  231. package/src/duckdb/src/include/duckdb/common/exception.hpp +5 -2
  232. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  233. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  234. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  235. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  236. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  237. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  238. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  239. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  240. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  241. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  242. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  243. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  244. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  245. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  246. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  247. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  248. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
  249. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  250. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  251. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  252. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  253. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
  254. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
  255. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
  256. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
  257. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
  258. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
  259. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
  260. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
  261. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
  262. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  263. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -3
  264. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  265. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  266. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  267. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  268. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +8 -29
  269. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
  270. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  271. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  272. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  273. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  274. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  275. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +3 -1
  276. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  277. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  278. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
  279. package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -7
  280. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  281. package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
  282. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  283. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  284. package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
  285. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  286. package/src/duckdb/src/include/duckdb/main/settings.hpp +9 -0
  287. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  288. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  289. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  290. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  291. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  292. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  293. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  294. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  295. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  296. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  297. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  298. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  299. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  300. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  301. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  302. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  303. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  304. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  305. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  306. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  307. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  308. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  309. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  310. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  311. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  312. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  313. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  314. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  315. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  316. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
  318. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  319. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  320. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
  321. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  322. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  323. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  324. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +107 -91
  325. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
  326. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  327. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  328. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
  329. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  330. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  331. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  332. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  333. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  334. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  335. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  336. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  337. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  338. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  339. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  340. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  341. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  342. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  343. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  344. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  345. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  346. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  347. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  348. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
  349. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  350. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  351. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  352. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +7 -2
  353. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +6 -2
  354. package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +4 -0
  355. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +5 -1
  356. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +5 -1
  357. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  358. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +6 -2
  359. package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +4 -0
  360. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  361. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  362. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  363. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  364. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  365. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  366. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  367. package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
  368. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  369. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  370. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  371. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  372. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  373. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  374. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  375. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  376. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  377. package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
  378. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  379. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  380. package/src/duckdb/src/main/capi/config-c.cpp +1 -1
  381. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  382. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  383. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  384. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  385. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  386. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  387. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  388. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  389. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  390. package/src/duckdb/src/main/client_context.cpp +3 -3
  391. package/src/duckdb/src/main/config.cpp +1 -0
  392. package/src/duckdb/src/main/database_manager.cpp +1 -1
  393. package/src/duckdb/src/main/error_manager.cpp +1 -1
  394. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  395. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  396. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  397. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  398. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  399. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  400. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  401. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  402. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  403. package/src/duckdb/src/main/relation.cpp +1 -1
  404. package/src/duckdb/src/main/settings/settings.cpp +22 -6
  405. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  406. package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
  407. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  408. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  409. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  410. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  411. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  412. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  413. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  414. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  415. package/src/duckdb/src/parallel/executor.cpp +1 -1
  416. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  417. package/src/duckdb/src/parser/column_definition.cpp +5 -8
  418. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  419. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  420. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  421. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  422. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  423. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  424. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  425. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  426. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  427. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  428. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  429. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  430. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  431. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  432. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  433. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  434. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  435. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  436. package/src/duckdb/src/parser/parser.cpp +4 -4
  437. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  438. package/src/duckdb/src/parser/query_node.cpp +7 -6
  439. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  440. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  441. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  442. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  443. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  444. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  445. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  446. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  447. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  448. package/src/duckdb/src/parser/tableref.cpp +12 -3
  449. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  450. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  451. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  452. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  453. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  454. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  455. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  456. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  457. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  458. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
  459. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  460. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  461. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  462. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  463. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
  464. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  465. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  466. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  467. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  468. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  469. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  470. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  471. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  472. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  473. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  474. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  475. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  476. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  477. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +3 -4
  478. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  479. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  480. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  481. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  482. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  483. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  484. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  485. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  486. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  487. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  488. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -22
  489. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  490. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  491. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  492. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  493. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  494. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  495. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  496. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  497. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  498. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  499. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  500. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  501. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  502. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  503. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  504. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  505. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  506. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  507. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  508. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  509. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  510. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  511. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
  512. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  513. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  514. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  515. package/src/duckdb/src/parser/transformer.cpp +46 -46
  516. package/src/duckdb/src/planner/bind_context.cpp +9 -10
  517. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
  518. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  519. package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +8 -3
  520. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  521. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  522. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
  523. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  524. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +1 -1
  525. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
  526. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  527. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
  528. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +4 -2
  529. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +17 -7
  530. package/src/duckdb/src/planner/binder.cpp +1 -1
  531. package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
  532. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
  533. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  534. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  535. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  536. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  537. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  538. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  539. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  540. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  541. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  542. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  543. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  544. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  545. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  546. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  547. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  548. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  549. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  550. package/src/duckdb/src/planner/expression.cpp +15 -0
  551. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  552. package/src/duckdb/src/planner/expression_binder.cpp +3 -2
  553. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  554. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  555. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  556. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  557. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  558. package/src/duckdb/src/planner/planner.cpp +5 -15
  559. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  560. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  561. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  562. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  563. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  564. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  565. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  566. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  567. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  568. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  569. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  570. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  571. package/src/duckdb/src/storage/data_table.cpp +8 -7
  572. package/src/duckdb/src/storage/index.cpp +1 -3
  573. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  574. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  575. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  576. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  577. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  578. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  579. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  580. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  581. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  582. package/src/duckdb/src/storage/table/list_column_data.cpp +3 -3
  583. package/src/duckdb/src/storage/table/row_group.cpp +4 -4
  584. package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
  585. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  586. package/src/duckdb/src/storage/wal_replay.cpp +5 -6
  587. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  588. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  589. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  590. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  591. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  592. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  593. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  594. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  595. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +11391 -11442
  596. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
@@ -25,7 +25,14 @@ static unique_ptr<FunctionData> RepeatRowBind(ClientContext &context, TableFunct
25
25
  return_types.push_back(inputs[input_idx].type());
26
26
  names.push_back("column" + std::to_string(input_idx));
27
27
  }
28
- return make_uniq<RepeatRowFunctionData>(inputs, input.named_parameters["num_rows"].GetValue<int64_t>());
28
+ auto entry = input.named_parameters.find("num_rows");
29
+ if (entry == input.named_parameters.end()) {
30
+ throw BinderException("repeat_rows requires num_rows to be specified");
31
+ }
32
+ if (inputs.empty()) {
33
+ throw BinderException("repeat_rows requires at least one column to be specified");
34
+ }
35
+ return make_uniq<RepeatRowFunctionData>(inputs, entry->second.GetValue<int64_t>());
29
36
  }
30
37
 
31
38
  static unique_ptr<GlobalTableFunctionState> RepeatRowInit(ClientContext &context, TableFunctionInitInput &input) {
@@ -33,7 +40,7 @@ static unique_ptr<GlobalTableFunctionState> RepeatRowInit(ClientContext &context
33
40
  }
34
41
 
35
42
  static void RepeatRowFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
36
- auto &bind_data = (const RepeatRowFunctionData &)*data_p.bind_data;
43
+ auto &bind_data = data_p.bind_data->Cast<RepeatRowFunctionData>();
37
44
  auto &state = data_p.global_state->Cast<RepeatRowOperatorData>();
38
45
 
39
46
  idx_t remaining = MinValue<idx_t>(bind_data.target_count - state.current_count, STANDARD_VECTOR_SIZE);
@@ -45,7 +52,7 @@ static void RepeatRowFunction(ClientContext &context, TableFunctionInput &data_p
45
52
  }
46
53
 
47
54
  static unique_ptr<NodeStatistics> RepeatRowCardinality(ClientContext &context, const FunctionData *bind_data_p) {
48
- auto &bind_data = (const RepeatRowFunctionData &)*bind_data_p;
55
+ auto &bind_data = bind_data_p->Cast<RepeatRowFunctionData>();
49
56
  return make_uniq<NodeStatistics>(bind_data.target_count, bind_data.target_count);
50
57
  }
51
58
 
@@ -456,7 +456,7 @@ bool ExtractFunctionData(FunctionEntry &entry, idx_t function_idx, DataChunk &ou
456
456
  }
457
457
 
458
458
  void DuckDBFunctionsFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
459
- auto &data = (DuckDBFunctionsData &)*data_p.global_state;
459
+ auto &data = data_p.global_state->Cast<DuckDBFunctionsData>();
460
460
  if (data.offset >= data.entries.size()) {
461
461
  // finished returning values
462
462
  return;
@@ -233,7 +233,7 @@ unique_ptr<GlobalTableFunctionState> TestVectorTypesInit(ClientContext &context,
233
233
  }
234
234
 
235
235
  void TestVectorTypesFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
236
- auto &data = (TestVectorTypesData &)*data_p.global_state;
236
+ auto &data = data_p.global_state->Cast<TestVectorTypesData>();
237
237
  if (data.offset >= data.entries.size()) {
238
238
  // finished returning values
239
239
  return;
@@ -215,7 +215,7 @@ static unique_ptr<GlobalTableFunctionState> IndexScanInitGlobal(ClientContext &c
215
215
  auto &bind_data = input.bind_data->Cast<TableScanBindData>();
216
216
  data_ptr_t row_id_data = nullptr;
217
217
  if (!bind_data.result_ids.empty()) {
218
- row_id_data = (data_ptr_t)&bind_data.result_ids[0];
218
+ row_id_data = (data_ptr_t)&bind_data.result_ids[0]; // NOLINT - this is not pretty
219
219
  }
220
220
  auto result = make_uniq<IndexScanGlobalState>(row_id_data);
221
221
  auto &local_storage = LocalStorage::Get(context, bind_data.table.catalog);
@@ -350,7 +350,7 @@ void TableScanPushdownComplexFilter(ClientContext &context, LogicalGet &get, Fun
350
350
  } else if (expr.type == ExpressionType::COMPARE_BETWEEN) {
351
351
  // BETWEEN expression
352
352
  auto &between = expr.Cast<BoundBetweenExpression>();
353
- if (!between.input->Equals(index_expression.get())) {
353
+ if (!between.input->Equals(*index_expression)) {
354
354
  // expression doesn't match the current index expression
355
355
  continue;
356
356
  }
@@ -18,7 +18,7 @@ public:
18
18
  }
19
19
 
20
20
  bool Equals(const FunctionData &other_p) const override {
21
- auto &other = (const UnnestBindData &)other_p;
21
+ auto &other = other_p.Cast<UnnestBindData>();
22
22
  return input_type == other.input_type;
23
23
  }
24
24
  };
@@ -1,8 +1,8 @@
1
1
  #ifndef DUCKDB_VERSION
2
- #define DUCKDB_VERSION "0.8.1-dev23"
2
+ #define DUCKDB_VERSION "0.8.1-dev253"
3
3
  #endif
4
4
  #ifndef DUCKDB_SOURCE_ID
5
- #define DUCKDB_SOURCE_ID "950d3d9532"
5
+ #define DUCKDB_SOURCE_ID "0d946c04df"
6
6
  #endif
7
7
  #include "duckdb/function/table/system_functions.hpp"
8
8
  #include "duckdb/main/database.hpp"
@@ -32,7 +32,7 @@ static unique_ptr<GlobalTableFunctionState> PragmaVersionInit(ClientContext &con
32
32
  }
33
33
 
34
34
  static void PragmaVersionFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
35
- auto &data = (PragmaVersionData &)*data_p.global_state;
35
+ auto &data = data_p.global_state->Cast<PragmaVersionData>();
36
36
  if (data.finished) {
37
37
  // finished returning values
38
38
  return;
@@ -229,9 +229,6 @@ public:
229
229
  DUCKDB_API static LogicalType GetType(ClientContext &context, const string &catalog_name, const string &schema,
230
230
  const string &name);
231
231
 
232
- static bool TypeExists(ClientContext &context, const string &catalog_name, const string &schema,
233
- const string &name);
234
-
235
232
  template <class T>
236
233
  optional_ptr<T> GetEntry(ClientContext &context, const string &schema_name, const string &name,
237
234
  OnEntryNotFound if_not_found, QueryErrorContext error_context = QueryErrorContext()) {
@@ -333,13 +330,13 @@ public:
333
330
  template <class TARGET>
334
331
  TARGET &Cast() {
335
332
  D_ASSERT(dynamic_cast<TARGET *>(this));
336
- return (TARGET &)*this;
333
+ return reinterpret_cast<TARGET &>(*this);
337
334
  }
338
335
 
339
336
  template <class TARGET>
340
337
  const TARGET &Cast() const {
341
338
  D_ASSERT(dynamic_cast<const TARGET *>(this));
342
- return (const TARGET &)*this;
339
+ return reinterpret_cast<const TARGET &>(*this);
343
340
  }
344
341
  };
345
342
 
@@ -45,6 +45,8 @@ public:
45
45
  return true;
46
46
  }
47
47
 
48
+ void BindUpdateConstraints(LogicalGet &get, LogicalProjection &proj, LogicalUpdate &update) override;
49
+
48
50
  private:
49
51
  unique_ptr<CatalogEntry> RenameColumn(ClientContext &context, RenameColumnInfo &info);
50
52
  unique_ptr<CatalogEntry> AddColumn(ClientContext &context, AddColumnInfo &info);
@@ -40,6 +40,10 @@ class TableColumnInfo;
40
40
  class TableIndexInfo;
41
41
  class TableStorageInfo;
42
42
 
43
+ class LogicalGet;
44
+ class LogicalProjection;
45
+ class LogicalUpdate;
46
+
43
47
  //! A table catalog entry
44
48
  class TableCatalogEntry : public StandardEntry {
45
49
  public:
@@ -102,6 +106,8 @@ public:
102
106
  //! Returns the storage info of this table
103
107
  virtual TableStorageInfo GetStorageInfo(ClientContext &context) = 0;
104
108
 
109
+ DUCKDB_API virtual void BindUpdateConstraints(LogicalGet &get, LogicalProjection &proj, LogicalUpdate &update);
110
+
105
111
  protected:
106
112
  // This is used to serialize the entry by #Serialize(Serializer& ). It is virtual to allow
107
113
  // Custom catalog implementations to override the default implementation. We can not make
@@ -72,12 +72,12 @@ public:
72
72
  template <class TARGET>
73
73
  TARGET &Cast() {
74
74
  D_ASSERT(dynamic_cast<TARGET *>(this));
75
- return (TARGET &)*this;
75
+ return reinterpret_cast<TARGET &>(*this);
76
76
  }
77
77
  template <class TARGET>
78
78
  const TARGET &Cast() const {
79
79
  D_ASSERT(dynamic_cast<const TARGET *>(this));
80
- return (const TARGET &)*this;
80
+ return reinterpret_cast<const TARGET &>(*this);
81
81
  }
82
82
  };
83
83
 
@@ -35,14 +35,16 @@ private:
35
35
  static string WriteOptionallyQuoted(const string &input);
36
36
  };
37
37
 
38
+ enum class CatalogSetPathType { SET_SCHEMA, SET_SCHEMAS };
39
+
38
40
  //! The schema search path, in order by which entries are searched if no schema entry is provided
39
41
  class CatalogSearchPath {
40
42
  public:
41
43
  DUCKDB_API explicit CatalogSearchPath(ClientContext &client_p);
42
44
  CatalogSearchPath(const CatalogSearchPath &other) = delete;
43
45
 
44
- DUCKDB_API void Set(CatalogSearchEntry new_value, bool is_set_schema);
45
- DUCKDB_API void Set(vector<CatalogSearchEntry> new_paths, bool is_set_schema = false);
46
+ DUCKDB_API void Set(CatalogSearchEntry new_value, CatalogSetPathType set_type);
47
+ DUCKDB_API void Set(vector<CatalogSearchEntry> new_paths, CatalogSetPathType set_type);
46
48
  DUCKDB_API void Reset();
47
49
 
48
50
  DUCKDB_API const vector<CatalogSearchEntry> &Get();
@@ -56,9 +58,13 @@ public:
56
58
  DUCKDB_API vector<string> GetSchemasForCatalog(const string &catalog);
57
59
  DUCKDB_API vector<string> GetCatalogsForSchema(const string &schema);
58
60
 
61
+ DUCKDB_API bool SchemaInSearchPath(ClientContext &context, const string &catalog_name, const string &schema_name);
62
+
59
63
  private:
60
64
  void SetPaths(vector<CatalogSearchEntry> new_paths);
61
65
 
66
+ string GetSetName(CatalogSetPathType set_type);
67
+
62
68
  private:
63
69
  ClientContext &context;
64
70
  vector<CatalogSearchEntry> paths;
@@ -0,0 +1,97 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/catalog/default/builtin_types/types.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+ // This file is generated by scripts/generate_builtin_types.py
9
+
10
+ #pragma once
11
+
12
+ #include "duckdb/common/types.hpp"
13
+ #include "duckdb/common/array.hpp"
14
+
15
+ namespace duckdb {
16
+
17
+ struct DefaultType {
18
+ const char *name;
19
+ LogicalTypeId type;
20
+ };
21
+
22
+ using builtin_type_array = std::array<DefaultType, 70>;
23
+
24
+ static constexpr const builtin_type_array BUILTIN_TYPES{{
25
+ {"decimal", LogicalTypeId::DECIMAL},
26
+ {"dec", LogicalTypeId::DECIMAL},
27
+ {"numeric", LogicalTypeId::DECIMAL},
28
+ {"time", LogicalTypeId::TIME},
29
+ {"date", LogicalTypeId::DATE},
30
+ {"timestamp", LogicalTypeId::TIMESTAMP},
31
+ {"datetime", LogicalTypeId::TIMESTAMP},
32
+ {"timestamp_us", LogicalTypeId::TIMESTAMP},
33
+ {"timestamp_ms", LogicalTypeId::TIMESTAMP_MS},
34
+ {"timestamp_ns", LogicalTypeId::TIMESTAMP_NS},
35
+ {"timestamp_s", LogicalTypeId::TIMESTAMP_SEC},
36
+ {"timestamptz", LogicalTypeId::TIMESTAMP_TZ},
37
+ {"timetz", LogicalTypeId::TIME_TZ},
38
+ {"interval", LogicalTypeId::INTERVAL},
39
+ {"varchar", LogicalTypeId::VARCHAR},
40
+ {"bpchar", LogicalTypeId::VARCHAR},
41
+ {"string", LogicalTypeId::VARCHAR},
42
+ {"char", LogicalTypeId::VARCHAR},
43
+ {"nvarchar", LogicalTypeId::VARCHAR},
44
+ {"text", LogicalTypeId::VARCHAR},
45
+ {"blob", LogicalTypeId::BLOB},
46
+ {"bytea", LogicalTypeId::BLOB},
47
+ {"varbinary", LogicalTypeId::BLOB},
48
+ {"binary", LogicalTypeId::BLOB},
49
+ {"hugeint", LogicalTypeId::HUGEINT},
50
+ {"int128", LogicalTypeId::HUGEINT},
51
+ {"bigint", LogicalTypeId::BIGINT},
52
+ {"oid", LogicalTypeId::BIGINT},
53
+ {"long", LogicalTypeId::BIGINT},
54
+ {"int8", LogicalTypeId::BIGINT},
55
+ {"int64", LogicalTypeId::BIGINT},
56
+ {"ubigint", LogicalTypeId::UBIGINT},
57
+ {"uint64", LogicalTypeId::UBIGINT},
58
+ {"integer", LogicalTypeId::INTEGER},
59
+ {"int", LogicalTypeId::INTEGER},
60
+ {"int4", LogicalTypeId::INTEGER},
61
+ {"signed", LogicalTypeId::INTEGER},
62
+ {"integral", LogicalTypeId::INTEGER},
63
+ {"int32", LogicalTypeId::INTEGER},
64
+ {"uinteger", LogicalTypeId::UINTEGER},
65
+ {"uint32", LogicalTypeId::UINTEGER},
66
+ {"smallint", LogicalTypeId::SMALLINT},
67
+ {"int2", LogicalTypeId::SMALLINT},
68
+ {"short", LogicalTypeId::SMALLINT},
69
+ {"int16", LogicalTypeId::SMALLINT},
70
+ {"usmallint", LogicalTypeId::USMALLINT},
71
+ {"uint16", LogicalTypeId::USMALLINT},
72
+ {"tinyint", LogicalTypeId::TINYINT},
73
+ {"int1", LogicalTypeId::TINYINT},
74
+ {"utinyint", LogicalTypeId::UTINYINT},
75
+ {"uint8", LogicalTypeId::UTINYINT},
76
+ {"struct", LogicalTypeId::STRUCT},
77
+ {"row", LogicalTypeId::STRUCT},
78
+ {"list", LogicalTypeId::LIST},
79
+ {"map", LogicalTypeId::MAP},
80
+ {"union", LogicalTypeId::UNION},
81
+ {"bit", LogicalTypeId::BIT},
82
+ {"bitstring", LogicalTypeId::BIT},
83
+ {"boolean", LogicalTypeId::BOOLEAN},
84
+ {"bool", LogicalTypeId::BOOLEAN},
85
+ {"logical", LogicalTypeId::BOOLEAN},
86
+ {"uuid", LogicalTypeId::UUID},
87
+ {"guid", LogicalTypeId::UUID},
88
+ {"enum", LogicalTypeId::ENUM},
89
+ {"null", LogicalTypeId::SQLNULL},
90
+ {"float", LogicalTypeId::FLOAT},
91
+ {"real", LogicalTypeId::FLOAT},
92
+ {"float4", LogicalTypeId::FLOAT},
93
+ {"double", LogicalTypeId::DOUBLE},
94
+ {"float8", LogicalTypeId::DOUBLE}
95
+ }};
96
+
97
+ } // namespace duckdb
@@ -10,6 +10,8 @@
10
10
 
11
11
  #include "duckdb/common/adbc/adbc.h"
12
12
 
13
+ #include <string>
14
+
13
15
  namespace duckdb_adbc {
14
16
 
15
17
  AdbcStatusCode DatabaseNew(struct AdbcDatabase *database, struct AdbcError *error);
@@ -82,4 +84,7 @@ AdbcStatusCode StatementExecutePartitions(struct AdbcStatement *statement, struc
82
84
  struct AdbcPartitions *partitions, int64_t *rows_affected,
83
85
  struct AdbcError *error);
84
86
 
87
+ void SetError(struct AdbcError *error, const std::string &message);
88
+
89
+ void InitiliazeADBCError(AdbcError *error);
85
90
  } // namespace duckdb_adbc
@@ -26,6 +26,17 @@ struct PrivateAllocatorData {
26
26
  virtual ~PrivateAllocatorData();
27
27
 
28
28
  unique_ptr<AllocatorDebugInfo> debug_info;
29
+
30
+ template <class TARGET>
31
+ TARGET &Cast() {
32
+ D_ASSERT(dynamic_cast<TARGET *>(this));
33
+ return reinterpret_cast<TARGET &>(*this);
34
+ }
35
+ template <class TARGET>
36
+ const TARGET &Cast() const {
37
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
38
+ return reinterpret_cast<const TARGET &>(*this);
39
+ }
29
40
  };
30
41
 
31
42
  typedef data_ptr_t (*allocate_function_ptr_t)(PrivateAllocatorData *private_data, idx_t size);
@@ -85,14 +96,14 @@ public:
85
96
  return AllocatedData(*this, AllocateData(size), size);
86
97
  }
87
98
  static data_ptr_t DefaultAllocate(PrivateAllocatorData *private_data, idx_t size) {
88
- return (data_ptr_t)malloc(size);
99
+ return data_ptr_cast(malloc(size));
89
100
  }
90
101
  static void DefaultFree(PrivateAllocatorData *private_data, data_ptr_t pointer, idx_t size) {
91
102
  free(pointer);
92
103
  }
93
104
  static data_ptr_t DefaultReallocate(PrivateAllocatorData *private_data, data_ptr_t pointer, idx_t old_size,
94
105
  idx_t size) {
95
- return (data_ptr_t)realloc(pointer, size);
106
+ return data_ptr_cast(realloc(pointer, size));
96
107
  }
97
108
  static Allocator &Get(ClientContext &context);
98
109
  static Allocator &Get(DatabaseInstance &db);
@@ -120,7 +131,7 @@ T *AllocateArray(idx_t size) {
120
131
 
121
132
  template <class T>
122
133
  void DeleteArray(T *ptr, idx_t size) {
123
- Allocator::DefaultAllocator().FreeData((data_ptr_t)ptr, size * sizeof(T));
134
+ Allocator::DefaultAllocator().FreeData(data_ptr_cast(ptr), size * sizeof(T));
124
135
  }
125
136
 
126
137
  template <typename T, typename... ARGS>
@@ -132,7 +143,7 @@ T *AllocateObject(ARGS &&... args) {
132
143
  template <typename T>
133
144
  void DestroyObject(T *ptr) {
134
145
  ptr->~T();
135
- Allocator::DefaultAllocator().FreeData((data_ptr_t)ptr, sizeof(T));
146
+ Allocator::DefaultAllocator().FreeData(data_ptr_cast(ptr), sizeof(T));
136
147
  }
137
148
 
138
149
  //! The BufferAllocator is a wrapper around the global allocator class that sends any allocations made through the
@@ -73,12 +73,17 @@ struct ArrowBuffer {
73
73
  return dataptr;
74
74
  }
75
75
 
76
+ template <class T>
77
+ T *GetData() {
78
+ return reinterpret_cast<T *>(data());
79
+ }
80
+
76
81
  private:
77
82
  void ReserveInternal(idx_t bytes) {
78
83
  if (dataptr) {
79
- dataptr = (data_ptr_t)realloc(dataptr, bytes);
84
+ dataptr = data_ptr_cast(realloc(dataptr, bytes));
80
85
  } else {
81
- dataptr = (data_ptr_t)malloc(bytes);
86
+ dataptr = data_ptr_cast(malloc(bytes));
82
87
  }
83
88
  capacity = bytes;
84
89
  }
@@ -26,10 +26,10 @@ public:
26
26
  }
27
27
  void Add(const char *data);
28
28
  void Add(string_t string) {
29
- MD5Update((const_data_ptr_t)string.GetData(), string.GetSize());
29
+ MD5Update(const_data_ptr_cast(string.GetData()), string.GetSize());
30
30
  }
31
31
  void Add(const string &data) {
32
- MD5Update((const_data_ptr_t)data.c_str(), data.size());
32
+ MD5Update(const_data_ptr_cast(data.c_str()), data.size());
33
33
  }
34
34
 
35
35
  //! Write the 16-byte (binary) digest to the specified location
@@ -22,8 +22,8 @@ enum class PhysicalType : uint8_t;
22
22
  struct LogicalType;
23
23
  struct hugeint_t;
24
24
 
25
- inline void assert_restrict_function(void *left_start, void *left_end, void *right_start, void *right_end,
26
- const char *fname, int linenr) {
25
+ inline void assert_restrict_function(const void *left_start, const void *left_end, const void *right_start,
26
+ const void *right_end, const char *fname, int linenr) {
27
27
  // assert that the two pointers do not overlap
28
28
  #ifdef DEBUG
29
29
  if (!(left_end <= right_start || right_end <= left_start)) {
@@ -105,6 +105,9 @@ public:
105
105
 
106
106
  template <typename... Args>
107
107
  static string ConstructMessage(const string &msg, Args... params) {
108
+ const std::size_t num_args = sizeof...(Args);
109
+ if (num_args == 0)
110
+ return msg;
108
111
  std::vector<ExceptionFormatValue> values;
109
112
  return ConstructMessageRecursive(msg, values, params...);
110
113
  }
@@ -34,12 +34,12 @@ public:
34
34
  static_assert(std::is_trivially_destructible<T>(), "WriteField object must be trivially destructible");
35
35
 
36
36
  AddField();
37
- WriteData((const_data_ptr_t)&element, sizeof(T));
37
+ WriteData(const_data_ptr_cast(&element), sizeof(T));
38
38
  }
39
39
 
40
40
  //! Write a string with a length prefix
41
41
  void WriteString(const string &val) {
42
- WriteStringLen((const_data_ptr_t)val.c_str(), val.size());
42
+ WriteStringLen(const_data_ptr_cast(val.c_str()), val.size());
43
43
  }
44
44
  void WriteStringLen(const_data_ptr_t val, idx_t len) {
45
45
  AddField();
@@ -135,7 +135,7 @@ public:
135
135
  private:
136
136
  template <class T>
137
137
  void Write(const T &element) {
138
- WriteData((const_data_ptr_t)&element, sizeof(T));
138
+ WriteData(const_data_ptr_cast(&element), sizeof(T));
139
139
  }
140
140
 
141
141
  DUCKDB_API void WriteData(const_data_ptr_t buffer, idx_t write_size);
@@ -77,6 +77,17 @@ public:
77
77
  return path;
78
78
  }
79
79
 
80
+ template <class TARGET>
81
+ TARGET &Cast() {
82
+ D_ASSERT(dynamic_cast<TARGET *>(this));
83
+ return reinterpret_cast<TARGET &>(*this);
84
+ }
85
+ template <class TARGET>
86
+ const TARGET &Cast() const {
87
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
88
+ return reinterpret_cast<const TARGET &>(*this);
89
+ }
90
+
80
91
  public:
81
92
  FileSystem &file_system;
82
93
  string path;
@@ -12,9 +12,8 @@ namespace duckdb {
12
12
 
13
13
  class FSSTPrimitives {
14
14
  public:
15
- static string_t DecompressValue(void *duckdb_fsst_decoder, Vector &result, unsigned char *compressed_string,
15
+ static string_t DecompressValue(void *duckdb_fsst_decoder, Vector &result, const char *compressed_string,
16
16
  idx_t compressed_string_len);
17
- static Value DecompressValue(void *duckdb_fsst_decoder, unsigned char *compressed_string,
18
- idx_t compressed_string_len);
17
+ static Value DecompressValue(void *duckdb_fsst_decoder, const char *compressed_string, idx_t compressed_string_len);
19
18
  };
20
19
  } // namespace duckdb
@@ -36,7 +36,7 @@ struct Radix {
36
36
  public:
37
37
  static inline bool IsLittleEndian() {
38
38
  int n = 1;
39
- if (*(char *)&n == 1) {
39
+ if (*char_ptr_cast(&n) == 1) {
40
40
  return true;
41
41
  } else {
42
42
  return false;
@@ -81,7 +81,7 @@ public:
81
81
  if (x < -FLT_MAX) {
82
82
  return 0;
83
83
  }
84
- buff = Load<uint32_t>((const_data_ptr_t)&x);
84
+ buff = Load<uint32_t>(const_data_ptr_cast(&x));
85
85
  if ((buff & (1u << 31)) == 0) { //! +0 and positive numbers
86
86
  buff |= (1u << 31);
87
87
  } else { //! negative numbers
@@ -111,7 +111,7 @@ public:
111
111
  if (x < -DBL_MAX) {
112
112
  return 0;
113
113
  }
114
- buff = Load<uint64_t>((const_data_ptr_t)&x);
114
+ buff = Load<uint64_t>(const_data_ptr_cast(&x));
115
115
  if (buff < (1ull << 63)) { //! +0 and positive numbers
116
116
  buff += (1ull << 63);
117
117
  } else { //! negative numbers
@@ -35,7 +35,7 @@ private:
35
35
  template <class T>
36
36
  T ReadPrimitive() {
37
37
  T value;
38
- ReadData((data_ptr_t)&value, sizeof(T));
38
+ ReadData(data_ptr_cast(&value), sizeof(T));
39
39
  return value;
40
40
  }
41
41
 
@@ -24,12 +24,15 @@ private:
24
24
  template <class T>
25
25
  void Write(T element) {
26
26
  static_assert(std::is_trivially_destructible<T>(), "Write element must be trivially destructible");
27
- WriteData((const_data_ptr_t)&element, sizeof(T));
27
+ WriteData(const_data_ptr_cast(&element), sizeof(T));
28
28
  }
29
29
  void WriteData(const_data_ptr_t buffer, idx_t write_size) {
30
30
  data.insert(data.end(), buffer, buffer + write_size);
31
31
  stack.back().size += write_size;
32
32
  }
33
+ void WriteData(const char *ptr, idx_t write_size) {
34
+ WriteData(const_data_ptr_cast(ptr), write_size);
35
+ }
33
36
 
34
37
  explicit BinarySerializer() {
35
38
  serialize_enum_as_string = false;
@@ -46,16 +46,16 @@ public:
46
46
  void Write(T element) {
47
47
  static_assert(std::is_trivially_destructible<T>(), "Write element must be trivially destructible");
48
48
 
49
- WriteData((const_data_ptr_t)&element, sizeof(T));
49
+ WriteData(const_data_ptr_cast(&element), sizeof(T));
50
50
  }
51
51
 
52
52
  //! Write data from a string buffer directly (without length prefix)
53
53
  void WriteBufferData(const string &str) {
54
- WriteData((const_data_ptr_t)str.c_str(), str.size());
54
+ WriteData(const_data_ptr_cast(str.c_str()), str.size());
55
55
  }
56
56
  //! Write a string with a length prefix
57
57
  void WriteString(const string &val) {
58
- WriteStringLen((const_data_ptr_t)val.c_str(), val.size());
58
+ WriteStringLen(const_data_ptr_cast(val.c_str()), val.size());
59
59
  }
60
60
  void WriteStringLen(const_data_ptr_t val, idx_t len) {
61
61
  Write<uint32_t>((uint32_t)len);
@@ -127,7 +127,7 @@ public:
127
127
  template <class T>
128
128
  T Read() {
129
129
  T value;
130
- ReadData((data_ptr_t)&value, sizeof(T));
130
+ ReadData(data_ptr_cast(&value), sizeof(T));
131
131
  return value;
132
132
  }
133
133
 
@@ -28,4 +28,34 @@ typedef idx_t column_t;
28
28
  //! Type used for storage (column) identifiers
29
29
  typedef idx_t storage_t;
30
30
 
31
+ template <class SRC>
32
+ data_ptr_t data_ptr_cast(SRC *src) {
33
+ return reinterpret_cast<data_ptr_t>(src);
34
+ }
35
+
36
+ template <class SRC>
37
+ const_data_ptr_t const_data_ptr_cast(const SRC *src) {
38
+ return reinterpret_cast<const_data_ptr_t>(src);
39
+ }
40
+
41
+ template <class SRC>
42
+ char *char_ptr_cast(SRC *src) {
43
+ return reinterpret_cast<char *>(src);
44
+ }
45
+
46
+ template <class SRC>
47
+ const char *const_char_ptr_cast(const SRC *src) {
48
+ return reinterpret_cast<const char *>(src);
49
+ }
50
+
51
+ template <class SRC>
52
+ const unsigned char *const_uchar_ptr_cast(const SRC *src) {
53
+ return reinterpret_cast<const unsigned char *>(src);
54
+ }
55
+
56
+ template <class SRC>
57
+ uintptr_t CastPointerToValue(SRC *src) {
58
+ return uintptr_t(src);
59
+ }
60
+
31
61
  } // namespace duckdb
@@ -108,6 +108,18 @@ protected:
108
108
  mutex lock;
109
109
  shared_ptr<PartitionColumnDataAllocators> allocators;
110
110
  vector<unique_ptr<ColumnDataCollection>> partitions;
111
+
112
+ public:
113
+ template <class TARGET>
114
+ TARGET &Cast() {
115
+ D_ASSERT(dynamic_cast<TARGET *>(this));
116
+ return reinterpret_cast<TARGET &>(*this);
117
+ }
118
+ template <class TARGET>
119
+ const TARGET &Cast() const {
120
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
121
+ return reinterpret_cast<const TARGET &>(*this);
122
+ }
111
123
  };
112
124
 
113
125
  } // namespace duckdb
@@ -12,6 +12,10 @@
12
12
  #include "duckdb/common/types/vector.hpp"
13
13
  #include "hyperloglog.hpp"
14
14
 
15
+ namespace duckdb_hll {
16
+ struct robj;
17
+ }
18
+
15
19
  namespace duckdb {
16
20
 
17
21
  enum class HLLStorageType { UNCOMPRESSED = 1 };
@@ -58,9 +62,9 @@ public:
58
62
  void AddToLog(UnifiedVectorFormat &vdata, idx_t count, uint64_t indices[], uint8_t counts[]);
59
63
 
60
64
  private:
61
- explicit HyperLogLog(void *hll);
65
+ explicit HyperLogLog(duckdb_hll::robj *hll);
62
66
 
63
- void *hll;
67
+ duckdb_hll::robj *hll;
64
68
  mutex lock;
65
69
  };
66
70
  } // namespace duckdb