duckdb 0.8.1-dev31.0 → 0.8.1-dev341.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 (636) 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 +25 -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/timestamp.cpp +37 -1
  91. package/src/duckdb/src/common/types/value.cpp +3 -2
  92. package/src/duckdb/src/common/types/vector.cpp +98 -101
  93. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  94. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  95. package/src/duckdb/src/common/types.cpp +44 -33
  96. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  97. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  98. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  99. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  100. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
  101. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
  102. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +32 -36
  103. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
  104. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
  105. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +44 -44
  106. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
  107. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
  108. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
  109. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
  110. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
  111. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
  112. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +36 -37
  113. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
  114. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
  115. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
  116. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +115 -133
  117. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
  118. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  119. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
  120. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
  121. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
  122. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
  123. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
  124. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
  125. package/src/duckdb/src/core_functions/function_list.cpp +1 -0
  126. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  127. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
  128. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  129. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  130. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  131. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  132. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
  133. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
  134. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  135. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
  136. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
  137. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  138. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  139. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  140. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +4 -1
  141. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  142. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
  143. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  144. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  145. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  146. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  147. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  148. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  149. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  150. package/src/duckdb/src/execution/expression_executor.cpp +28 -28
  151. package/src/duckdb/src/execution/index/art/art.cpp +110 -39
  152. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +23 -5
  153. package/src/duckdb/src/execution/index/art/leaf.cpp +10 -11
  154. package/src/duckdb/src/execution/index/art/leaf_segment.cpp +10 -0
  155. package/src/duckdb/src/execution/index/art/node.cpp +47 -35
  156. package/src/duckdb/src/execution/index/art/node16.cpp +3 -0
  157. package/src/duckdb/src/execution/index/art/node256.cpp +1 -0
  158. package/src/duckdb/src/execution/index/art/node4.cpp +3 -0
  159. package/src/duckdb/src/execution/index/art/node48.cpp +2 -0
  160. package/src/duckdb/src/execution/index/art/prefix.cpp +2 -0
  161. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  162. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  163. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  164. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  165. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  166. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  167. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  168. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +26 -9
  169. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  170. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
  171. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
  172. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  173. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  174. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  175. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  176. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  177. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  178. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  179. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  180. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  181. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  182. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  183. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  184. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  185. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  186. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
  187. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  188. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  189. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  190. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +29 -3
  191. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  192. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  193. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  194. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  195. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  196. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  197. package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
  198. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  199. package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
  200. package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
  201. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
  202. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  203. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  204. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  205. package/src/duckdb/src/function/cast/list_casts.cpp +2 -4
  206. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  207. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  208. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  209. package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
  210. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  211. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  212. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
  213. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
  214. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  215. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  216. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  217. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  218. package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +6 -2
  219. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  220. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  221. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  222. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
  223. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  224. package/src/duckdb/src/function/table/arrow.cpp +6 -6
  225. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  226. package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
  227. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  228. package/src/duckdb/src/function/table/glob.cpp +1 -1
  229. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  230. package/src/duckdb/src/function/table/range.cpp +4 -4
  231. package/src/duckdb/src/function/table/read_csv.cpp +17 -20
  232. package/src/duckdb/src/function/table/repeat.cpp +5 -2
  233. package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
  234. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  235. package/src/duckdb/src/function/table/system/test_vector_types.cpp +82 -26
  236. package/src/duckdb/src/function/table/table_scan.cpp +2 -2
  237. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  238. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  239. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -5
  240. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
  241. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +6 -0
  242. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  243. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
  244. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
  245. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +5 -0
  246. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  247. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  248. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  249. package/src/duckdb/src/include/duckdb/common/exception.hpp +5 -2
  250. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  251. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  252. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  253. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  254. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  255. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  256. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  257. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  258. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  259. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  260. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  261. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  262. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  263. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +4 -14
  264. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  265. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  266. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  267. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
  268. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  269. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  270. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  271. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  272. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
  273. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
  274. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
  275. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
  276. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
  277. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
  278. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
  279. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
  280. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
  281. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  282. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +13 -7
  283. package/src/duckdb/src/include/duckdb/execution/index/art/fixed_size_allocator.hpp +3 -0
  284. package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +1 -1
  285. package/src/duckdb/src/include/duckdb/execution/index/art/leaf_segment.hpp +2 -0
  286. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +13 -3
  287. package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +1 -0
  288. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  289. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  290. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  291. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  292. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +8 -29
  293. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
  294. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  295. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  296. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  297. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  298. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  299. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +3 -1
  300. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  301. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  302. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
  303. package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -7
  304. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  305. package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
  306. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  307. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  308. package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
  309. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  310. package/src/duckdb/src/include/duckdb/main/settings.hpp +9 -0
  311. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  312. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  313. package/src/duckdb/src/include/duckdb/optimizer/unnest_rewriter.hpp +4 -0
  314. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  315. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  316. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  318. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  319. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  320. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  321. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  322. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  323. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  324. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  325. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  326. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  327. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  328. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  329. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  330. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  331. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  332. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  333. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  334. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  335. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  336. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  337. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  338. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  339. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  340. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  341. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  342. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
  343. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  344. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  345. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
  346. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  347. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  348. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  349. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +106 -92
  350. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
  351. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  352. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  353. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
  354. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  355. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  356. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  357. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  358. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  359. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  360. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  361. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  362. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  363. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  364. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  365. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  366. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  367. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  368. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  369. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  370. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  371. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  372. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  373. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
  374. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  375. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  376. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  377. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +7 -2
  378. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +6 -2
  379. package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +4 -0
  380. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +5 -1
  381. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +5 -1
  382. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  383. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +6 -2
  384. package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +4 -0
  385. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  386. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  387. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  388. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/byte_reader.hpp +4 -0
  389. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  390. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  391. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  392. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  393. package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +13 -13
  394. package/src/duckdb/src/include/duckdb/storage/index.hpp +6 -4
  395. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  396. package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +0 -6
  397. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  398. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  399. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  400. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  401. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  402. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  403. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  404. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  405. package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
  406. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  407. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  408. package/src/duckdb/src/main/capi/config-c.cpp +3 -6
  409. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  410. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  411. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  412. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  413. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  414. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  415. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  416. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  417. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  418. package/src/duckdb/src/main/client_context.cpp +3 -3
  419. package/src/duckdb/src/main/config.cpp +1 -0
  420. package/src/duckdb/src/main/database_manager.cpp +1 -1
  421. package/src/duckdb/src/main/error_manager.cpp +1 -1
  422. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  423. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  424. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  425. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  426. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  427. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  428. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  429. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  430. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  431. package/src/duckdb/src/main/relation.cpp +1 -1
  432. package/src/duckdb/src/main/settings/settings.cpp +22 -6
  433. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  434. package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
  435. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  436. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  437. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  438. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  439. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  440. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  441. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  442. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  443. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +27 -16
  444. package/src/duckdb/src/parallel/executor.cpp +1 -1
  445. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  446. package/src/duckdb/src/parser/column_definition.cpp +5 -8
  447. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  448. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  449. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  450. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  451. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  452. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  453. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  454. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  455. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  456. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  457. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  458. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  459. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  460. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  461. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  462. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  463. package/src/duckdb/src/parser/parsed_data/create_info.cpp +0 -3
  464. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  465. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  466. package/src/duckdb/src/parser/parser.cpp +4 -4
  467. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  468. package/src/duckdb/src/parser/query_node.cpp +7 -6
  469. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  470. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  471. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  472. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  473. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  474. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  475. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  476. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  477. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  478. package/src/duckdb/src/parser/tableref.cpp +12 -3
  479. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  480. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  481. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  482. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  483. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  484. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  485. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  486. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  487. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  488. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
  489. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  490. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  491. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  492. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  493. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
  494. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  495. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  496. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  497. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +0 -2
  498. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  499. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  500. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  501. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  502. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  503. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  504. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  505. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  506. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  507. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  508. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  509. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  510. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  511. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  512. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  513. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  514. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  515. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  516. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  517. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  518. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -25
  519. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  520. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  521. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  522. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  523. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  524. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  525. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  526. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  527. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  528. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  529. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  530. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  531. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  532. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  533. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  534. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  535. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  536. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  537. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  538. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  539. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  540. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  541. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
  542. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  543. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  544. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  545. package/src/duckdb/src/parser/transformer.cpp +45 -47
  546. package/src/duckdb/src/planner/bind_context.cpp +9 -10
  547. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
  548. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  549. package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +8 -3
  550. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  551. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  552. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
  553. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  554. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +1 -28
  555. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
  556. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +0 -25
  557. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  558. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
  559. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +4 -2
  560. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +5 -2
  561. package/src/duckdb/src/planner/binder.cpp +1 -1
  562. package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
  563. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
  564. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  565. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  566. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  567. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  568. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  569. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  570. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  571. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  572. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  573. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  574. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  575. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  576. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  577. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  578. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  579. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  580. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  581. package/src/duckdb/src/planner/expression.cpp +15 -0
  582. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  583. package/src/duckdb/src/planner/expression_binder.cpp +3 -2
  584. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  585. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  586. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  587. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  588. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  589. package/src/duckdb/src/planner/operator/logical_pivot.cpp +14 -2
  590. package/src/duckdb/src/planner/planner.cpp +5 -15
  591. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  592. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  593. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  594. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  595. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  596. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  597. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  598. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  599. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  600. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  601. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  602. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  603. package/src/duckdb/src/storage/data_table.cpp +8 -7
  604. package/src/duckdb/src/storage/index.cpp +14 -3
  605. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  606. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  607. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  608. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  609. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  610. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  611. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  612. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  613. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  614. package/src/duckdb/src/storage/table/list_column_data.cpp +3 -3
  615. package/src/duckdb/src/storage/table/row_group.cpp +4 -4
  616. package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
  617. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  618. package/src/duckdb/src/storage/wal_replay.cpp +5 -6
  619. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  620. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  621. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  622. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  623. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  624. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  625. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  626. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  627. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +0 -1
  628. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +0 -14
  629. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12828 -12956
  630. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
  631. package/src/duckdb/third_party/zstd/compress/zstd_compress.cpp +3 -0
  632. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_cwksp.h +4 -0
  633. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
  634. package/src/duckdb/ub_src_parser_transform_statement.cpp +0 -2
  635. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_database_info.hpp +0 -46
  636. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +0 -28
