Files
scylladb/cql3/functions/user_aggregate.hh
Jadw1 c921efd1b3 cql3: allow no final_func and no initcond in UDA
Makes final function and initial condition to be optional while
creating UDA. No final function means UDA returns final state
and defeult initial condition is `null`.

Fixes: #10324
2022-04-06 09:08:50 +02:00

44 lines
1.1 KiB
C++

/*
* Copyright (C) 2021-present ScyllaDB
*/
/*
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
#pragma once
#include "abstract_function.hh"
#include "scalar_function.hh"
#include "aggregate_function.hh"
namespace cql3 {
namespace functions {
class user_aggregate : public abstract_function, public aggregate_function{
bytes_opt _initcond;
::shared_ptr<scalar_function> _sfunc;
::shared_ptr<scalar_function> _finalfunc;
public:
user_aggregate(function_name fname, bytes_opt initcond, ::shared_ptr<scalar_function> sfunc, ::shared_ptr<scalar_function> finalfunc);
virtual std::unique_ptr<aggregate_function::aggregate> new_aggregate() override;
virtual bool is_pure() const override;
virtual bool is_native() const override;
virtual bool is_aggregate() const override;
virtual bool requires_thread() const override;
bool has_finalfunc() const;
const scalar_function& sfunc() const {
return *_sfunc;
}
const scalar_function& finalfunc() const {
return *_finalfunc;
}
const bytes_opt& initcond() const {
return _initcond;
}
};
}
}