/* * Copyright (C) 2019-present ScyllaDB */ /* * SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0 */ #pragma once #include "cql3/statements/function_statement.hh" #include "audit/audit.hh" #include "cql3/cql3_type.hh" namespace cql3 { class query_processor; namespace functions { class user_function; } namespace statements { class create_function_statement final : public create_function_statement_base { virtual std::unique_ptr prepare(data_dictionary::database db, cql_stats& stats) override; future, utils::chunked_vector, cql3::cql_warnings_vec>> prepare_schema_mutations(query_processor& qp, const query_options& options, api::timestamp_type) const override; virtual seastar::future> create(query_processor& qp, db::functions::function* old) const override; sstring _language; sstring _body; std::vector> _arg_names; shared_ptr _return_type; bool _called_on_null_input; protected: virtual audit::statement_category category() const override; virtual audit::audit_info_ptr audit_info() const override; public: create_function_statement(functions::function_name name, sstring language, sstring body, std::vector> arg_names, std::vector> arg_types, shared_ptr return_type, bool called_on_null_input, bool or_replace, bool if_not_exists); }; } }