duckdb 0.7.2-dev2740.0 → 0.7.2-dev2867.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 (286) hide show
  1. package/binding.gyp +21 -13
  2. package/package.json +1 -1
  3. package/src/duckdb/extension/icu/icu-datepart.cpp +51 -1
  4. package/src/duckdb/extension/icu/icu-strptime.cpp +1 -1
  5. package/src/duckdb/extension/json/include/json_functions.hpp +35 -37
  6. package/src/duckdb/extension/json/include/json_scan.hpp +1 -1
  7. package/src/duckdb/extension/json/include/json_transform.hpp +1 -1
  8. package/src/duckdb/extension/json/json-extension.cpp +10 -20
  9. package/src/duckdb/extension/json/json_functions/copy_json.cpp +2 -2
  10. package/src/duckdb/extension/json/json_functions/json_array_length.cpp +2 -3
  11. package/src/duckdb/extension/json/json_functions/json_contains.cpp +2 -2
  12. package/src/duckdb/extension/json/json_functions/json_create.cpp +20 -20
  13. package/src/duckdb/extension/json/json_functions/json_extract.cpp +4 -6
  14. package/src/duckdb/extension/json/json_functions/json_keys.cpp +2 -3
  15. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +2 -2
  16. package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +8 -8
  17. package/src/duckdb/extension/json/json_functions/json_structure.cpp +2 -2
  18. package/src/duckdb/extension/json/json_functions/json_transform.cpp +4 -4
  19. package/src/duckdb/extension/json/json_functions/json_type.cpp +2 -3
  20. package/src/duckdb/extension/json/json_functions/json_valid.cpp +2 -2
  21. package/src/duckdb/extension/json/json_functions/read_json.cpp +6 -6
  22. package/src/duckdb/extension/json/json_functions/read_json_objects.cpp +4 -4
  23. package/src/duckdb/extension/json/json_functions.cpp +6 -6
  24. package/src/duckdb/extension/parquet/parquet-extension.cpp +16 -28
  25. package/src/duckdb/src/catalog/catalog_entry/pragma_function_catalog_entry.cpp +1 -2
  26. package/src/duckdb/src/catalog/catalog_entry/scalar_function_catalog_entry.cpp +1 -1
  27. package/src/duckdb/src/catalog/catalog_entry/scalar_macro_catalog_entry.cpp +2 -2
  28. package/src/duckdb/src/catalog/catalog_entry/table_function_catalog_entry.cpp +1 -2
  29. package/src/duckdb/src/catalog/catalog_transaction.cpp +4 -0
  30. package/src/duckdb/src/catalog/duck_catalog.cpp +8 -1
  31. package/src/duckdb/src/common/enums/date_part_specifier.cpp +82 -0
  32. package/src/duckdb/src/common/local_file_system.cpp +1 -3
  33. package/src/duckdb/src/common/multi_file_reader.cpp +11 -8
  34. package/src/duckdb/src/common/types/vector.cpp +136 -3
  35. package/src/duckdb/src/{function → core_functions}/aggregate/algebraic/avg.cpp +9 -12
  36. package/src/duckdb/src/core_functions/aggregate/algebraic/corr.cpp +13 -0
  37. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +21 -0
  38. package/src/duckdb/src/core_functions/aggregate/algebraic/stddev.cpp +34 -0
  39. package/src/duckdb/src/{function → core_functions}/aggregate/distributive/approx_count.cpp +3 -3
  40. package/src/duckdb/src/{function → core_functions}/aggregate/distributive/arg_min_max.cpp +7 -23
  41. package/src/duckdb/src/{function → core_functions}/aggregate/distributive/bitagg.cpp +10 -10
  42. package/src/duckdb/src/{function → core_functions}/aggregate/distributive/bitstring_agg.cpp +4 -4
  43. package/src/duckdb/src/{function → core_functions}/aggregate/distributive/bool.cpp +1 -17
  44. package/src/duckdb/src/{function → core_functions}/aggregate/distributive/entropy.cpp +5 -4
  45. package/src/duckdb/src/{function → core_functions}/aggregate/distributive/kurtosis.cpp +5 -6
  46. package/src/duckdb/src/{function → core_functions}/aggregate/distributive/minmax.cpp +5 -5
  47. package/src/duckdb/src/{function → core_functions}/aggregate/distributive/product.cpp +2 -11
  48. package/src/duckdb/src/{function → core_functions}/aggregate/distributive/skew.cpp +5 -6
  49. package/src/duckdb/src/{function → core_functions}/aggregate/distributive/string_agg.cpp +4 -6
  50. package/src/duckdb/src/{function → core_functions}/aggregate/distributive/sum.cpp +38 -46
  51. package/src/duckdb/src/{function → core_functions}/aggregate/holistic/approximate_quantile.cpp +4 -5
  52. package/src/duckdb/src/{function → core_functions}/aggregate/holistic/mode.cpp +4 -5
  53. package/src/duckdb/src/{function → core_functions}/aggregate/holistic/quantile.cpp +31 -23
  54. package/src/duckdb/src/{function → core_functions}/aggregate/holistic/reservoir_quantile.cpp +4 -5
  55. package/src/duckdb/src/{function → core_functions}/aggregate/nested/histogram.cpp +4 -4
  56. package/src/duckdb/src/{function → core_functions}/aggregate/nested/list.cpp +6 -10
  57. package/src/duckdb/src/{function → core_functions}/aggregate/regression/regr_avg.cpp +7 -11
  58. package/src/duckdb/src/{function → core_functions}/aggregate/regression/regr_count.cpp +4 -4
  59. package/src/duckdb/src/{function → core_functions}/aggregate/regression/regr_intercept.cpp +5 -8
  60. package/src/duckdb/src/{function → core_functions}/aggregate/regression/regr_r2.cpp +5 -7
  61. package/src/duckdb/src/{function → core_functions}/aggregate/regression/regr_slope.cpp +5 -7
  62. package/src/duckdb/src/{function → core_functions}/aggregate/regression/regr_sxx_syy.cpp +8 -12
  63. package/src/duckdb/src/{function → core_functions}/aggregate/regression/regr_sxy.cpp +6 -8
  64. package/src/duckdb/src/core_functions/core_functions.cpp +50 -0
  65. package/src/duckdb/src/core_functions/function_list.cpp +352 -0
  66. package/src/duckdb/src/{function → core_functions}/scalar/bit/bitstring.cpp +12 -15
  67. package/src/duckdb/src/{function → core_functions}/scalar/blob/base64.cpp +6 -6
  68. package/src/duckdb/src/{function → core_functions}/scalar/blob/encode.cpp +7 -6
  69. package/src/duckdb/src/{function → core_functions}/scalar/date/age.cpp +3 -3
  70. package/src/duckdb/src/{function → core_functions}/scalar/date/current.cpp +8 -8
  71. package/src/duckdb/src/{function → core_functions}/scalar/date/date_diff.cpp +3 -6
  72. package/src/duckdb/src/{function → core_functions}/scalar/date/date_part.cpp +144 -148
  73. package/src/duckdb/src/{function → core_functions}/scalar/date/date_sub.cpp +3 -6
  74. package/src/duckdb/src/{function → core_functions}/scalar/date/date_trunc.cpp +3 -6
  75. package/src/duckdb/src/{function → core_functions}/scalar/date/epoch.cpp +7 -8
  76. package/src/duckdb/src/{function → core_functions}/scalar/date/make_date.cpp +14 -14
  77. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +251 -0
  78. package/src/duckdb/src/{function → core_functions}/scalar/date/time_bucket.cpp +4 -5
  79. package/src/duckdb/src/{function → core_functions}/scalar/date/to_interval.cpp +39 -19
  80. package/src/duckdb/src/{function/scalar/enum/enum_functions_implementation.cpp → core_functions/scalar/enum/enum_functions.cpp} +18 -22
  81. package/src/duckdb/src/{function → core_functions}/scalar/generic/alias.cpp +4 -4
  82. package/src/duckdb/src/{function → core_functions}/scalar/generic/current_setting.cpp +4 -5
  83. package/src/duckdb/src/{function → core_functions}/scalar/generic/error.cpp +4 -4
  84. package/src/duckdb/src/{function → core_functions}/scalar/generic/hash.cpp +4 -4
  85. package/src/duckdb/src/{function → core_functions}/scalar/generic/least.cpp +8 -9
  86. package/src/duckdb/src/{function → core_functions}/scalar/generic/stats.cpp +4 -4
  87. package/src/duckdb/src/{function/scalar/system → core_functions/scalar/generic}/system_functions.cpp +24 -13
  88. package/src/duckdb/src/{function → core_functions}/scalar/generic/typeof.cpp +4 -4
  89. package/src/duckdb/src/{function → core_functions}/scalar/list/array_slice.cpp +3 -13
  90. package/src/duckdb/src/{function → core_functions}/scalar/list/flatten.cpp +5 -5
  91. package/src/duckdb/src/{function → core_functions}/scalar/list/list_aggregates.cpp +2 -13
  92. package/src/duckdb/src/{function → core_functions}/scalar/list/list_lambdas.cpp +9 -24
  93. package/src/duckdb/src/{function → core_functions}/scalar/list/list_sort.cpp +8 -22
  94. package/src/duckdb/src/{function → core_functions}/scalar/list/list_value.cpp +4 -5
  95. package/src/duckdb/src/{function → core_functions}/scalar/list/range.cpp +8 -6
  96. package/src/duckdb/src/{function → core_functions}/scalar/map/cardinality.cpp +5 -4
  97. package/src/duckdb/src/{function → core_functions}/scalar/map/map.cpp +6 -63
  98. package/src/duckdb/src/{function → core_functions}/scalar/map/map_entries.cpp +5 -4
  99. package/src/duckdb/src/{function → core_functions}/scalar/map/map_extract.cpp +22 -7
  100. package/src/duckdb/src/{function → core_functions}/scalar/map/map_from_entries.cpp +6 -5
  101. package/src/duckdb/src/{function → core_functions}/scalar/map/map_keys_values.cpp +8 -7
  102. package/src/duckdb/src/{function → core_functions}/scalar/math/numeric.cpp +110 -138
  103. package/src/duckdb/src/{function → core_functions}/scalar/operators/bitwise.cpp +19 -20
  104. package/src/duckdb/src/{function/scalar/math → core_functions/scalar/random}/random.cpp +5 -6
  105. package/src/duckdb/src/{function/scalar/math → core_functions/scalar/random}/setseed.cpp +3 -3
  106. package/src/duckdb/src/{function → core_functions}/scalar/string/ascii.cpp +4 -5
  107. package/src/duckdb/src/{function → core_functions}/scalar/string/bar.cpp +4 -4
  108. package/src/duckdb/src/{function → core_functions}/scalar/string/chr.cpp +5 -6
  109. package/src/duckdb/src/{function → core_functions}/scalar/string/damerau_levenshtein.cpp +4 -6
  110. package/src/duckdb/src/{function/scalar/string/mismatches.cpp → core_functions/scalar/string/hamming.cpp} +3 -12
  111. package/src/duckdb/src/{function → core_functions}/scalar/string/hex.cpp +15 -25
  112. package/src/duckdb/src/{function → core_functions}/scalar/string/instr.cpp +6 -13
  113. package/src/duckdb/src/{function → core_functions}/scalar/string/jaccard.cpp +3 -6
  114. package/src/duckdb/src/{function → core_functions}/scalar/string/jaro_winkler.cpp +7 -6
  115. package/src/duckdb/src/{function → core_functions}/scalar/string/left_right.cpp +18 -11
  116. package/src/duckdb/src/{function → core_functions}/scalar/string/levenshtein.cpp +3 -12
  117. package/src/duckdb/src/{function → core_functions}/scalar/string/md5.cpp +15 -21
  118. package/src/duckdb/src/{function → core_functions}/scalar/string/pad.cpp +7 -13
  119. package/src/duckdb/src/{function → core_functions}/scalar/string/printf.cpp +10 -10
  120. package/src/duckdb/src/{function → core_functions}/scalar/string/repeat.cpp +3 -6
  121. package/src/duckdb/src/{function → core_functions}/scalar/string/replace.cpp +4 -7
  122. package/src/duckdb/src/{function → core_functions}/scalar/string/reverse.cpp +3 -3
  123. package/src/duckdb/src/{function → core_functions}/scalar/string/starts_with.cpp +4 -8
  124. package/src/duckdb/src/{function → core_functions}/scalar/string/string_split.cpp +11 -11
  125. package/src/duckdb/src/{function → core_functions}/scalar/string/translate.cpp +4 -7
  126. package/src/duckdb/src/{function → core_functions}/scalar/string/trim.cpp +19 -14
  127. package/src/duckdb/src/core_functions/scalar/string/unicode.cpp +28 -0
  128. package/src/duckdb/src/{function → core_functions}/scalar/struct/struct_insert.cpp +4 -4
  129. package/src/duckdb/src/{function → core_functions}/scalar/struct/struct_pack.cpp +3 -4
  130. package/src/duckdb/src/{function → core_functions}/scalar/union/union_extract.cpp +4 -8
  131. package/src/duckdb/src/{function → core_functions}/scalar/union/union_tag.cpp +4 -8
  132. package/src/duckdb/src/{function → core_functions}/scalar/union/union_value.cpp +4 -59
  133. package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +1 -1
  134. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +1 -1
  135. package/src/duckdb/src/execution/operator/persistent/parallel_csv_reader.cpp +1 -1
  136. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +11 -2
  137. package/src/duckdb/src/function/aggregate/distributive_functions.cpp +0 -17
  138. package/src/duckdb/src/function/cast/string_cast.cpp +1 -1
  139. package/src/duckdb/src/function/function.cpp +0 -8
  140. package/src/duckdb/src/function/function_set.cpp +25 -0
  141. package/src/duckdb/src/function/scalar/generic_functions.cpp +1 -9
  142. package/src/duckdb/src/function/scalar/nested_functions.cpp +0 -22
  143. package/src/duckdb/src/function/scalar/operators.cpp +0 -6
  144. package/src/duckdb/src/function/scalar/{date/strftime.cpp → strftime_format.cpp} +1 -249
  145. package/src/duckdb/src/function/scalar/string/length.cpp +0 -19
  146. package/src/duckdb/src/function/scalar/string_functions.cpp +0 -40
  147. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +5 -0
  148. package/src/duckdb/src/function/table/arrow_conversion.cpp +1 -1
  149. package/src/duckdb/src/function/table/read_csv.cpp +7 -4
  150. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +27 -40
  151. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  152. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/aggregate_function_catalog_entry.hpp +3 -3
  153. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/function_entry.hpp +33 -0
  154. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/macro_catalog_entry.hpp +2 -2
  155. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/pragma_function_catalog_entry.hpp +2 -2
  156. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_function_catalog_entry.hpp +2 -2
  157. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_function_catalog_entry.hpp +2 -2
  158. package/src/duckdb/src/include/duckdb/catalog/catalog_transaction.hpp +2 -0
  159. package/src/duckdb/src/include/duckdb/common/algorithm.hpp +1 -0
  160. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +5 -4
  161. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +11 -1
  162. package/src/duckdb/src/include/duckdb/{function → core_functions}/aggregate/algebraic/corr.hpp +3 -4
  163. package/src/duckdb/src/include/duckdb/{function → core_functions}/aggregate/algebraic/covar.hpp +1 -1
  164. package/src/duckdb/src/include/duckdb/{function → core_functions}/aggregate/algebraic/stddev.hpp +1 -1
  165. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic_functions.hpp +124 -0
  166. package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +229 -0
  167. package/src/duckdb/src/include/duckdb/core_functions/aggregate/holistic_functions.hpp +85 -0
  168. package/src/duckdb/src/include/duckdb/core_functions/aggregate/nested_functions.hpp +41 -0
  169. package/src/duckdb/src/include/duckdb/{function → core_functions}/aggregate/regression/regr_count.hpp +3 -4
  170. package/src/duckdb/src/include/duckdb/{function → core_functions}/aggregate/regression/regr_slope.hpp +2 -2
  171. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression_functions.hpp +97 -0
  172. package/src/duckdb/src/include/duckdb/{function → core_functions}/aggregate/sum_helpers.hpp +1 -1
  173. package/src/duckdb/src/include/duckdb/{function/scalar/uuid_functions.hpp → core_functions/core_functions.hpp} +7 -5
  174. package/src/duckdb/src/include/duckdb/core_functions/function_list.hpp +33 -0
  175. package/src/duckdb/src/include/duckdb/core_functions/scalar/bit_functions.hpp +52 -0
  176. package/src/duckdb/src/include/duckdb/core_functions/scalar/blob_functions.hpp +58 -0
  177. package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +544 -0
  178. package/src/duckdb/src/include/duckdb/core_functions/scalar/enum_functions.hpp +61 -0
  179. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +142 -0
  180. package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +220 -0
  181. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +85 -0
  182. package/src/duckdb/src/include/duckdb/core_functions/scalar/math_functions.hpp +394 -0
  183. package/src/duckdb/src/include/duckdb/core_functions/scalar/operators_functions.hpp +70 -0
  184. package/src/duckdb/src/include/duckdb/core_functions/scalar/random_functions.hpp +49 -0
  185. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +439 -0
  186. package/src/duckdb/src/include/duckdb/core_functions/scalar/struct_functions.hpp +40 -0
  187. package/src/duckdb/src/include/duckdb/core_functions/scalar/union_functions.hpp +43 -0
  188. package/src/duckdb/src/include/duckdb/execution/operator/persistent/base_csv_reader.hpp +1 -1
  189. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +1 -1
  190. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_type.hpp +4 -0
  191. package/src/duckdb/src/include/duckdb/function/aggregate/distributive_functions.hpp +0 -85
  192. package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +0 -8
  193. package/src/duckdb/src/include/duckdb/function/function_set.hpp +7 -2
  194. package/src/duckdb/src/include/duckdb/function/scalar/generic_functions.hpp +1 -36
  195. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +0 -120
  196. package/src/duckdb/src/include/duckdb/function/scalar/operators.hpp +0 -24
  197. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +1 -97
  198. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +1 -1
  199. package/src/duckdb/src/include/duckdb/main/database.hpp +1 -0
  200. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +3 -0
  201. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +0 -2
  202. package/src/duckdb/src/include/duckdb/main/extension_util.hpp +48 -0
  203. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_function_info.hpp +6 -0
  204. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +3 -0
  205. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +5 -1
  206. package/src/duckdb/src/main/attached_database.cpp +5 -3
  207. package/src/duckdb/src/main/database.cpp +34 -37
  208. package/src/duckdb/src/main/extension/extension_helper.cpp +1 -0
  209. package/src/duckdb/src/main/extension/extension_load.cpp +61 -38
  210. package/src/duckdb/src/main/extension/extension_util.cpp +90 -0
  211. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +1 -4
  212. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +2 -4
  213. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +43 -24
  214. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +3 -0
  215. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +17 -28
  216. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +6 -7
  217. package/src/duckdb/third_party/fmt/format.cc +0 -5
  218. package/src/duckdb/third_party/fmt/include/fmt/core.h +10 -12
  219. package/src/duckdb/third_party/fmt/include/fmt/format-inl.h +2 -33
  220. package/src/duckdb/third_party/fmt/include/fmt/format.h +61 -24
  221. package/src/duckdb/third_party/fmt/include/fmt/printf.h +15 -1
  222. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +1 -0
  223. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +10735 -10674
  224. package/src/duckdb/ub_src_common_enums.cpp +2 -0
  225. package/src/duckdb/ub_src_core_functions.cpp +4 -0
  226. package/src/duckdb/ub_src_core_functions_aggregate_algebraic.cpp +8 -0
  227. package/src/duckdb/ub_src_core_functions_aggregate_distributive.cpp +24 -0
  228. package/src/duckdb/ub_src_core_functions_aggregate_holistic.cpp +8 -0
  229. package/src/duckdb/ub_src_core_functions_aggregate_nested.cpp +4 -0
  230. package/src/duckdb/ub_src_core_functions_aggregate_regression.cpp +14 -0
  231. package/src/duckdb/ub_src_core_functions_scalar_bit.cpp +2 -0
  232. package/src/duckdb/ub_src_core_functions_scalar_blob.cpp +4 -0
  233. package/src/duckdb/ub_src_core_functions_scalar_date.cpp +22 -0
  234. package/src/duckdb/ub_src_core_functions_scalar_enum.cpp +2 -0
  235. package/src/duckdb/ub_src_core_functions_scalar_generic.cpp +16 -0
  236. package/src/duckdb/ub_src_core_functions_scalar_list.cpp +14 -0
  237. package/src/duckdb/ub_src_core_functions_scalar_map.cpp +12 -0
  238. package/src/duckdb/ub_src_core_functions_scalar_math.cpp +2 -0
  239. package/src/duckdb/ub_src_core_functions_scalar_operators.cpp +2 -0
  240. package/src/duckdb/ub_src_core_functions_scalar_random.cpp +4 -0
  241. package/src/duckdb/ub_src_core_functions_scalar_string.cpp +44 -0
  242. package/src/duckdb/ub_src_core_functions_scalar_struct.cpp +4 -0
  243. package/src/duckdb/ub_src_core_functions_scalar_union.cpp +6 -0
  244. package/src/duckdb/ub_src_function_aggregate.cpp +0 -8
  245. package/src/duckdb/ub_src_function_aggregate_distributive.cpp +0 -24
  246. package/src/duckdb/ub_src_function_scalar.cpp +2 -8
  247. package/src/duckdb/ub_src_function_scalar_generic.cpp +0 -14
  248. package/src/duckdb/ub_src_function_scalar_list.cpp +0 -14
  249. package/src/duckdb/ub_src_function_scalar_operators.cpp +0 -2
  250. package/src/duckdb/ub_src_function_scalar_string.cpp +0 -42
  251. package/src/duckdb/ub_src_function_scalar_struct.cpp +0 -4
  252. package/src/duckdb/ub_src_function_scalar_system.cpp +0 -2
  253. package/src/duckdb/ub_src_main_extension.cpp +2 -0
  254. package/src/duckdb/src/function/aggregate/algebraic/corr.cpp +0 -14
  255. package/src/duckdb/src/function/aggregate/algebraic/covar.cpp +0 -25
  256. package/src/duckdb/src/function/aggregate/algebraic/stddev.cpp +0 -54
  257. package/src/duckdb/src/function/aggregate/algebraic_functions.cpp +0 -21
  258. package/src/duckdb/src/function/aggregate/holistic_functions.cpp +0 -12
  259. package/src/duckdb/src/function/aggregate/nested_functions.cpp +0 -10
  260. package/src/duckdb/src/function/aggregate/regression_functions.cpp +0 -21
  261. package/src/duckdb/src/function/scalar/date_functions.cpp +0 -22
  262. package/src/duckdb/src/function/scalar/enum_functions.cpp +0 -13
  263. package/src/duckdb/src/function/scalar/math_functions.cpp +0 -50
  264. package/src/duckdb/src/function/scalar/trigonometrics_functions.cpp +0 -18
  265. package/src/duckdb/src/include/duckdb/function/aggregate/algebraic_functions.hpp +0 -56
  266. package/src/duckdb/src/include/duckdb/function/aggregate/holistic_functions.hpp +0 -33
  267. package/src/duckdb/src/include/duckdb/function/aggregate/nested_functions.hpp +0 -26
  268. package/src/duckdb/src/include/duckdb/function/aggregate/regression_functions.hpp +0 -53
  269. package/src/duckdb/src/include/duckdb/function/scalar/bit_functions.hpp +0 -32
  270. package/src/duckdb/src/include/duckdb/function/scalar/blob_functions.hpp +0 -24
  271. package/src/duckdb/src/include/duckdb/function/scalar/date_functions.hpp +0 -73
  272. package/src/duckdb/src/include/duckdb/function/scalar/enum_functions.hpp +0 -37
  273. package/src/duckdb/src/include/duckdb/function/scalar/math_functions.hpp +0 -137
  274. package/src/duckdb/src/include/duckdb/function/scalar/trigonometric_functions.hpp +0 -49
  275. package/src/duckdb/ub_src_function_aggregate_algebraic.cpp +0 -8
  276. package/src/duckdb/ub_src_function_aggregate_holistic.cpp +0 -8
  277. package/src/duckdb/ub_src_function_aggregate_nested.cpp +0 -4
  278. package/src/duckdb/ub_src_function_aggregate_regression.cpp +0 -14
  279. package/src/duckdb/ub_src_function_scalar_bit.cpp +0 -2
  280. package/src/duckdb/ub_src_function_scalar_blob.cpp +0 -4
  281. package/src/duckdb/ub_src_function_scalar_date.cpp +0 -22
  282. package/src/duckdb/ub_src_function_scalar_enum.cpp +0 -2
  283. package/src/duckdb/ub_src_function_scalar_map.cpp +0 -12
  284. package/src/duckdb/ub_src_function_scalar_math.cpp +0 -6
  285. package/src/duckdb/ub_src_function_scalar_union.cpp +0 -6
  286. /package/src/duckdb/src/include/duckdb/function/scalar/{strftime.hpp → strftime_format.hpp} +0 -0
