/* * Copyright (C) 2021-present ScyllaDB */ /* * SPDX-License-Identifier: AGPL-3.0-or-later */ #pragma once #include "cql3/statements/function_statement.hh" #include "cql3/cql3_type.hh" #include "cql3/expr/expression.hh" #include namespace cql3 { class query_processor; namespace functions { class user_aggregate; } namespace statements { class create_aggregate_statement final : public create_function_statement_base { virtual std::unique_ptr prepare(data_dictionary::database db, cql_stats& stats) override; future, std::vector>> prepare_schema_mutations(query_processor& qp, api::timestamp_type) const override; virtual shared_ptr create(query_processor& qp, functions::function* old) const override; sstring _sfunc; shared_ptr _stype; std::optional _ffunc; std::optional _ival; public: create_aggregate_statement(functions::function_name name, std::vector> arg_types, sstring sfunc, shared_ptr stype, std::optional ffunc, std::optional ival, bool or_replace, bool if_not_exists); }; } }