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.
- package/binding.gyp +21 -13
- package/package.json +1 -1
- package/src/duckdb/extension/icu/icu-datepart.cpp +51 -1
- package/src/duckdb/extension/icu/icu-strptime.cpp +1 -1
- package/src/duckdb/extension/json/include/json_functions.hpp +35 -37
- package/src/duckdb/extension/json/include/json_scan.hpp +1 -1
- package/src/duckdb/extension/json/include/json_transform.hpp +1 -1
- package/src/duckdb/extension/json/json-extension.cpp +10 -20
- package/src/duckdb/extension/json/json_functions/copy_json.cpp +2 -2
- package/src/duckdb/extension/json/json_functions/json_array_length.cpp +2 -3
- package/src/duckdb/extension/json/json_functions/json_contains.cpp +2 -2
- package/src/duckdb/extension/json/json_functions/json_create.cpp +20 -20
- package/src/duckdb/extension/json/json_functions/json_extract.cpp +4 -6
- package/src/duckdb/extension/json/json_functions/json_keys.cpp +2 -3
- package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +2 -2
- package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +8 -8
- package/src/duckdb/extension/json/json_functions/json_structure.cpp +2 -2
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +4 -4
- package/src/duckdb/extension/json/json_functions/json_type.cpp +2 -3
- package/src/duckdb/extension/json/json_functions/json_valid.cpp +2 -2
- package/src/duckdb/extension/json/json_functions/read_json.cpp +6 -6
- package/src/duckdb/extension/json/json_functions/read_json_objects.cpp +4 -4
- package/src/duckdb/extension/json/json_functions.cpp +6 -6
- package/src/duckdb/extension/parquet/parquet-extension.cpp +16 -28
- package/src/duckdb/src/catalog/catalog_entry/pragma_function_catalog_entry.cpp +1 -2
- package/src/duckdb/src/catalog/catalog_entry/scalar_function_catalog_entry.cpp +1 -1
- package/src/duckdb/src/catalog/catalog_entry/scalar_macro_catalog_entry.cpp +2 -2
- package/src/duckdb/src/catalog/catalog_entry/table_function_catalog_entry.cpp +1 -2
- package/src/duckdb/src/catalog/catalog_transaction.cpp +4 -0
- package/src/duckdb/src/catalog/duck_catalog.cpp +8 -1
- package/src/duckdb/src/common/enums/date_part_specifier.cpp +82 -0
- package/src/duckdb/src/common/local_file_system.cpp +1 -3
- package/src/duckdb/src/common/multi_file_reader.cpp +11 -8
- package/src/duckdb/src/common/types/vector.cpp +136 -3
- package/src/duckdb/src/{function → core_functions}/aggregate/algebraic/avg.cpp +9 -12
- package/src/duckdb/src/core_functions/aggregate/algebraic/corr.cpp +13 -0
- package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +21 -0
- package/src/duckdb/src/core_functions/aggregate/algebraic/stddev.cpp +34 -0
- package/src/duckdb/src/{function → core_functions}/aggregate/distributive/approx_count.cpp +3 -3
- package/src/duckdb/src/{function → core_functions}/aggregate/distributive/arg_min_max.cpp +7 -23
- package/src/duckdb/src/{function → core_functions}/aggregate/distributive/bitagg.cpp +10 -10
- package/src/duckdb/src/{function → core_functions}/aggregate/distributive/bitstring_agg.cpp +4 -4
- package/src/duckdb/src/{function → core_functions}/aggregate/distributive/bool.cpp +1 -17
- package/src/duckdb/src/{function → core_functions}/aggregate/distributive/entropy.cpp +5 -4
- package/src/duckdb/src/{function → core_functions}/aggregate/distributive/kurtosis.cpp +5 -6
- package/src/duckdb/src/{function → core_functions}/aggregate/distributive/minmax.cpp +5 -5
- package/src/duckdb/src/{function → core_functions}/aggregate/distributive/product.cpp +2 -11
- package/src/duckdb/src/{function → core_functions}/aggregate/distributive/skew.cpp +5 -6
- package/src/duckdb/src/{function → core_functions}/aggregate/distributive/string_agg.cpp +4 -6
- package/src/duckdb/src/{function → core_functions}/aggregate/distributive/sum.cpp +38 -46
- package/src/duckdb/src/{function → core_functions}/aggregate/holistic/approximate_quantile.cpp +4 -5
- package/src/duckdb/src/{function → core_functions}/aggregate/holistic/mode.cpp +4 -5
- package/src/duckdb/src/{function → core_functions}/aggregate/holistic/quantile.cpp +31 -23
- package/src/duckdb/src/{function → core_functions}/aggregate/holistic/reservoir_quantile.cpp +4 -5
- package/src/duckdb/src/{function → core_functions}/aggregate/nested/histogram.cpp +4 -4
- package/src/duckdb/src/{function → core_functions}/aggregate/nested/list.cpp +6 -10
- package/src/duckdb/src/{function → core_functions}/aggregate/regression/regr_avg.cpp +7 -11
- package/src/duckdb/src/{function → core_functions}/aggregate/regression/regr_count.cpp +4 -4
- package/src/duckdb/src/{function → core_functions}/aggregate/regression/regr_intercept.cpp +5 -8
- package/src/duckdb/src/{function → core_functions}/aggregate/regression/regr_r2.cpp +5 -7
- package/src/duckdb/src/{function → core_functions}/aggregate/regression/regr_slope.cpp +5 -7
- package/src/duckdb/src/{function → core_functions}/aggregate/regression/regr_sxx_syy.cpp +8 -12
- package/src/duckdb/src/{function → core_functions}/aggregate/regression/regr_sxy.cpp +6 -8
- package/src/duckdb/src/core_functions/core_functions.cpp +50 -0
- package/src/duckdb/src/core_functions/function_list.cpp +352 -0
- package/src/duckdb/src/{function → core_functions}/scalar/bit/bitstring.cpp +12 -15
- package/src/duckdb/src/{function → core_functions}/scalar/blob/base64.cpp +6 -6
- package/src/duckdb/src/{function → core_functions}/scalar/blob/encode.cpp +7 -6
- package/src/duckdb/src/{function → core_functions}/scalar/date/age.cpp +3 -3
- package/src/duckdb/src/{function → core_functions}/scalar/date/current.cpp +8 -8
- package/src/duckdb/src/{function → core_functions}/scalar/date/date_diff.cpp +3 -6
- package/src/duckdb/src/{function → core_functions}/scalar/date/date_part.cpp +144 -148
- package/src/duckdb/src/{function → core_functions}/scalar/date/date_sub.cpp +3 -6
- package/src/duckdb/src/{function → core_functions}/scalar/date/date_trunc.cpp +3 -6
- package/src/duckdb/src/{function → core_functions}/scalar/date/epoch.cpp +7 -8
- package/src/duckdb/src/{function → core_functions}/scalar/date/make_date.cpp +14 -14
- package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +251 -0
- package/src/duckdb/src/{function → core_functions}/scalar/date/time_bucket.cpp +4 -5
- package/src/duckdb/src/{function → core_functions}/scalar/date/to_interval.cpp +39 -19
- package/src/duckdb/src/{function/scalar/enum/enum_functions_implementation.cpp → core_functions/scalar/enum/enum_functions.cpp} +18 -22
- package/src/duckdb/src/{function → core_functions}/scalar/generic/alias.cpp +4 -4
- package/src/duckdb/src/{function → core_functions}/scalar/generic/current_setting.cpp +4 -5
- package/src/duckdb/src/{function → core_functions}/scalar/generic/error.cpp +4 -4
- package/src/duckdb/src/{function → core_functions}/scalar/generic/hash.cpp +4 -4
- package/src/duckdb/src/{function → core_functions}/scalar/generic/least.cpp +8 -9
- package/src/duckdb/src/{function → core_functions}/scalar/generic/stats.cpp +4 -4
- package/src/duckdb/src/{function/scalar/system → core_functions/scalar/generic}/system_functions.cpp +24 -13
- package/src/duckdb/src/{function → core_functions}/scalar/generic/typeof.cpp +4 -4
- package/src/duckdb/src/{function → core_functions}/scalar/list/array_slice.cpp +3 -13
- package/src/duckdb/src/{function → core_functions}/scalar/list/flatten.cpp +5 -5
- package/src/duckdb/src/{function → core_functions}/scalar/list/list_aggregates.cpp +2 -13
- package/src/duckdb/src/{function → core_functions}/scalar/list/list_lambdas.cpp +9 -24
- package/src/duckdb/src/{function → core_functions}/scalar/list/list_sort.cpp +8 -22
- package/src/duckdb/src/{function → core_functions}/scalar/list/list_value.cpp +4 -5
- package/src/duckdb/src/{function → core_functions}/scalar/list/range.cpp +8 -6
- package/src/duckdb/src/{function → core_functions}/scalar/map/cardinality.cpp +5 -4
- package/src/duckdb/src/{function → core_functions}/scalar/map/map.cpp +6 -63
- package/src/duckdb/src/{function → core_functions}/scalar/map/map_entries.cpp +5 -4
- package/src/duckdb/src/{function → core_functions}/scalar/map/map_extract.cpp +22 -7
- package/src/duckdb/src/{function → core_functions}/scalar/map/map_from_entries.cpp +6 -5
- package/src/duckdb/src/{function → core_functions}/scalar/map/map_keys_values.cpp +8 -7
- package/src/duckdb/src/{function → core_functions}/scalar/math/numeric.cpp +110 -138
- package/src/duckdb/src/{function → core_functions}/scalar/operators/bitwise.cpp +19 -20
- package/src/duckdb/src/{function/scalar/math → core_functions/scalar/random}/random.cpp +5 -6
- package/src/duckdb/src/{function/scalar/math → core_functions/scalar/random}/setseed.cpp +3 -3
- package/src/duckdb/src/{function → core_functions}/scalar/string/ascii.cpp +4 -5
- package/src/duckdb/src/{function → core_functions}/scalar/string/bar.cpp +4 -4
- package/src/duckdb/src/{function → core_functions}/scalar/string/chr.cpp +5 -6
- package/src/duckdb/src/{function → core_functions}/scalar/string/damerau_levenshtein.cpp +4 -6
- package/src/duckdb/src/{function/scalar/string/mismatches.cpp → core_functions/scalar/string/hamming.cpp} +3 -12
- package/src/duckdb/src/{function → core_functions}/scalar/string/hex.cpp +15 -25
- package/src/duckdb/src/{function → core_functions}/scalar/string/instr.cpp +6 -13
- package/src/duckdb/src/{function → core_functions}/scalar/string/jaccard.cpp +3 -6
- package/src/duckdb/src/{function → core_functions}/scalar/string/jaro_winkler.cpp +7 -6
- package/src/duckdb/src/{function → core_functions}/scalar/string/left_right.cpp +18 -11
- package/src/duckdb/src/{function → core_functions}/scalar/string/levenshtein.cpp +3 -12
- package/src/duckdb/src/{function → core_functions}/scalar/string/md5.cpp +15 -21
- package/src/duckdb/src/{function → core_functions}/scalar/string/pad.cpp +7 -13
- package/src/duckdb/src/{function → core_functions}/scalar/string/printf.cpp +10 -10
- package/src/duckdb/src/{function → core_functions}/scalar/string/repeat.cpp +3 -6
- package/src/duckdb/src/{function → core_functions}/scalar/string/replace.cpp +4 -7
- package/src/duckdb/src/{function → core_functions}/scalar/string/reverse.cpp +3 -3
- package/src/duckdb/src/{function → core_functions}/scalar/string/starts_with.cpp +4 -8
- package/src/duckdb/src/{function → core_functions}/scalar/string/string_split.cpp +11 -11
- package/src/duckdb/src/{function → core_functions}/scalar/string/translate.cpp +4 -7
- package/src/duckdb/src/{function → core_functions}/scalar/string/trim.cpp +19 -14
- package/src/duckdb/src/core_functions/scalar/string/unicode.cpp +28 -0
- package/src/duckdb/src/{function → core_functions}/scalar/struct/struct_insert.cpp +4 -4
- package/src/duckdb/src/{function → core_functions}/scalar/struct/struct_pack.cpp +3 -4
- package/src/duckdb/src/{function → core_functions}/scalar/union/union_extract.cpp +4 -8
- package/src/duckdb/src/{function → core_functions}/scalar/union/union_tag.cpp +4 -8
- package/src/duckdb/src/{function → core_functions}/scalar/union/union_value.cpp +4 -59
- package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +1 -1
- package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +1 -1
- package/src/duckdb/src/execution/operator/persistent/parallel_csv_reader.cpp +1 -1
- package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +11 -2
- package/src/duckdb/src/function/aggregate/distributive_functions.cpp +0 -17
- package/src/duckdb/src/function/cast/string_cast.cpp +1 -1
- package/src/duckdb/src/function/function.cpp +0 -8
- package/src/duckdb/src/function/function_set.cpp +25 -0
- package/src/duckdb/src/function/scalar/generic_functions.cpp +1 -9
- package/src/duckdb/src/function/scalar/nested_functions.cpp +0 -22
- package/src/duckdb/src/function/scalar/operators.cpp +0 -6
- package/src/duckdb/src/function/scalar/{date/strftime.cpp → strftime_format.cpp} +1 -249
- package/src/duckdb/src/function/scalar/string/length.cpp +0 -19
- package/src/duckdb/src/function/scalar/string_functions.cpp +0 -40
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +5 -0
- package/src/duckdb/src/function/table/arrow_conversion.cpp +1 -1
- package/src/duckdb/src/function/table/read_csv.cpp +7 -4
- package/src/duckdb/src/function/table/system/duckdb_functions.cpp +27 -40
- package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/aggregate_function_catalog_entry.hpp +3 -3
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/function_entry.hpp +33 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/macro_catalog_entry.hpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/pragma_function_catalog_entry.hpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_function_catalog_entry.hpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_function_catalog_entry.hpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_transaction.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/algorithm.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +5 -4
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +11 -1
- package/src/duckdb/src/include/duckdb/{function → core_functions}/aggregate/algebraic/corr.hpp +3 -4
- package/src/duckdb/src/include/duckdb/{function → core_functions}/aggregate/algebraic/covar.hpp +1 -1
- package/src/duckdb/src/include/duckdb/{function → core_functions}/aggregate/algebraic/stddev.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic_functions.hpp +124 -0
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +229 -0
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/holistic_functions.hpp +85 -0
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/nested_functions.hpp +41 -0
- package/src/duckdb/src/include/duckdb/{function → core_functions}/aggregate/regression/regr_count.hpp +3 -4
- package/src/duckdb/src/include/duckdb/{function → core_functions}/aggregate/regression/regr_slope.hpp +2 -2
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression_functions.hpp +97 -0
- package/src/duckdb/src/include/duckdb/{function → core_functions}/aggregate/sum_helpers.hpp +1 -1
- package/src/duckdb/src/include/duckdb/{function/scalar/uuid_functions.hpp → core_functions/core_functions.hpp} +7 -5
- package/src/duckdb/src/include/duckdb/core_functions/function_list.hpp +33 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/bit_functions.hpp +52 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/blob_functions.hpp +58 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +544 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/enum_functions.hpp +61 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +142 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +220 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +85 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/math_functions.hpp +394 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/operators_functions.hpp +70 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/random_functions.hpp +49 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +439 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/struct_functions.hpp +40 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/union_functions.hpp +43 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/base_csv_reader.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_type.hpp +4 -0
- package/src/duckdb/src/include/duckdb/function/aggregate/distributive_functions.hpp +0 -85
- package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +0 -8
- package/src/duckdb/src/include/duckdb/function/function_set.hpp +7 -2
- package/src/duckdb/src/include/duckdb/function/scalar/generic_functions.hpp +1 -36
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +0 -120
- package/src/duckdb/src/include/duckdb/function/scalar/operators.hpp +0 -24
- package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +1 -97
- package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/database.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/database_manager.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +0 -2
- package/src/duckdb/src/include/duckdb/main/extension_util.hpp +48 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_function_info.hpp +6 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +5 -1
- package/src/duckdb/src/main/attached_database.cpp +5 -3
- package/src/duckdb/src/main/database.cpp +34 -37
- package/src/duckdb/src/main/extension/extension_helper.cpp +1 -0
- package/src/duckdb/src/main/extension/extension_load.cpp +61 -38
- package/src/duckdb/src/main/extension/extension_util.cpp +90 -0
- package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +1 -4
- package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +2 -4
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +43 -24
- package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +3 -0
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +17 -28
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +6 -7
- package/src/duckdb/third_party/fmt/format.cc +0 -5
- package/src/duckdb/third_party/fmt/include/fmt/core.h +10 -12
- package/src/duckdb/third_party/fmt/include/fmt/format-inl.h +2 -33
- package/src/duckdb/third_party/fmt/include/fmt/format.h +61 -24
- package/src/duckdb/third_party/fmt/include/fmt/printf.h +15 -1
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +1 -0
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +10735 -10674
- package/src/duckdb/ub_src_common_enums.cpp +2 -0
- package/src/duckdb/ub_src_core_functions.cpp +4 -0
- package/src/duckdb/ub_src_core_functions_aggregate_algebraic.cpp +8 -0
- package/src/duckdb/ub_src_core_functions_aggregate_distributive.cpp +24 -0
- package/src/duckdb/ub_src_core_functions_aggregate_holistic.cpp +8 -0
- package/src/duckdb/ub_src_core_functions_aggregate_nested.cpp +4 -0
- package/src/duckdb/ub_src_core_functions_aggregate_regression.cpp +14 -0
- package/src/duckdb/ub_src_core_functions_scalar_bit.cpp +2 -0
- package/src/duckdb/ub_src_core_functions_scalar_blob.cpp +4 -0
- package/src/duckdb/ub_src_core_functions_scalar_date.cpp +22 -0
- package/src/duckdb/ub_src_core_functions_scalar_enum.cpp +2 -0
- package/src/duckdb/ub_src_core_functions_scalar_generic.cpp +16 -0
- package/src/duckdb/ub_src_core_functions_scalar_list.cpp +14 -0
- package/src/duckdb/ub_src_core_functions_scalar_map.cpp +12 -0
- package/src/duckdb/ub_src_core_functions_scalar_math.cpp +2 -0
- package/src/duckdb/ub_src_core_functions_scalar_operators.cpp +2 -0
- package/src/duckdb/ub_src_core_functions_scalar_random.cpp +4 -0
- package/src/duckdb/ub_src_core_functions_scalar_string.cpp +44 -0
- package/src/duckdb/ub_src_core_functions_scalar_struct.cpp +4 -0
- package/src/duckdb/ub_src_core_functions_scalar_union.cpp +6 -0
- package/src/duckdb/ub_src_function_aggregate.cpp +0 -8
- package/src/duckdb/ub_src_function_aggregate_distributive.cpp +0 -24
- package/src/duckdb/ub_src_function_scalar.cpp +2 -8
- package/src/duckdb/ub_src_function_scalar_generic.cpp +0 -14
- package/src/duckdb/ub_src_function_scalar_list.cpp +0 -14
- package/src/duckdb/ub_src_function_scalar_operators.cpp +0 -2
- package/src/duckdb/ub_src_function_scalar_string.cpp +0 -42
- package/src/duckdb/ub_src_function_scalar_struct.cpp +0 -4
- package/src/duckdb/ub_src_function_scalar_system.cpp +0 -2
- package/src/duckdb/ub_src_main_extension.cpp +2 -0
- package/src/duckdb/src/function/aggregate/algebraic/corr.cpp +0 -14
- package/src/duckdb/src/function/aggregate/algebraic/covar.cpp +0 -25
- package/src/duckdb/src/function/aggregate/algebraic/stddev.cpp +0 -54
- package/src/duckdb/src/function/aggregate/algebraic_functions.cpp +0 -21
- package/src/duckdb/src/function/aggregate/holistic_functions.cpp +0 -12
- package/src/duckdb/src/function/aggregate/nested_functions.cpp +0 -10
- package/src/duckdb/src/function/aggregate/regression_functions.cpp +0 -21
- package/src/duckdb/src/function/scalar/date_functions.cpp +0 -22
- package/src/duckdb/src/function/scalar/enum_functions.cpp +0 -13
- package/src/duckdb/src/function/scalar/math_functions.cpp +0 -50
- package/src/duckdb/src/function/scalar/trigonometrics_functions.cpp +0 -18
- package/src/duckdb/src/include/duckdb/function/aggregate/algebraic_functions.hpp +0 -56
- package/src/duckdb/src/include/duckdb/function/aggregate/holistic_functions.hpp +0 -33
- package/src/duckdb/src/include/duckdb/function/aggregate/nested_functions.hpp +0 -26
- package/src/duckdb/src/include/duckdb/function/aggregate/regression_functions.hpp +0 -53
- package/src/duckdb/src/include/duckdb/function/scalar/bit_functions.hpp +0 -32
- package/src/duckdb/src/include/duckdb/function/scalar/blob_functions.hpp +0 -24
- package/src/duckdb/src/include/duckdb/function/scalar/date_functions.hpp +0 -73
- package/src/duckdb/src/include/duckdb/function/scalar/enum_functions.hpp +0 -37
- package/src/duckdb/src/include/duckdb/function/scalar/math_functions.hpp +0 -137
- package/src/duckdb/src/include/duckdb/function/scalar/trigonometric_functions.hpp +0 -49
- package/src/duckdb/ub_src_function_aggregate_algebraic.cpp +0 -8
- package/src/duckdb/ub_src_function_aggregate_holistic.cpp +0 -8
- package/src/duckdb/ub_src_function_aggregate_nested.cpp +0 -4
- package/src/duckdb/ub_src_function_aggregate_regression.cpp +0 -14
- package/src/duckdb/ub_src_function_scalar_bit.cpp +0 -2
- package/src/duckdb/ub_src_function_scalar_blob.cpp +0 -4
- package/src/duckdb/ub_src_function_scalar_date.cpp +0 -22
- package/src/duckdb/ub_src_function_scalar_enum.cpp +0 -2
- package/src/duckdb/ub_src_function_scalar_map.cpp +0 -12
- package/src/duckdb/ub_src_function_scalar_math.cpp +0 -6
- package/src/duckdb/ub_src_function_scalar_union.cpp +0 -6
- /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
|
-
|
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
|
-
|
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
|
-
|
131
|
-
ScalarFunction
|
132
|
-
|
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
|
-
|
381
|
-
|
382
|
-
|
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
|
-
|
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
|
-
|
400
|
-
|
401
|
-
|
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
|
-
|
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/
|
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
|
-
|
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
|
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
|
-
|
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
|
330
|
+
ScalarFunctionSet list_reverse_sort;
|
340
331
|
list_reverse_sort.AddFunction(sort_reverse);
|
341
332
|
list_reverse_sort.AddFunction(sort_reverse_null_order);
|
342
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
242
|
+
ScalarFunctionSet ListRangeFun::GetFunctions() {
|
243
243
|
// the arguments and return types are actually set in the binder function
|
244
|
-
ScalarFunctionSet range_set
|
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
|
-
|
256
|
+
return range_set;
|
257
|
+
}
|
257
258
|
|
258
|
-
|
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
|
-
|
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
|
-
|
43
|
-
ScalarFunction fun(
|
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
|
-
|
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
|
-
|
180
|
+
ScalarFunction MapFun::GetFunction() {
|
238
181
|
//! the arguments and return types are actually set in the binder function
|
239
|
-
ScalarFunction fun(
|
182
|
+
ScalarFunction fun({}, LogicalTypeId::MAP, MapFunction, MapBind);
|
240
183
|
fun.varargs = LogicalType::ANY;
|
241
184
|
fun.null_handling = FunctionNullHandling::SPECIAL_HANDLING;
|
242
|
-
|
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
|
-
|
54
|
+
ScalarFunction MapEntriesFun::GetFunction() {
|
54
55
|
//! the arguments and return types are actually set in the binder function
|
55
|
-
ScalarFunction fun(
|
56
|
+
ScalarFunction fun({}, LogicalTypeId::LIST, MapEntriesFunction, MapEntriesBind);
|
56
57
|
fun.null_handling = FunctionNullHandling::DEFAULT_NULL_HANDLING;
|
57
58
|
fun.varargs = LogicalType::ANY;
|
58
|
-
|
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
|
-
|
128
|
-
ScalarFunction fun(
|
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
|
-
|
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
|
-
|
52
|
+
ScalarFunction MapFromEntriesFun::GetFunction() {
|
52
53
|
//! the arguments and return types are actually set in the binder function
|
53
|
-
ScalarFunction fun(
|
54
|
+
ScalarFunction fun({}, LogicalTypeId::MAP, MapFromEntriesFunction, MapFromEntriesBind);
|
54
55
|
fun.null_handling = FunctionNullHandling::DEFAULT_NULL_HANDLING;
|
55
56
|
fun.varargs = LogicalType::ANY;
|
56
|
-
|
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
|
-
|
83
|
+
ScalarFunction MapKeysFun::GetFunction() {
|
83
84
|
//! the arguments and return types are actually set in the binder function
|
84
|
-
ScalarFunction fun(
|
85
|
+
ScalarFunction fun({}, LogicalTypeId::LIST, MapKeysFunction, MapKeysBind);
|
85
86
|
fun.null_handling = FunctionNullHandling::DEFAULT_NULL_HANDLING;
|
86
87
|
fun.varargs = LogicalType::ANY;
|
87
|
-
|
88
|
+
return fun;
|
88
89
|
}
|
89
90
|
|
90
|
-
|
91
|
-
ScalarFunction fun(
|
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
|
-
|
95
|
+
return fun;
|
95
96
|
}
|
96
97
|
|
97
98
|
} // namespace duckdb
|