@@ -18,6 +18,7 @@
18
18
  #include "duckdb/common/fsst.hpp"
19
19
  #include "fsst.h"
20
20
  #include "duckdb/common/types/bit.hpp"
21
+ #include "duckdb/common/types/value_map.hpp"
21
22
 
22
23
  #include "duckdb/common/serializer/format_serializer.hpp"
23
24
  #include "duckdb/common/serializer/format_deserializer.hpp"
@@ -1256,7 +1257,7 @@ void Vector::UTFVerify(idx_t count) {
1256
1257
  void Vector::VerifyMap(Vector &vector_p, const SelectionVector &sel_p, idx_t count) {
1257
1258
  #ifdef DEBUG
1258
1259
  D_ASSERT(vector_p.GetType().id() == LogicalTypeId::MAP);
1259
- auto valid_check = CheckMapValidity(vector_p, count, sel_p);
1260
+ auto valid_check = MapVector::CheckMapValidity(vector_p, count, sel_p);
1260
1261
  D_ASSERT(valid_check == MapInvalidReason::VALID);
1261
1262
  #endif // DEBUG
1262
1263
  }
@@ -1264,7 +1265,7 @@ void Vector::VerifyMap(Vector &vector_p, const SelectionVector &sel_p, idx_t cou
1264
1265
  void Vector::VerifyUnion(Vector &vector_p, const SelectionVector &sel_p, idx_t count) {
1265
1266
  #ifdef DEBUG
1266
1267
  D_ASSERT(vector_p.GetType().id() == LogicalTypeId::UNION);
1267
- auto valid_check = CheckUnionValidity(vector_p, count, sel_p);
1268
+ auto valid_check = UnionVector::CheckUnionValidity(vector_p, count, sel_p);
1268
1269
  D_ASSERT(valid_check == UnionInvalidReason::VALID);
1269
1270
  #endif // DEBUG
1270
1271
  }
@@ -1439,6 +1440,9 @@ void Vector::Verify(idx_t count) {
1439
1440
  Verify(*this, *flat_sel, count);
1440
1441
  }
1441
1442
 
1443
+ //===--------------------------------------------------------------------===//
1444
+ // FlatVector
1445
+ //===--------------------------------------------------------------------===//
1442
1446
  void FlatVector::SetNull(Vector &vector, idx_t idx, bool is_null) {
1443
1447
  D_ASSERT(vector.GetVectorType() == VectorType::FLAT_VECTOR);
1444
1448
  vector.validity.Set(idx, !is_null);
@@ -1451,6 +1455,9 @@ void FlatVector::SetNull(Vector &vector, idx_t idx, bool is_null) {
1451
1455
  }
1452
1456
  }
1453
1457
 
1458
+ //===--------------------------------------------------------------------===//
1459
+ // ConstantVector
1460
+ //===--------------------------------------------------------------------===//
1454
1461
  void ConstantVector::SetNull(Vector &vector, bool is_null) {
1455
1462
  D_ASSERT(vector.GetVectorType() == VectorType::CONSTANT_VECTOR);
1456
1463
  vector.validity.Set(0, !is_null);
@@ -1539,6 +1546,9 @@ void ConstantVector::Reference(Vector &vector, Vector &source, idx_t position, i
1539
1546
  }
1540
1547
  }
1541
1548
 
1549
+ //===--------------------------------------------------------------------===//
1550
+ // StringVector
1551
+ //===--------------------------------------------------------------------===//
1542
1552
  string_t StringVector::AddString(Vector &vector, const char *data, idx_t len) {
1543
1553
  return StringVector::AddString(vector, string_t(data, len));
1544
1554
  }
@@ -1629,6 +1639,9 @@ void StringVector::AddHeapReference(Vector &vector, Vector &other) {
1629
1639
  StringVector::AddBuffer(vector, other.auxiliary);
1630
1640
  }
1631
1641
 
1642
+ //===--------------------------------------------------------------------===//
1643
+ // FSSTVector
1644
+ //===--------------------------------------------------------------------===//
1632
1645
  string_t FSSTVector::AddCompressedString(Vector &vector, const char *data, idx_t len) {
1633
1646
  return FSSTVector::AddCompressedString(vector, string_t(data, len));
1634
1647
  }
@@ -1714,6 +1727,9 @@ void FSSTVector::DecompressVector(const Vector &src, Vector &dst, idx_t src_offs
1714
1727
  }
1715
1728
  }
1716
1729
 
1730
+ //===--------------------------------------------------------------------===//
1731
+ // MapVector
1732
+ //===--------------------------------------------------------------------===//
1717
1733
  Vector &MapVector::GetKeys(Vector &vector) {
1718
1734
  auto &entries = StructVector::GetEntries(ListVector::GetEntry(vector));
1719
1735
  D_ASSERT(entries.size() == 2);
@@ -1732,6 +1748,67 @@ const Vector &MapVector::GetValues(const Vector &vector) {
1732
1748
  return GetValues((Vector &)vector);
1733
1749
  }
1734
1750
 
1751
+ MapInvalidReason MapVector::CheckMapValidity(Vector &map, idx_t count, const SelectionVector &sel) {
1752
+ D_ASSERT(map.GetType().id() == LogicalTypeId::MAP);
1753
+ UnifiedVectorFormat map_vdata;
1754
+
1755
+ map.ToUnifiedFormat(count, map_vdata);
1756
+ auto &map_validity = map_vdata.validity;
1757
+
1758
+ auto list_data = ListVector::GetData(map);
1759
+ auto &keys = MapVector::GetKeys(map);
1760
+ UnifiedVectorFormat key_vdata;
1761
+ keys.ToUnifiedFormat(count, key_vdata);
1762
+ auto &key_validity = key_vdata.validity;
1763
+
1764
+ for (idx_t row = 0; row < count; row++) {
1765
+ auto mapped_row = sel.get_index(row);
1766
+ auto row_idx = map_vdata.sel->get_index(mapped_row);
1767
+ // map is allowed to be NULL
1768
+ if (!map_validity.RowIsValid(row_idx)) {
1769
+ continue;
1770
+ }
1771
+ row_idx = key_vdata.sel->get_index(row);
1772
+ value_set_t unique_keys;
1773
+ for (idx_t i = 0; i < list_data[row_idx].length; i++) {
1774
+ auto index = list_data[row_idx].offset + i;
1775
+ index = key_vdata.sel->get_index(index);
1776
+ if (!key_validity.RowIsValid(index)) {
1777
+ return MapInvalidReason::NULL_KEY;
1778
+ }
1779
+ auto value = keys.GetValue(index);
1780
+ auto result = unique_keys.insert(value);
1781
+ if (!result.second) {
1782
+ return MapInvalidReason::DUPLICATE_KEY;
1783
+ }
1784
+ }
1785
+ }
1786
+ return MapInvalidReason::VALID;
1787
+ }
1788
+
1789
+ void MapVector::MapConversionVerify(Vector &vector, idx_t count) {
1790
+ auto valid_check = MapVector::CheckMapValidity(vector, count);
1791
+ switch (valid_check) {
1792
+ case MapInvalidReason::VALID:
1793
+ break;
1794
+ case MapInvalidReason::DUPLICATE_KEY: {
1795
+ throw InvalidInputException("Map keys have to be unique");
1796
+ }
1797
+ case MapInvalidReason::NULL_KEY: {
1798
+ throw InvalidInputException("Map keys can not be NULL");
1799
+ }
1800
+ case MapInvalidReason::NULL_KEY_LIST: {
1801
+ throw InvalidInputException("The list of map keys is not allowed to be NULL");
1802
+ }
1803
+ default: {
1804
+ throw InternalException("MapInvalidReason not implemented");
1805
+ }
1806
+ }
1807
+ }
1808
+
1809
+ //===--------------------------------------------------------------------===//
1810
+ // StructVector
1811
+ //===--------------------------------------------------------------------===//
1735
1812
  vector<unique_ptr<Vector>> &StructVector::GetEntries(Vector &vector) {
1736
1813
  D_ASSERT(vector.GetType().id() == LogicalTypeId::STRUCT || vector.GetType().id() == LogicalTypeId::UNION);
1737
1814
 
@@ -1750,6 +1827,9 @@ const vector<unique_ptr<Vector>> &StructVector::GetEntries(const Vector &vector)
1750
1827
  return GetEntries((Vector &)vector);
1751
1828
  }
1752
1829
 
1830
+ //===--------------------------------------------------------------------===//
1831
+ // ListVector
1832
+ //===--------------------------------------------------------------------===//
1753
1833
  const Vector &ListVector::GetEntry(const Vector &vector) {
1754
1834
  D_ASSERT(vector.GetType().id() == LogicalTypeId::LIST || vector.GetType().id() == LogicalTypeId::MAP);
1755
1835
  if (vector.GetVectorType() == VectorType::DICTIONARY_VECTOR) {
@@ -1928,7 +2008,9 @@ void ListVector::GetConsecutiveChildSelVector(Vector &list, SelectionVector &sel
1928
2008
  // info.second.offset = 0;
1929
2009
  }
1930
2010
 
1931
- // Union vector
2011
+ //===--------------------------------------------------------------------===//
2012
+ // UnionVector
2013
+ //===--------------------------------------------------------------------===//
1932
2014
  const Vector &UnionVector::GetMember(const Vector &vector, idx_t member_index) {
1933
2015
  D_ASSERT(member_index < UnionType::GetMemberCount(vector.GetType()));
1934
2016
  auto &entries = StructVector::GetEntries(vector);
@@ -2015,4 +2097,55 @@ union_tag_t UnionVector::GetTag(const Vector &vector, idx_t index) {
2015
2097
  return FlatVector::GetData<union_tag_t>(tag_vector)[index];
2016
2098
  }
2017
2099
 
2100
+ UnionInvalidReason UnionVector::CheckUnionValidity(Vector &vector, idx_t count, const SelectionVector &sel) {
2101
+ D_ASSERT(vector.GetType().id() == LogicalTypeId::UNION);
2102
+ auto member_count = UnionType::GetMemberCount(vector.GetType());
2103
+ if (member_count == 0) {
2104
+ return UnionInvalidReason::NO_MEMBERS;
2105
+ }
2106
+
2107
+ UnifiedVectorFormat union_vdata;
2108
+ vector.ToUnifiedFormat(count, union_vdata);
2109
+
2110
+ UnifiedVectorFormat tags_vdata;
2111
+ auto &tag_vector = UnionVector::GetTags(vector);
2112
+ tag_vector.ToUnifiedFormat(count, tags_vdata);
2113
+
2114
+ // check that only one member is valid at a time
2115
+ for (idx_t row_idx = 0; row_idx < count; row_idx++) {
2116
+ auto union_mapped_row_idx = sel.get_index(row_idx);
2117
+ if (!union_vdata.validity.RowIsValid(union_mapped_row_idx)) {
2118
+ continue;
2119
+ }
2120
+
2121
+ auto tag_mapped_row_idx = tags_vdata.sel->get_index(row_idx);
2122
+ if (!tags_vdata.validity.RowIsValid(tag_mapped_row_idx)) {
2123
+ continue;
2124
+ }
2125
+
2126
+ auto tag = ((union_tag_t *)tags_vdata.data)[tag_mapped_row_idx];
2127
+ if (tag >= member_count) {
2128
+ return UnionInvalidReason::TAG_OUT_OF_RANGE;
2129
+ }
2130
+
2131
+ bool found_valid = false;
2132
+ for (idx_t member_idx = 0; member_idx < member_count; member_idx++) {
2133
+
2134
+ UnifiedVectorFormat member_vdata;
2135
+ auto &member = UnionVector::GetMember(vector, member_idx);
2136
+ member.ToUnifiedFormat(count, member_vdata);
2137
+
2138
+ auto mapped_row_idx = member_vdata.sel->get_index(row_idx);
2139
+ if (member_vdata.validity.RowIsValid(mapped_row_idx)) {
2140
+ if (found_valid) {
2141
+ return UnionInvalidReason::VALIDITY_OVERLAP;
2142
+ }
2143
+ found_valid = true;
2144
+ }
2145
+ }
2146
+ }
2147
+
2148
+ return UnionInvalidReason::VALID;
2149
+ }
2150
+
2018
2151
  } // namespace duckdb
@@ -1,5 +1,5 @@
1
- #include "duckdb/function/aggregate/algebraic_functions.hpp"
2
- #include "duckdb/function/aggregate/sum_helpers.hpp"
1
+ #include "duckdb/core_functions/aggregate/algebraic_functions.hpp"
2
+ #include "duckdb/core_functions/aggregate/sum_helpers.hpp"
3
3
  #include "duckdb/common/types/hugeint.hpp"
4
4
  #include "duckdb/common/exception.hpp"
5
5
  #include "duckdb/function/function_set.hpp"
@@ -177,8 +177,8 @@ unique_ptr<FunctionData> BindDecimalAvg(ClientContext &context, AggregateFunctio
177
177
  Hugeint::Cast<double>(Hugeint::POWERS_OF_TEN[DecimalType::GetScale(decimal_type)]));
178
178
  }
179
179
 
180
- void AvgFun::RegisterFunction(BuiltinFunctions &set) {
181
- AggregateFunctionSet avg("avg");
180
+ AggregateFunctionSet AvgFun::GetFunctions() {
181
+ AggregateFunctionSet avg;
182
182
 
183
183
  avg.AddFunction(AggregateFunction({LogicalTypeId::DECIMAL}, LogicalTypeId::DECIMAL, nullptr, nullptr, nullptr,
184
184
  nullptr, nullptr, FunctionNullHandling::DEFAULT_NULL_HANDLING, nullptr,
@@ -189,15 +189,12 @@ void AvgFun::RegisterFunction(BuiltinFunctions &set) {
189
189
  avg.AddFunction(GetAverageAggregate(PhysicalType::INT128));
190
190
  avg.AddFunction(AggregateFunction::UnaryAggregate<AvgState<double>, double, double, NumericAverageOperation>(
191
191
  LogicalType::DOUBLE, LogicalType::DOUBLE));
192
- set.AddFunction(avg);
193
-
194
- avg.name = "mean";
195
- set.AddFunction(avg);
192
+ return avg;
193
+ }
196
194
 
197
- AggregateFunctionSet favg("favg");
198
- favg.AddFunction(AggregateFunction::UnaryAggregate<KahanAvgState, double, double, KahanAverageOperation>(
199
- LogicalType::DOUBLE, LogicalType::DOUBLE));
200
- set.AddFunction(favg);
195
+ AggregateFunction FAvgFun::GetFunction() {
196
+ return AggregateFunction::UnaryAggregate<KahanAvgState, double, double, KahanAverageOperation>(LogicalType::DOUBLE,
197
+ LogicalType::DOUBLE);
201
198
  }
202
199
 
203
200
  } // namespace duckdb
@@ -0,0 +1,13 @@
1
+ #include "duckdb/core_functions/aggregate/algebraic_functions.hpp"
2
+ #include "duckdb/core_functions/aggregate/algebraic/covar.hpp"
3
+ #include "duckdb/core_functions/aggregate/algebraic/stddev.hpp"
4
+ #include "duckdb/core_functions/aggregate/algebraic/corr.hpp"
5
+ #include "duckdb/function/function_set.hpp"
6
+
7
+ namespace duckdb {
8
+
9
+ AggregateFunction CorrFun::GetFunction() {
10
+ return AggregateFunction::BinaryAggregate<CorrState, double, double, double, CorrOperation>(
11
+ LogicalType::DOUBLE, LogicalType::DOUBLE, LogicalType::DOUBLE);
12
+ }
13
+ } // namespace duckdb
@@ -0,0 +1,21 @@
1
+ #include "duckdb/core_functions/aggregate/algebraic_functions.hpp"
2
+ #include "duckdb/common/exception.hpp"
3
+ #include "duckdb/common/types/null_value.hpp"
4
+ #include "duckdb/common/vector_operations/vector_operations.hpp"
5
+ #include "duckdb/function/function_set.hpp"
6
+ #include "duckdb/core_functions/aggregate/algebraic/covar.hpp"
7
+ #include <cmath>
8
+
9
+ namespace duckdb {
10
+
11
+ AggregateFunction CovarPopFun::GetFunction() {
12
+ return AggregateFunction::BinaryAggregate<CovarState, double, double, double, CovarPopOperation>(
13
+ LogicalType::DOUBLE, LogicalType::DOUBLE, LogicalType::DOUBLE);
14
+ }
15
+
16
+ AggregateFunction CovarSampFun::GetFunction() {
17
+ return AggregateFunction::BinaryAggregate<CovarState, double, double, double, CovarSampOperation>(
18
+ LogicalType::DOUBLE, LogicalType::DOUBLE, LogicalType::DOUBLE);
19
+ }
20
+
21
+ } // namespace duckdb
@@ -0,0 +1,34 @@
1
+ #include "duckdb/core_functions/aggregate/algebraic_functions.hpp"
2
+ #include "duckdb/common/vector_operations/vector_operations.hpp"
3
+ #include "duckdb/function/function_set.hpp"
4
+ #include "duckdb/core_functions/aggregate/algebraic/stddev.hpp"
5
+ #include <cmath>
6
+
7
+ namespace duckdb {
8
+
9
+ AggregateFunction StdDevSampFun::GetFunction() {
10
+ return AggregateFunction::UnaryAggregate<StddevState, double, double, STDDevSampOperation>(LogicalType::DOUBLE,
11
+ LogicalType::DOUBLE);
12
+ }
13
+
14
+ AggregateFunction StdDevPopFun::GetFunction() {
15
+ return AggregateFunction::UnaryAggregate<StddevState, double, double, STDDevPopOperation>(LogicalType::DOUBLE,
16
+ LogicalType::DOUBLE);
17
+ }
18
+
19
+ AggregateFunction VarPopFun::GetFunction() {
20
+ return AggregateFunction::UnaryAggregate<StddevState, double, double, VarPopOperation>(LogicalType::DOUBLE,
21
+ LogicalType::DOUBLE);
22
+ }
23
+
24
+ AggregateFunction VarSampFun::GetFunction() {
25
+ return AggregateFunction::UnaryAggregate<StddevState, double, double, VarSampOperation>(LogicalType::DOUBLE,
26
+ LogicalType::DOUBLE);
27
+ }
28
+
29
+ AggregateFunction StandardErrorOfTheMeanFun::GetFunction() {
30
+ return AggregateFunction::UnaryAggregate<StddevState, double, double, StandardErrorOfTheMeanOperation>(
31
+ LogicalType::DOUBLE, LogicalType::DOUBLE);
32
+ }
33
+
34
+ } // namespace duckdb
@@ -1,8 +1,8 @@
1
+ #include "duckdb/core_functions/aggregate/distributive_functions.hpp"
1
2
  #include "duckdb/common/exception.hpp"
2
3
  #include "duckdb/common/types/hash.hpp"
3
4
  #include "duckdb/common/types/hyperloglog.hpp"
4
5
  #include "duckdb/common/vector_operations/vector_operations.hpp"
5
- #include "duckdb/function/aggregate/distributive_functions.hpp"
6
6
  #include "duckdb/function/function_set.hpp"
7
7
  #include "duckdb/planner/expression/bound_aggregate_expression.hpp"
8
8
 
@@ -127,7 +127,7 @@ AggregateFunction GetApproxCountDistinctFunction(const LogicalType &input_type)
127
127
  return fun;
128
128
  }
129
129
 
130
- void ApproxCountDistinctFun::RegisterFunction(BuiltinFunctions &set) {
130
+ AggregateFunctionSet ApproxCountDistinctFun::GetFunctions() {
131
131
  AggregateFunctionSet approx_count("approx_count_distinct");
132
132
  approx_count.AddFunction(GetApproxCountDistinctFunction(LogicalType::UTINYINT));
133
133
  approx_count.AddFunction(GetApproxCountDistinctFunction(LogicalType::USMALLINT));
@@ -142,7 +142,7 @@ void ApproxCountDistinctFun::RegisterFunction(BuiltinFunctions &set) {
142
142
  approx_count.AddFunction(GetApproxCountDistinctFunction(LogicalType::VARCHAR));
143
143
  approx_count.AddFunction(GetApproxCountDistinctFunction(LogicalType::TIMESTAMP));
144
144
  approx_count.AddFunction(GetApproxCountDistinctFunction(LogicalType::TIMESTAMP_TZ));
145
- set.AddFunction(approx_count);
145
+ return approx_count;
146
146
  }
147
147
 
148
148
  } // namespace duckdb
@@ -1,6 +1,6 @@
1
+ #include "duckdb/core_functions/aggregate/distributive_functions.hpp"
1
2
  #include "duckdb/common/exception.hpp"
2
3
  #include "duckdb/common/vector_operations/vector_operations.hpp"
3
- #include "duckdb/function/aggregate/distributive_functions.hpp"
4
4
  #include "duckdb/function/function_set.hpp"
5
5
  #include "duckdb/planner/expression/bound_aggregate_expression.hpp"
6
6
  #include "duckdb/common/operator/comparison_operators.hpp"
@@ -336,32 +336,16 @@ static void AddArgMinMaxFunctions(AggregateFunctionSet &fun) {
336
336
  AddVectorArgMinMaxFunctionBy<VECTOR_OP, Vector *>(fun, LogicalType::ANY);
337
337
  }
338
338
 
339
- void ArgMinFun::RegisterFunction(BuiltinFunctions &set) {
340
- AggregateFunctionSet fun("argmin");
339
+ AggregateFunctionSet ArgMinFun::GetFunctions() {
340
+ AggregateFunctionSet fun;
341
341
  AddArgMinMaxFunctions<LessThan>(fun);
342
- set.AddFunction(fun);
343
-
344
- //! Add min_by alias
345
- fun.name = "min_by";
346
- set.AddFunction(fun);
347
-
348
- //! Add arg_min alias
349
- fun.name = "arg_min";
350
- set.AddFunction(fun);
342
+ return fun;
351
343
  }
352
344
 
353
- void ArgMaxFun::RegisterFunction(BuiltinFunctions &set) {
354
- AggregateFunctionSet fun("argmax");
345
+ AggregateFunctionSet ArgMaxFun::GetFunctions() {
346
+ AggregateFunctionSet fun;
355
347
  AddArgMinMaxFunctions<GreaterThan>(fun);
356
- set.AddFunction(fun);
357
-
358
- //! Add max_by alias
359
- fun.name = "max_by";
360
- set.AddFunction(fun);
361
-
362
- //! Add arg_max alias
363
- fun.name = "arg_max";
364
- set.AddFunction(fun);
348
+ return fun;
365
349
  }
366
350
 
367
351
  } // namespace duckdb
@@ -1,4 +1,4 @@
1
- #include "duckdb/function/aggregate/distributive_functions.hpp"
1
+ #include "duckdb/core_functions/aggregate/distributive_functions.hpp"
2
2
  #include "duckdb/common/exception.hpp"
3
3
  #include "duckdb/common/types/null_value.hpp"
4
4
  #include "duckdb/common/vector_operations/vector_operations.hpp"
@@ -189,8 +189,8 @@ struct BitStringXorOperation : public BitStringBitwiseOperation {
189
189
  }
190
190
  };
191
191
 
192
- void BitAndFun::RegisterFunction(BuiltinFunctions &set) {
193
- AggregateFunctionSet bit_and("bit_and");
192
+ AggregateFunctionSet BitAndFun::GetFunctions() {
193
+ AggregateFunctionSet bit_and;
194
194
  for (auto &type : LogicalType::Integral()) {
195
195
  bit_and.AddFunction(GetBitfieldUnaryAggregate<BitAndOperation>(type));
196
196
  }
@@ -198,29 +198,29 @@ void BitAndFun::RegisterFunction(BuiltinFunctions &set) {
198
198
  bit_and.AddFunction(
199
199
  AggregateFunction::UnaryAggregateDestructor<BitState<string_t>, string_t, string_t, BitStringAndOperation>(
200
200
  LogicalType::BIT, LogicalType::BIT));
201
- set.AddFunction(bit_and);
201
+ return bit_and;
202
202
  }
203
203
 
204
- void BitOrFun::RegisterFunction(BuiltinFunctions &set) {
205
- AggregateFunctionSet bit_or("bit_or");
204
+ AggregateFunctionSet BitOrFun::GetFunctions() {
205
+ AggregateFunctionSet bit_or;
206
206
  for (auto &type : LogicalType::Integral()) {
207
207
  bit_or.AddFunction(GetBitfieldUnaryAggregate<BitOrOperation>(type));
208
208
  }
209
209
  bit_or.AddFunction(
210
210
  AggregateFunction::UnaryAggregateDestructor<BitState<string_t>, string_t, string_t, BitStringOrOperation>(
211
211
  LogicalType::BIT, LogicalType::BIT));
212
- set.AddFunction(bit_or);
212
+ return bit_or;
213
213
  }
214
214
 
215
- void BitXorFun::RegisterFunction(BuiltinFunctions &set) {
216
- AggregateFunctionSet bit_xor("bit_xor");
215
+ AggregateFunctionSet BitXorFun::GetFunctions() {
216
+ AggregateFunctionSet bit_xor;
217
217
  for (auto &type : LogicalType::Integral()) {
218
218
  bit_xor.AddFunction(GetBitfieldUnaryAggregate<BitXorOperation>(type));
219
219
  }
220
220
  bit_xor.AddFunction(
221
221
  AggregateFunction::UnaryAggregateDestructor<BitState<string_t>, string_t, string_t, BitStringXorOperation>(
222
222
  LogicalType::BIT, LogicalType::BIT));
223
- set.AddFunction(bit_xor);
223
+ return bit_xor;
224
224
  }
225
225
 
226
226
  } // namespace duckdb
@@ -1,4 +1,4 @@
1
- #include "duckdb/function/aggregate/distributive_functions.hpp"
1
+ #include "duckdb/core_functions/aggregate/distributive_functions.hpp"
2
2
  #include "duckdb/common/exception.hpp"
3
3
  #include "duckdb/common/types/null_value.hpp"
4
4
  #include "duckdb/common/vector_operations/aggregate_executor.hpp"
@@ -224,7 +224,7 @@ static void BindBitString(AggregateFunctionSet &bitstring_agg, const LogicalType
224
224
  bitstring_agg.AddFunction(function);
225
225
  }
226
226
 
227
- void BitStringAggFun::GetBitStringAggregate(const LogicalType &type, AggregateFunctionSet &bitstring_agg) {
227
+ void GetBitStringAggregate(const LogicalType &type, AggregateFunctionSet &bitstring_agg) {
228
228
  switch (type.id()) {
229
229
  case LogicalType::TINYINT: {
230
230
  return BindBitString<int8_t>(bitstring_agg, type.id());
@@ -258,12 +258,12 @@ void BitStringAggFun::GetBitStringAggregate(const LogicalType &type, AggregateFu
258
258
  }
259
259
  }
260
260
 
261
- void BitStringAggFun::RegisterFunction(BuiltinFunctions &set) {
261
+ AggregateFunctionSet BitstringAggFun::GetFunctions() {
262
262
  AggregateFunctionSet bitstring_agg("bitstring_agg");
263
263
  for (auto &type : LogicalType::Integral()) {
264
264
  GetBitStringAggregate(type, bitstring_agg);
265
265
  }
266
- set.AddFunction(bitstring_agg);
266
+ return bitstring_agg;
267
267
  }
268
268
 
269
269
  } // namespace duckdb
@@ -1,6 +1,6 @@
1
+ #include "duckdb/core_functions/aggregate/distributive_functions.hpp"
1
2
  #include "duckdb/common/exception.hpp"
2
3
  #include "duckdb/common/vector_operations/vector_operations.hpp"
3
- #include "duckdb/function/aggregate/distributive_functions.hpp"
4
4
  #include "duckdb/planner/expression/bound_aggregate_expression.hpp"
5
5
  #include "duckdb/function/function_set.hpp"
6
6
 
@@ -94,7 +94,6 @@ struct BoolOrFunFunction {
94
94
  AggregateFunction BoolOrFun::GetFunction() {
95
95
  auto fun = AggregateFunction::UnaryAggregate<BoolState, bool, bool, BoolOrFunFunction>(
96
96
  LogicalType(LogicalTypeId::BOOLEAN), LogicalType::BOOLEAN);
97
- fun.name = "bool_or";
98
97
  fun.order_dependent = AggregateOrderDependent::NOT_ORDER_DEPENDENT;
99
98
  return fun;
100
99
  }
@@ -102,23 +101,8 @@ AggregateFunction BoolOrFun::GetFunction() {
102
101
  AggregateFunction BoolAndFun::GetFunction() {
103
102
  auto fun = AggregateFunction::UnaryAggregate<BoolState, bool, bool, BoolAndFunFunction>(
104
103
  LogicalType(LogicalTypeId::BOOLEAN), LogicalType::BOOLEAN);
105
- fun.name = "bool_and";
106
104
  fun.order_dependent = AggregateOrderDependent::NOT_ORDER_DEPENDENT;
107
105
  return fun;
108
106
  }
109
107
 
110
- void BoolOrFun::RegisterFunction(BuiltinFunctions &set) {
111
- AggregateFunction bool_or_function = BoolOrFun::GetFunction();
112
- AggregateFunctionSet bool_or("bool_or");
113
- bool_or.AddFunction(bool_or_function);
114
- set.AddFunction(bool_or);
115
- }
116
-
117
- void BoolAndFun::RegisterFunction(BuiltinFunctions &set) {
118
- AggregateFunction bool_and_function = BoolAndFun::GetFunction();
119
- AggregateFunctionSet bool_and("bool_and");
120
- bool_and.AddFunction(bool_and_function);
121
- set.AddFunction(bool_and);
122
- }
123
-
124
108
  } // namespace duckdb
@@ -1,9 +1,10 @@
1
+ #include "duckdb/core_functions/aggregate/distributive_functions.hpp"
1
2
  #include "duckdb/common/exception.hpp"
2
3
  #include "duckdb/common/vector_operations/vector_operations.hpp"
3
- #include "duckdb/function/aggregate/distributive_functions.hpp"
4
4
  #include "duckdb/planner/expression/bound_aggregate_expression.hpp"
5
5
  #include "duckdb/function/function_set.hpp"
6
- #include <unordered_map>
6
+ #include "duckdb/common/algorithm.hpp"
7
+ #include "duckdb/common/unordered_map.hpp"
7
8
 
8
9
  namespace duckdb {
9
10
 
@@ -161,7 +162,7 @@ AggregateFunction GetEntropyFunction(PhysicalType type) {
161
162
  return fun;
162
163
  }
163
164
 
164
- void EntropyFun::RegisterFunction(BuiltinFunctions &set) {
165
+ AggregateFunctionSet EntropyFun::GetFunctions() {
165
166
  AggregateFunctionSet entropy("entropy");
166
167
  entropy.AddFunction(GetEntropyFunction(PhysicalType::UINT16));
167
168
  entropy.AddFunction(GetEntropyFunction(PhysicalType::UINT32));
@@ -174,7 +175,7 @@ void EntropyFun::RegisterFunction(BuiltinFunctions &set) {
174
175
  entropy.AddFunction(GetEntropyFunction(PhysicalType::VARCHAR));
175
176
  entropy.AddFunction(GetEntropyFunction<int64_t, double>(LogicalType::TIMESTAMP, LogicalType::DOUBLE));
176
177
  entropy.AddFunction(GetEntropyFunction<int64_t, double>(LogicalType::TIMESTAMP_TZ, LogicalType::DOUBLE));
177
- set.AddFunction(entropy);
178
+ return entropy;
178
179
  }
179
180
 
180
181
  } // namespace duckdb
@@ -1,7 +1,8 @@
1
+ #include "duckdb/core_functions/aggregate/distributive_functions.hpp"
1
2
  #include "duckdb/common/exception.hpp"
2
3
  #include "duckdb/common/vector_operations/vector_operations.hpp"
3
- #include "duckdb/function/aggregate/distributive_functions.hpp"
4
4
  #include "duckdb/planner/expression/bound_aggregate_expression.hpp"
5
+ #include "duckdb/common/algorithm.hpp"
5
6
 
6
7
  namespace duckdb {
7
8
 
@@ -85,11 +86,9 @@ struct KurtosisOperation {
85
86
  }
86
87
  };
87
88
 
88
- void KurtosisFun::RegisterFunction(BuiltinFunctions &set) {
89
- AggregateFunctionSet function_set("kurtosis");
90
- function_set.AddFunction(AggregateFunction::UnaryAggregate<KurtosisState, double, double, KurtosisOperation>(
91
- LogicalType::DOUBLE, LogicalType::DOUBLE));
92
- set.AddFunction(function_set);
89
+ AggregateFunction KurtosisFun::GetFunction() {
90
+ return AggregateFunction::UnaryAggregate<KurtosisState, double, double, KurtosisOperation>(LogicalType::DOUBLE,
91
+ LogicalType::DOUBLE);
93
92
  }
94
93
 
95
94
  } // namespace duckdb
@@ -1,4 +1,4 @@
1
- #include "duckdb/function/aggregate/distributive_functions.hpp"
1
+ #include "duckdb/core_functions/aggregate/distributive_functions.hpp"
2
2
  #include "duckdb/common/exception.hpp"
3
3
  #include "duckdb/common/vector_operations/vector_operations.hpp"
4
4
  #include "duckdb/common/operator/comparison_operators.hpp"
@@ -560,16 +560,16 @@ static void AddMinMaxOperator(AggregateFunctionSet &set) {
560
560
  nullptr, BindMinMax<OP, OP_STRING, OP_VECTOR>));
561
561
  }
562
562
 
563
- void MinFun::RegisterFunction(BuiltinFunctions &set) {
563
+ AggregateFunctionSet MinFun::GetFunctions() {
564
564
  AggregateFunctionSet min("min");
565
565
  AddMinMaxOperator<MinOperation, MinOperationString, MinOperationVector>(min);
566
- set.AddFunction(min);
566
+ return min;
567
567
  }
568
568
 
569
- void MaxFun::RegisterFunction(BuiltinFunctions &set) {
569
+ AggregateFunctionSet MaxFun::GetFunctions() {
570
570
  AggregateFunctionSet max("max");
571
571
  AddMinMaxOperator<MaxOperation, MaxOperationString, MaxOperationVector>(max);
572
- set.AddFunction(max);
572
+ return max;
573
573
  }
574
574
 
575
575
  } // namespace duckdb
@@ -1,6 +1,6 @@
1
+ #include "duckdb/core_functions/aggregate/distributive_functions.hpp"
1
2
  #include "duckdb/common/exception.hpp"
2
3
  #include "duckdb/common/vector_operations/vector_operations.hpp"
3
- #include "duckdb/function/aggregate/distributive_functions.hpp"
4
4
  #include "duckdb/planner/expression/bound_aggregate_expression.hpp"
5
5
  #include "duckdb/function/function_set.hpp"
6
6
 
@@ -54,17 +54,8 @@ struct ProductFunction {
54
54
  };
55
55
 
56
56
  AggregateFunction ProductFun::GetFunction() {
57
- auto fun = AggregateFunction::UnaryAggregate<ProductState, double, double, ProductFunction>(
57
+ return AggregateFunction::UnaryAggregate<ProductState, double, double, ProductFunction>(
58
58
  LogicalType(LogicalTypeId::DOUBLE), LogicalType::DOUBLE);
59
- fun.name = "product";
60
- return fun;
61
- }
62
-
63
- void ProductFun::RegisterFunction(BuiltinFunctions &set) {
64
- AggregateFunction product_function = ProductFun::GetFunction();
65
- AggregateFunctionSet product("product");
66
- product.AddFunction(product_function);
67
- set.AddFunction(product);
68
59
  }
69
60
 
70
61
  } // namespace duckdb
@@ -1,7 +1,8 @@
1
+ #include "duckdb/core_functions/aggregate/distributive_functions.hpp"
1
2
  #include "duckdb/common/exception.hpp"
2
3
  #include "duckdb/common/vector_operations/vector_operations.hpp"
3
- #include "duckdb/function/aggregate/distributive_functions.hpp"
4
4
  #include "duckdb/planner/expression/bound_aggregate_expression.hpp"
5
+ #include "duckdb/common/algorithm.hpp"
5
6
 
6
7
  namespace duckdb {
7
8
 
@@ -79,11 +80,9 @@ struct SkewnessOperation {
79
80
  }
80
81
  };
81
82
 
82
- void SkewFun::RegisterFunction(BuiltinFunctions &set) {
83
- AggregateFunctionSet function_set("skewness");
84
- function_set.AddFunction(AggregateFunction::UnaryAggregate<SkewState, double, double, SkewnessOperation>(
85
- LogicalType::DOUBLE, LogicalType::DOUBLE));
86
- set.AddFunction(function_set);
83
+ AggregateFunction SkewnessFun::GetFunction() {
84
+ return AggregateFunction::UnaryAggregate<SkewState, double, double, SkewnessOperation>(LogicalType::DOUBLE,
85
+ LogicalType::DOUBLE);
87
86
  }
88
87
 
89
88
  } // namespace duckdb