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
@@ -1,6 +1,6 @@
1
+ #include "duckdb/core_functions/scalar/list_functions.hpp"
1
2
  #include "duckdb/common/pair.hpp"
2
3
  #include "duckdb/common/string_util.hpp"
3
- #include "duckdb/common/types/chunk_collection.hpp"
4
4
  #include "duckdb/common/types/data_chunk.hpp"
5
5
  #include "duckdb/function/scalar/nested_functions.hpp"
6
6
  #include "duckdb/function/scalar/string_functions.hpp"
@@ -9,16 +9,6 @@
9
9
 
10
10
  namespace duckdb {
11
11
 
12
- template <typename INPUT_TYPE, typename INDEX_TYPE>
13
- INDEX_TYPE ValueOffset(const INPUT_TYPE &value) {
14
- return 0;
15
- }
16
-
17
- template <>
18
- int64_t ValueOffset(const list_entry_t &value) {
19
- return value.offset;
20
- }
21
-
22
12
  template <typename INPUT_TYPE, typename INDEX_TYPE>
23
13
  INDEX_TYPE ValueLength(const INPUT_TYPE &value) {
24
14
  return 0;
@@ -190,13 +180,13 @@ static unique_ptr<FunctionData> ArraySliceBind(ClientContext &context, ScalarFun
190
180
  return make_uniq<VariableReturnBindData>(bound_function.return_type);
191
181
  }
192
182
 
193
- void ArraySliceFun::RegisterFunction(BuiltinFunctions &set) {
183
+ ScalarFunction ListSliceFun::GetFunction() {
194
184
  // the arguments and return types are actually set in the binder function
195
185
  ScalarFunction fun({LogicalType::ANY, LogicalType::BIGINT, LogicalType::BIGINT}, LogicalType::ANY,
196
186
  ArraySliceFunction, ArraySliceBind);
197
187
  fun.varargs = LogicalType::ANY;
198
188
  fun.null_handling = FunctionNullHandling::SPECIAL_HANDLING;
199
- set.AddFunction({"array_slice", "list_slice"}, fun);
189
+ return fun;
200
190
  }
201
191
 
202
192
  } // namespace duckdb
@@ -1,7 +1,8 @@
1
+ #include "duckdb/core_functions/scalar/list_functions.hpp"
1
2
  #include "duckdb/common/types/data_chunk.hpp"
2
- #include "duckdb/function/scalar/nested_functions.hpp"
3
3
  #include "duckdb/planner/expression/bound_function_expression.hpp"
4
4
  #include "duckdb/storage/statistics/list_stats.hpp"
5
+ #include "duckdb/function/scalar/nested_functions.hpp"
5
6
 
6
7
  namespace duckdb {
7
8
 
@@ -127,10 +128,9 @@ static unique_ptr<BaseStatistics> ListFlattenStats(ClientContext &context, Funct
127
128
  return child_copy.ToUnique();
128
129
  }
129
130
 
130
- void ListFlattenFun::RegisterFunction(BuiltinFunctions &set) {
131
- ScalarFunction fun({LogicalType::LIST(LogicalType::LIST(LogicalType::ANY))}, LogicalType::LIST(LogicalType::ANY),
132
- ListFlattenFunction, ListFlattenBind, nullptr, ListFlattenStats);
133
- set.AddFunction({"flatten"}, fun);
131
+ ScalarFunction ListFlattenFun::GetFunction() {
132
+ return ScalarFunction({LogicalType::LIST(LogicalType::LIST(LogicalType::ANY))}, LogicalType::LIST(LogicalType::ANY),
133
+ ListFlattenFunction, ListFlattenBind, nullptr, ListFlattenStats);
134
134
  }
135
135
 
136
136
  } // namespace duckdb
@@ -1,7 +1,8 @@
1
+ #include "duckdb/core_functions/scalar/list_functions.hpp"
2
+ #include "duckdb/core_functions/aggregate/nested_functions.hpp"
1
3
  #include "duckdb/catalog/catalog.hpp"
2
4
  #include "duckdb/catalog/catalog_entry/aggregate_function_catalog_entry.hpp"
3
5
  #include "duckdb/execution/expression_executor.hpp"
4
- #include "duckdb/function/aggregate/nested_functions.hpp"
5
6
  #include "duckdb/function/scalar/nested_functions.hpp"
6
7
  #include "duckdb/planner/expression/bound_aggregate_expression.hpp"
7
8
  #include "duckdb/planner/expression/bound_constant_expression.hpp"
@@ -506,16 +507,4 @@ ScalarFunction ListUniqueFun::GetFunction() {
506
507
  ListUniqueBind);
507
508
  }
508
509
 
509
- void ListAggregateFun::RegisterFunction(BuiltinFunctions &set) {
510
- set.AddFunction({"list_aggregate", "array_aggregate", "list_aggr", "array_aggr", "aggregate"}, GetFunction());
511
- }
512
-
513
- void ListDistinctFun::RegisterFunction(BuiltinFunctions &set) {
514
- set.AddFunction({"list_distinct", "array_distinct"}, GetFunction());
515
- }
516
-
517
- void ListUniqueFun::RegisterFunction(BuiltinFunctions &set) {
518
- set.AddFunction({"list_unique", "array_unique"}, GetFunction());
519
- }
520
-
521
510
  } // namespace duckdb
@@ -1,3 +1,4 @@
1
+ #include "duckdb/core_functions/scalar/list_functions.hpp"
1
2
  #include "duckdb/planner/expression/bound_function_expression.hpp"
2
3
  #include "duckdb/function/scalar/nested_functions.hpp"
3
4
  #include "duckdb/planner/expression_iterator.hpp"
@@ -377,38 +378,22 @@ static unique_ptr<FunctionData> ListFilterBind(ClientContext &context, ScalarFun
377
378
  return ListLambdaBind<1>(context, bound_function, arguments);
378
379
  }
379
380
 
380
- void ListTransformFun::RegisterFunction(BuiltinFunctions &set) {
381
-
382
- ScalarFunction fun("list_transform", {LogicalType::LIST(LogicalType::ANY), LogicalType::LAMBDA},
383
- LogicalType::LIST(LogicalType::ANY), ListTransformFunction, ListTransformBind, nullptr, nullptr);
381
+ ScalarFunction ListTransformFun::GetFunction() {
382
+ ScalarFunction fun({LogicalType::LIST(LogicalType::ANY), LogicalType::LAMBDA}, LogicalType::LIST(LogicalType::ANY),
383
+ ListTransformFunction, ListTransformBind, nullptr, nullptr);
384
384
  fun.null_handling = FunctionNullHandling::SPECIAL_HANDLING;
385
385
  fun.serialize = ListLambdaBindData::Serialize;
386
386
  fun.deserialize = ListLambdaBindData::Deserialize;
387
- set.AddFunction(fun);
388
-
389
- fun.name = "array_transform";
390
- set.AddFunction(fun);
391
- fun.name = "list_apply";
392
- set.AddFunction(fun);
393
- fun.name = "array_apply";
394
- set.AddFunction(fun);
395
- fun.name = "apply";
396
- set.AddFunction(fun);
387
+ return fun;
397
388
  }
398
389
 
399
- void ListFilterFun::RegisterFunction(BuiltinFunctions &set) {
400
-
401
- ScalarFunction fun("list_filter", {LogicalType::LIST(LogicalType::ANY), LogicalType::LAMBDA},
402
- LogicalType::LIST(LogicalType::ANY), ListFilterFunction, ListFilterBind, nullptr, nullptr);
390
+ ScalarFunction ListFilterFun::GetFunction() {
391
+ ScalarFunction fun({LogicalType::LIST(LogicalType::ANY), LogicalType::LAMBDA}, LogicalType::LIST(LogicalType::ANY),
392
+ ListFilterFunction, ListFilterBind, nullptr, nullptr);
403
393
  fun.null_handling = FunctionNullHandling::SPECIAL_HANDLING;
404
394
  fun.serialize = ListLambdaBindData::Serialize;
405
395
  fun.deserialize = ListLambdaBindData::Deserialize;
406
- set.AddFunction(fun);
407
-
408
- fun.name = "array_filter";
409
- set.AddFunction(fun);
410
- fun.name = "filter";
411
- set.AddFunction(fun);
396
+ return fun;
412
397
  }
413
398
 
414
399
  } // namespace duckdb
@@ -1,4 +1,4 @@
1
- #include "duckdb/function/scalar/nested_functions.hpp"
1
+ #include "duckdb/core_functions/scalar/list_functions.hpp"
2
2
  #include "duckdb/common/serializer/enum_serializer.hpp"
3
3
  #include "duckdb/common/types/chunk_collection.hpp"
4
4
  #include "duckdb/planner/expression/bound_function_expression.hpp"
@@ -298,10 +298,7 @@ static unique_ptr<FunctionData> ListReverseSortBind(ClientContext &context, Scal
298
298
  return ListSortBind(context, bound_function, arguments, order, null_order);
299
299
  }
300
300
 
301
- void ListSortFun::RegisterFunction(BuiltinFunctions &set) {
302
-
303
- // normal sort
304
-
301
+ ScalarFunctionSet ListSortFun::GetFunctions() {
305
302
  // one parameter: list
306
303
  ScalarFunction sort({LogicalType::LIST(LogicalType::ANY)}, LogicalType::LIST(LogicalType::ANY), ListSortFunction,
307
304
  ListNormalSortBind);
@@ -314,20 +311,14 @@ void ListSortFun::RegisterFunction(BuiltinFunctions &set) {
314
311
  ScalarFunction sort_orders({LogicalType::LIST(LogicalType::ANY), LogicalType::VARCHAR, LogicalType::VARCHAR},
315
312
  LogicalType::LIST(LogicalType::ANY), ListSortFunction, ListNormalSortBind);
316
313
 
317
- ScalarFunctionSet list_sort("list_sort");
314
+ ScalarFunctionSet list_sort;
318
315
  list_sort.AddFunction(sort);
319
316
  list_sort.AddFunction(sort_order);
320
317
  list_sort.AddFunction(sort_orders);
321
- set.AddFunction(list_sort);
322
-
323
- ScalarFunctionSet array_sort("array_sort");
324
- array_sort.AddFunction(sort);
325
- array_sort.AddFunction(sort_order);
326
- array_sort.AddFunction(sort_orders);
327
- set.AddFunction(array_sort);
328
-
329
- // reverse sort
318
+ return list_sort;
319
+ }
330
320
 
321
+ ScalarFunctionSet ListReverseSortFun::GetFunctions() {
331
322
  // one parameter: list
332
323
  ScalarFunction sort_reverse({LogicalType::LIST(LogicalType::ANY)}, LogicalType::LIST(LogicalType::ANY),
333
324
  ListSortFunction, ListReverseSortBind);
@@ -336,15 +327,10 @@ void ListSortFun::RegisterFunction(BuiltinFunctions &set) {
336
327
  ScalarFunction sort_reverse_null_order({LogicalType::LIST(LogicalType::ANY), LogicalType::VARCHAR},
337
328
  LogicalType::LIST(LogicalType::ANY), ListSortFunction, ListReverseSortBind);
338
329
 
339
- ScalarFunctionSet list_reverse_sort("list_reverse_sort");
330
+ ScalarFunctionSet list_reverse_sort;
340
331
  list_reverse_sort.AddFunction(sort_reverse);
341
332
  list_reverse_sort.AddFunction(sort_reverse_null_order);
342
- set.AddFunction(list_reverse_sort);
343
-
344
- ScalarFunctionSet array_reverse_sort("array_reverse_sort");
345
- array_reverse_sort.AddFunction(sort_reverse);
346
- array_reverse_sort.AddFunction(sort_reverse_null_order);
347
- set.AddFunction(array_reverse_sort);
333
+ return list_reverse_sort;
348
334
  }
349
335
 
350
336
  } // namespace duckdb
@@ -1,11 +1,12 @@
1
+ #include "duckdb/core_functions/scalar/list_functions.hpp"
1
2
  #include "duckdb/planner/expression/bound_function_expression.hpp"
2
3
  #include "duckdb/common/string_util.hpp"
3
4
  #include "duckdb/parser/expression/bound_expression.hpp"
4
- #include "duckdb/function/scalar/nested_functions.hpp"
5
5
  #include "duckdb/common/types/data_chunk.hpp"
6
6
  #include "duckdb/common/pair.hpp"
7
7
  #include "duckdb/storage/statistics/list_stats.hpp"
8
8
  #include "duckdb/planner/expression_binder.hpp"
9
+ #include "duckdb/function/scalar/nested_functions.hpp"
9
10
 
10
11
  namespace duckdb {
11
12
 
@@ -57,15 +58,13 @@ unique_ptr<BaseStatistics> ListValueStats(ClientContext &context, FunctionStatis
57
58
  return list_stats.ToUnique();
58
59
  }
59
60
 
60
- void ListValueFun::RegisterFunction(BuiltinFunctions &set) {
61
+ ScalarFunction ListValueFun::GetFunction() {
61
62
  // the arguments and return types are actually set in the binder function
62
63
  ScalarFunction fun("list_value", {}, LogicalTypeId::LIST, ListValueFunction, ListValueBind, nullptr,
63
64
  ListValueStats);
64
65
  fun.varargs = LogicalType::ANY;
65
66
  fun.null_handling = FunctionNullHandling::SPECIAL_HANDLING;
66
- set.AddFunction(fun);
67
- fun.name = "list_pack";
68
- set.AddFunction(fun);
67
+ return fun;
69
68
  }
70
69
 
71
70
  } // namespace duckdb
@@ -1,5 +1,5 @@
1
+ #include "duckdb/core_functions/scalar/list_functions.hpp"
1
2
  #include "duckdb/planner/expression/bound_function_expression.hpp"
2
- #include "duckdb/function/scalar/nested_functions.hpp"
3
3
  #include "duckdb/common/types/data_chunk.hpp"
4
4
  #include "duckdb/common/types/vector.hpp"
5
5
  #include "duckdb/common/types/timestamp.hpp"
@@ -239,9 +239,9 @@ static void ListRangeFunction(DataChunk &args, ExpressionState &state, Vector &r
239
239
  result.Verify(args.size());
240
240
  }
241
241
 
242
- void ListRangeFun::RegisterFunction(BuiltinFunctions &set) {
242
+ ScalarFunctionSet ListRangeFun::GetFunctions() {
243
243
  // the arguments and return types are actually set in the binder function
244
- ScalarFunctionSet range_set("range");
244
+ ScalarFunctionSet range_set;
245
245
  range_set.AddFunction(ScalarFunction({LogicalType::BIGINT}, LogicalType::LIST(LogicalType::BIGINT),
246
246
  ListRangeFunction<NumericRangeInfo, false>));
247
247
  range_set.AddFunction(ScalarFunction({LogicalType::BIGINT, LogicalType::BIGINT},
@@ -253,9 +253,11 @@ void ListRangeFun::RegisterFunction(BuiltinFunctions &set) {
253
253
  range_set.AddFunction(ScalarFunction({LogicalType::TIMESTAMP, LogicalType::TIMESTAMP, LogicalType::INTERVAL},
254
254
  LogicalType::LIST(LogicalType::TIMESTAMP),
255
255
  ListRangeFunction<TimestampRangeInfo, false>));
256
- set.AddFunction(range_set);
256
+ return range_set;
257
+ }
257
258
 
258
- ScalarFunctionSet generate_series("generate_series");
259
+ ScalarFunctionSet GenerateSeriesFun::GetFunctions() {
260
+ ScalarFunctionSet generate_series;
259
261
  generate_series.AddFunction(ScalarFunction({LogicalType::BIGINT}, LogicalType::LIST(LogicalType::BIGINT),
260
262
  ListRangeFunction<NumericRangeInfo, true>));
261
263
  generate_series.AddFunction(ScalarFunction({LogicalType::BIGINT, LogicalType::BIGINT},
@@ -267,7 +269,7 @@ void ListRangeFun::RegisterFunction(BuiltinFunctions &set) {
267
269
  generate_series.AddFunction(ScalarFunction({LogicalType::TIMESTAMP, LogicalType::TIMESTAMP, LogicalType::INTERVAL},
268
270
  LogicalType::LIST(LogicalType::TIMESTAMP),
269
271
  ListRangeFunction<TimestampRangeInfo, true>));
270
- set.AddFunction(generate_series);
272
+ return generate_series;
271
273
  }
272
274
 
273
275
  } // namespace duckdb
@@ -1,8 +1,9 @@
1
+ #include "duckdb/core_functions/scalar/map_functions.hpp"
1
2
  #include "duckdb/planner/expression/bound_function_expression.hpp"
2
3
  #include "duckdb/common/string_util.hpp"
3
4
  #include "duckdb/parser/expression/bound_expression.hpp"
4
- #include "duckdb/function/scalar/nested_functions.hpp"
5
5
  #include "duckdb/common/types/data_chunk.hpp"
6
+ #include "duckdb/function/scalar/nested_functions.hpp"
6
7
 
7
8
  namespace duckdb {
8
9
 
@@ -39,11 +40,11 @@ static unique_ptr<FunctionData> CardinalityBind(ClientContext &context, ScalarFu
39
40
  return make_uniq<VariableReturnBindData>(bound_function.return_type);
40
41
  }
41
42
 
42
- void CardinalityFun::RegisterFunction(BuiltinFunctions &set) {
43
- ScalarFunction fun("cardinality", {LogicalType::ANY}, LogicalType::UBIGINT, CardinalityFunction, CardinalityBind);
43
+ ScalarFunction CardinalityFun::GetFunction() {
44
+ ScalarFunction fun({LogicalType::ANY}, LogicalType::UBIGINT, CardinalityFunction, CardinalityBind);
44
45
  fun.varargs = LogicalType::ANY;
45
46
  fun.null_handling = FunctionNullHandling::DEFAULT_NULL_HANDLING;
46
- set.AddFunction(fun);
47
+ return fun;
47
48
  }
48
49
 
49
50
  } // namespace duckdb
@@ -1,71 +1,14 @@
1
+ #include "duckdb/core_functions/scalar/map_functions.hpp"
1
2
  #include "duckdb/planner/expression/bound_function_expression.hpp"
2
3
  #include "duckdb/common/string_util.hpp"
3
4
  #include "duckdb/parser/expression/bound_expression.hpp"
4
- #include "duckdb/function/scalar/nested_functions.hpp"
5
5
  #include "duckdb/common/types/data_chunk.hpp"
6
6
  #include "duckdb/common/pair.hpp"
7
7
  #include "duckdb/common/types/value_map.hpp"
8
+ #include "duckdb/function/scalar/nested_functions.hpp"
8
9
 
9
10
  namespace duckdb {
10
11
 
11
- MapInvalidReason CheckMapValidity(Vector &map, idx_t count, const SelectionVector &sel) {
12
- D_ASSERT(map.GetType().id() == LogicalTypeId::MAP);
13
- UnifiedVectorFormat map_vdata;
14
-
15
- map.ToUnifiedFormat(count, map_vdata);
16
- auto &map_validity = map_vdata.validity;
17
-
18
- auto list_data = ListVector::GetData(map);
19
- auto &keys = MapVector::GetKeys(map);
20
- UnifiedVectorFormat key_vdata;
21
- keys.ToUnifiedFormat(count, key_vdata);
22
- auto &key_validity = key_vdata.validity;
23
-
24
- for (idx_t row = 0; row < count; row++) {
25
- auto mapped_row = sel.get_index(row);
26
- auto row_idx = map_vdata.sel->get_index(mapped_row);
27
- // map is allowed to be NULL
28
- if (!map_validity.RowIsValid(row_idx)) {
29
- continue;
30
- }
31
- row_idx = key_vdata.sel->get_index(row);
32
- value_set_t unique_keys;
33
- for (idx_t i = 0; i < list_data[row_idx].length; i++) {
34
- auto index = list_data[row_idx].offset + i;
35
- index = key_vdata.sel->get_index(index);
36
- if (!key_validity.RowIsValid(index)) {
37
- return MapInvalidReason::NULL_KEY;
38
- }
39
- auto value = keys.GetValue(index);
40
- auto result = unique_keys.insert(value);
41
- if (!result.second) {
42
- return MapInvalidReason::DUPLICATE_KEY;
43
- }
44
- }
45
- }
46
- return MapInvalidReason::VALID;
47
- }
48
-
49
- void MapConversionVerify(Vector &vector, idx_t count) {
50
- auto valid_check = CheckMapValidity(vector, count);
51
- switch (valid_check) {
52
- case MapInvalidReason::VALID:
53
- break;
54
- case MapInvalidReason::DUPLICATE_KEY: {
55
- throw InvalidInputException("Map keys have to be unique");
56
- }
57
- case MapInvalidReason::NULL_KEY: {
58
- throw InvalidInputException("Map keys can not be NULL");
59
- }
60
- case MapInvalidReason::NULL_KEY_LIST: {
61
- throw InvalidInputException("The list of map keys is not allowed to be NULL");
62
- }
63
- default: {
64
- throw InternalException("MapInvalidReason not implemented");
65
- }
66
- }
67
- }
68
-
69
12
  // Example:
70
13
  // source: [1,2,3], expansion_factor: 4
71
14
  // target (result): [1,2,3,1,2,3,1,2,3,1,2,3]
@@ -200,7 +143,7 @@ static void MapFunction(DataChunk &args, ExpressionState &state, Vector &result)
200
143
  value_vector.Reference(ListVector::GetEntry(args.data[1]));
201
144
  }
202
145
 
203
- MapConversionVerify(result, args.size());
146
+ MapVector::MapConversionVerify(result, args.size());
204
147
  result.Verify(args.size());
205
148
  }
206
149
 
@@ -234,12 +177,12 @@ static unique_ptr<FunctionData> MapBind(ClientContext &context, ScalarFunction &
234
177
  return make_uniq<VariableReturnBindData>(bound_function.return_type);
235
178
  }
236
179
 
237
- void MapFun::RegisterFunction(BuiltinFunctions &set) {
180
+ ScalarFunction MapFun::GetFunction() {
238
181
  //! the arguments and return types are actually set in the binder function
239
- ScalarFunction fun("map", {}, LogicalTypeId::MAP, MapFunction, MapBind);
182
+ ScalarFunction fun({}, LogicalTypeId::MAP, MapFunction, MapBind);
240
183
  fun.varargs = LogicalType::ANY;
241
184
  fun.null_handling = FunctionNullHandling::SPECIAL_HANDLING;
242
- set.AddFunction(fun);
185
+ return fun;
243
186
  }
244
187
 
245
188
  } // namespace duckdb
@@ -1,9 +1,10 @@
1
+ #include "duckdb/core_functions/scalar/map_functions.hpp"
1
2
  #include "duckdb/planner/expression/bound_function_expression.hpp"
2
3
  #include "duckdb/common/string_util.hpp"
3
4
  #include "duckdb/parser/expression/bound_expression.hpp"
4
- #include "duckdb/function/scalar/nested_functions.hpp"
5
5
  #include "duckdb/common/types/data_chunk.hpp"
6
6
  #include "duckdb/common/pair.hpp"
7
+ #include "duckdb/function/scalar/nested_functions.hpp"
7
8
 
8
9
  namespace duckdb {
9
10
 
@@ -50,12 +51,12 @@ static unique_ptr<FunctionData> MapEntriesBind(ClientContext &context, ScalarFun
50
51
  return make_uniq<VariableReturnBindData>(bound_function.return_type);
51
52
  }
52
53
 
53
- void MapEntriesFun::RegisterFunction(BuiltinFunctions &set) {
54
+ ScalarFunction MapEntriesFun::GetFunction() {
54
55
  //! the arguments and return types are actually set in the binder function
55
- ScalarFunction fun("map_entries", {}, LogicalTypeId::LIST, MapEntriesFunction, MapEntriesBind);
56
+ ScalarFunction fun({}, LogicalTypeId::LIST, MapEntriesFunction, MapEntriesBind);
56
57
  fun.null_handling = FunctionNullHandling::DEFAULT_NULL_HANDLING;
57
58
  fun.varargs = LogicalType::ANY;
58
- set.AddFunction(fun);
59
+ return fun;
59
60
  }
60
61
 
61
62
  } // namespace duckdb
@@ -1,10 +1,28 @@
1
+ #include "duckdb/core_functions/scalar/map_functions.hpp"
1
2
  #include "duckdb/planner/expression/bound_function_expression.hpp"
2
3
  #include "duckdb/common/string_util.hpp"
3
4
  #include "duckdb/parser/expression/bound_expression.hpp"
4
- #include "duckdb/function/scalar/nested_functions.hpp"
5
5
  #include "duckdb/common/types/data_chunk.hpp"
6
+ #include "duckdb/function/scalar/nested_functions.hpp"
6
7
 
7
8
  namespace duckdb {
9
+
10
+ struct MapKeyArgFunctor {
11
+ // MAP is a LIST(STRUCT(K,V))
12
+ // meaning the MAP itself is a List, but the child vector that we're interested in (the keys)
13
+ // are a level deeper than the initial child vector
14
+
15
+ static Vector &GetList(Vector &map) {
16
+ return map;
17
+ }
18
+ static idx_t GetListSize(Vector &map) {
19
+ return ListVector::GetListSize(map);
20
+ }
21
+ static Vector &GetEntry(Vector &map) {
22
+ return MapVector::GetKeys(map);
23
+ }
24
+ };
25
+
8
26
  void FillResult(Vector &map, Vector &offsets, Vector &result, idx_t count) {
9
27
  UnifiedVectorFormat map_data;
10
28
  map.ToUnifiedFormat(count, map_data);
@@ -124,14 +142,11 @@ static unique_ptr<FunctionData> MapExtractBind(ClientContext &context, ScalarFun
124
142
  return make_uniq<VariableReturnBindData>(value_type);
125
143
  }
126
144
 
127
- void MapExtractFun::RegisterFunction(BuiltinFunctions &set) {
128
- ScalarFunction fun("map_extract", {LogicalType::ANY, LogicalType::ANY}, LogicalType::ANY, MapExtractFunction,
129
- MapExtractBind);
145
+ ScalarFunction MapExtractFun::GetFunction() {
146
+ ScalarFunction fun({LogicalType::ANY, LogicalType::ANY}, LogicalType::ANY, MapExtractFunction, MapExtractBind);
130
147
  fun.varargs = LogicalType::ANY;
131
148
  fun.null_handling = FunctionNullHandling::SPECIAL_HANDLING;
132
- set.AddFunction(fun);
133
- fun.name = "element_at";
134
- set.AddFunction(fun);
149
+ return fun;
135
150
  }
136
151
 
137
152
  } // namespace duckdb
@@ -1,8 +1,9 @@
1
+ #include "duckdb/core_functions/scalar/map_functions.hpp"
1
2
  #include "duckdb/planner/expression/bound_function_expression.hpp"
2
3
  #include "duckdb/common/string_util.hpp"
3
4
  #include "duckdb/parser/expression/bound_expression.hpp"
4
- #include "duckdb/function/scalar/nested_functions.hpp"
5
5
  #include "duckdb/common/types/data_chunk.hpp"
6
+ #include "duckdb/function/scalar/nested_functions.hpp"
6
7
 
7
8
  namespace duckdb {
8
9
 
@@ -11,7 +12,7 @@ static void MapFromEntriesFunction(DataChunk &args, ExpressionState &state, Vect
11
12
 
12
13
  result.Reinterpret(args.data[0]);
13
14
 
14
- MapConversionVerify(result, count);
15
+ MapVector::MapConversionVerify(result, count);
15
16
  result.Verify(count);
16
17
 
17
18
  if (args.AllConstant()) {
@@ -48,12 +49,12 @@ static unique_ptr<FunctionData> MapFromEntriesBind(ClientContext &context, Scala
48
49
  return make_uniq<VariableReturnBindData>(bound_function.return_type);
49
50
  }
50
51
 
51
- void MapFromEntriesFun::RegisterFunction(BuiltinFunctions &set) {
52
+ ScalarFunction MapFromEntriesFun::GetFunction() {
52
53
  //! the arguments and return types are actually set in the binder function
53
- ScalarFunction fun("map_from_entries", {}, LogicalTypeId::MAP, MapFromEntriesFunction, MapFromEntriesBind);
54
+ ScalarFunction fun({}, LogicalTypeId::MAP, MapFromEntriesFunction, MapFromEntriesBind);
54
55
  fun.null_handling = FunctionNullHandling::DEFAULT_NULL_HANDLING;
55
56
  fun.varargs = LogicalType::ANY;
56
- set.AddFunction(fun);
57
+ return fun;
57
58
  }
58
59
 
59
60
  } // namespace duckdb
@@ -1,9 +1,10 @@
1
+ #include "duckdb/core_functions/scalar/map_functions.hpp"
1
2
  #include "duckdb/planner/expression/bound_function_expression.hpp"
2
3
  #include "duckdb/common/string_util.hpp"
3
4
  #include "duckdb/parser/expression/bound_expression.hpp"
4
- #include "duckdb/function/scalar/nested_functions.hpp"
5
5
  #include "duckdb/common/types/data_chunk.hpp"
6
6
  #include "duckdb/common/pair.hpp"
7
+ #include "duckdb/function/scalar/nested_functions.hpp"
7
8
 
8
9
  namespace duckdb {
9
10
 
@@ -79,19 +80,19 @@ static unique_ptr<FunctionData> MapValuesBind(ClientContext &context, ScalarFunc
79
80
  return MapKeyValueBind(context, bound_function, arguments, MapType::ValueType);
80
81
  }
81
82
 
82
- void MapKeysFun::RegisterFunction(BuiltinFunctions &set) {
83
+ ScalarFunction MapKeysFun::GetFunction() {
83
84
  //! the arguments and return types are actually set in the binder function
84
- ScalarFunction fun("map_keys", {}, LogicalTypeId::LIST, MapKeysFunction, MapKeysBind);
85
+ ScalarFunction fun({}, LogicalTypeId::LIST, MapKeysFunction, MapKeysBind);
85
86
  fun.null_handling = FunctionNullHandling::DEFAULT_NULL_HANDLING;
86
87
  fun.varargs = LogicalType::ANY;
87
- set.AddFunction(fun);
88
+ return fun;
88
89
  }
89
90
 
90
- void MapValuesFun::RegisterFunction(BuiltinFunctions &set) {
91
- ScalarFunction fun("map_values", {}, LogicalTypeId::LIST, MapValuesFunction, MapValuesBind);
91
+ ScalarFunction MapValuesFun::GetFunction() {
92
+ ScalarFunction fun({}, LogicalTypeId::LIST, MapValuesFunction, MapValuesBind);
92
93
  fun.null_handling = FunctionNullHandling::DEFAULT_NULL_HANDLING;
93
94
  fun.varargs = LogicalType::ANY;
94
- set.AddFunction(fun);
95
+ return fun;
95
96
  }
96
97
 
97
98
  } // namespace duckdb