@@ -28,7 +28,7 @@ struct SortedAggregateBindData : public FunctionData {
28
28
  }
29
29
  sorted_on_args = (children.size() == order_bys.orders.size());
30
30
  for (size_t i = 0; sorted_on_args && i < children.size(); ++i) {
31
- sorted_on_args = children[i]->Equals(order_bys.orders[i].expression.get());
31
+ sorted_on_args = children[i]->Equals(*order_bys.orders[i].expression);
32
32
  }
33
33
  }
34
34
 
@@ -49,7 +49,7 @@ struct SortedAggregateBindData : public FunctionData {
49
49
  }
50
50
 
51
51
  bool Equals(const FunctionData &other_p) const override {
52
- auto &other = (const SortedAggregateBindData &)other_p;
52
+ auto &other = other_p.Cast<SortedAggregateBindData>();
53
53
  if (bind_info && other.bind_info) {
54
54
  if (!bind_info->Equals(*other.bind_info)) {
55
55
  return false;
@@ -253,13 +253,13 @@ struct SortedAggregateState {
253
253
 
254
254
  struct SortedAggregateFunction {
255
255
  template <typename STATE>
256
- static void Initialize(STATE *state) {
257
- new (state) STATE();
256
+ static void Initialize(STATE &state) {
257
+ new (&state) STATE();
258
258
  }
259
259
 
260
260
  template <typename STATE>
261
- static void Destroy(AggregateInputData &aggr_input_data, STATE *state) {
262
- state->~STATE();
261
+ static void Destroy(STATE &state, AggregateInputData &aggr_input_data) {
262
+ state.~STATE();
263
263
  }
264
264
 
265
265
  static void ProjectInputs(Vector inputs[], const SortedAggregateBindData &order_bind, idx_t input_count,
@@ -288,7 +288,7 @@ struct SortedAggregateFunction {
288
288
  DataChunk sort_chunk;
289
289
  ProjectInputs(inputs, order_bind, input_count, count, arg_chunk, sort_chunk);
290
290
 
291
- const auto order_state = (SortedAggregateState *)state;
291
+ const auto order_state = reinterpret_cast<SortedAggregateState *>(state);
292
292
  order_state->Update(order_bind, sort_chunk, arg_chunk);
293
293
  }
294
294
 
@@ -310,7 +310,7 @@ struct SortedAggregateFunction {
310
310
  states.ToUnifiedFormat(count, svdata);
311
311
 
312
312
  // Size the selection vector for each state.
313
- auto sdata = (SortedAggregateState **)svdata.data;
313
+ auto sdata = UnifiedVectorFormat::GetDataNoConst<SortedAggregateState *>(svdata);
314
314
  for (idx_t i = 0; i < count; ++i) {
315
315
  auto sidx = svdata.sel->get_index(i);
316
316
  auto order_state = sdata[sidx];
@@ -345,10 +345,10 @@ struct SortedAggregateFunction {
345
345
  }
346
346
 
347
347
  template <class STATE, class OP>
348
- static void Combine(const STATE &source, STATE *target, AggregateInputData &aggr_input_data) {
349
- const auto order_bind = (SortedAggregateBindData *)aggr_input_data.bind_data;
348
+ static void Combine(const STATE &source, STATE &target, AggregateInputData &aggr_input_data) {
349
+ auto &order_bind = aggr_input_data.bind_data->Cast<SortedAggregateBindData>();
350
350
  auto &other = const_cast<STATE &>(source);
351
- target->Combine(*order_bind, other);
351
+ target.Combine(order_bind, other);
352
352
  }
353
353
 
354
354
  static void Window(Vector inputs[], const ValidityMask &filter_mask, AggregateInputData &aggr_input_data,
@@ -359,7 +359,7 @@ struct SortedAggregateFunction {
359
359
 
360
360
  static void Finalize(Vector &states, AggregateInputData &aggr_input_data, Vector &result, idx_t count,
361
361
  const idx_t offset) {
362
- const auto &order_bind = aggr_input_data.bind_data->Cast<SortedAggregateBindData>();
362
+ auto &order_bind = aggr_input_data.bind_data->Cast<SortedAggregateBindData>();
363
363
  auto &buffer_manager = order_bind.buffer_manager;
364
364
  RowLayout payload_layout;
365
365
  payload_layout.Initialize(order_bind.arg_types);
@@ -370,7 +370,7 @@ struct SortedAggregateFunction {
370
370
 
371
371
  // Reusable inner state
372
372
  vector<data_t> agg_state(order_bind.function.state_size());
373
- Vector agg_state_vec(Value::POINTER((idx_t)agg_state.data()));
373
+ Vector agg_state_vec(Value::POINTER(CastPointerToValue(agg_state.data())));
374
374
 
375
375
  // State variables
376
376
  auto bind_info = order_bind.bind_info.get();
@@ -158,7 +158,7 @@ int64_t CastFunctionSet::ImplicitCastCost(const LogicalType &source, const Logic
158
158
 
159
159
  BoundCastInfo MapCastFunction(BindCastInput &input, const LogicalType &source, const LogicalType &target) {
160
160
  D_ASSERT(input.info);
161
- auto &map_info = (MapCastInfo &)*input.info;
161
+ auto &map_info = input.info->Cast<MapCastInfo>();
162
162
  auto entry = map_info.GetEntry(source, target);
163
163
  if (entry) {
164
164
  if (entry->bind_function) {
@@ -207,7 +207,7 @@ struct DecimalCastInput {
207
207
  struct StringCastFromDecimalOperator {
208
208
  template <class INPUT_TYPE, class RESULT_TYPE>
209
209
  static RESULT_TYPE Operation(INPUT_TYPE input, ValidityMask &mask, idx_t idx, void *dataptr) {
210
- auto data = (DecimalCastInput *)dataptr;
210
+ auto data = reinterpret_cast<DecimalCastInput *>(dataptr);
211
211
  return StringCastFromDecimal::Operation<INPUT_TYPE>(input, data->width, data->scale, data->result);
212
212
  }
213
213
  };
@@ -17,7 +17,7 @@ bool EnumEnumCast(Vector &source, Vector &result, idx_t count, CastParameters &p
17
17
  UnifiedVectorFormat vdata;
18
18
  source.ToUnifiedFormat(count, vdata);
19
19
 
20
- auto source_data = (SRC_TYPE *)vdata.data;
20
+ auto source_data = UnifiedVectorFormat::GetData<SRC_TYPE>(vdata);
21
21
  auto source_sel = vdata.sel;
22
22
  auto source_mask = vdata.validity;
23
23
 
@@ -71,7 +71,7 @@ static bool EnumToVarcharCast(Vector &source, Vector &result, idx_t count, CastP
71
71
  UnifiedVectorFormat vdata;
72
72
  source.ToUnifiedFormat(count, vdata);
73
73
 
74
- auto source_data = (SRC *)vdata.data;
74
+ auto source_data = UnifiedVectorFormat::GetData<SRC>(vdata);
75
75
  for (idx_t i = 0; i < count; i++) {
76
76
  auto source_idx = vdata.sel->get_index(i);
77
77
  if (!vdata.validity.RowIsValid(source_idx)) {
@@ -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
  };