1 #ifndef EXPR_FUNCCALLOPERATOR_H
2 #define EXPR_FUNCCALLOPERATOR_H
10 template<
class ...UniquePtrs>
11 static std::unique_ptr<FuncCallOperator>
13 std::shared_ptr<const SysTable_Type> rettyp;
16 return absl::WrapUnique(
20 std::forward<UniquePtrs>(arg_exprs)...));
25 Datum Eval(
const std::vector<NullableDatumRef>& record)
const override;
27 Datum Eval(
const char* record)
const override;
32 template<
class ...UniquePtrs>
35 std::shared_ptr<const SysTable_Type> rettyp,
36 UniquePtrs&& ...arg_exprs):
40 m_nargs((int16_t) sizeof...(UniquePtrs)) {
41 m_type = std::move(rettyp);
44 template<
class ...UniquePtrs>
47 std::shared_ptr<const SysTable_Type> &rettyp,
48 const UniquePtrs&... arg_exprs) {
49 std::vector<const ExprNode*> arg_expr_ptrs {{
58 std::shared_ptr<const SysTable_Type> &rettyp,
59 std::vector<const ExprNode*> arg_expr_ptrs);
#define TAG(nodeclsname)
Definition: NodeTag.h:26
A Datum stores and possibly manage the memory resource of a read-only value of a plain fixed-length C...
Definition: datum.h:250
ExprNode is an abstract class of all expressions.
Definition: ExprNode.h:29
std::shared_ptr< const SysTable_Type > m_type
Definition: ExprNode.h:61
Definition: FuncCallOperator.h:8
static FunctionInfo CheckAndLookupFunctionImpl(Oid funcid, std::shared_ptr< const SysTable_Type > &rettyp, std::vector< const ExprNode * > arg_expr_ptrs)
Definition: FuncCallOperator.cpp:8
FuncCallOperator(FunctionInfo &&func, Oid funcid, std::shared_ptr< const SysTable_Type > rettyp, UniquePtrs &&...arg_exprs)
Definition: FuncCallOperator.h:33
~FuncCallOperator() override
Definition: FuncCallOperator.h:23
static FunctionInfo CheckAndLookupFunction(Oid funcid, std::shared_ptr< const SysTable_Type > &rettyp, const UniquePtrs &... arg_exprs)
Definition: FuncCallOperator.h:46
FunctionInfo m_func
Definition: FuncCallOperator.h:61
static std::unique_ptr< FuncCallOperator > Create(Oid funcid, UniquePtrs &&...arg_exprs)
Definition: FuncCallOperator.h:12
Oid m_funcid
Definition: FuncCallOperator.h:62
Datum Eval(const std::vector< NullableDatumRef > &record) const override
Evaluate function upon a deserialized record.
Definition: FuncCallOperator.cpp:47
void node_properties_to_string(std::string &buf, int indent) const override
Definition: FuncCallOperator.cpp:77
int16_t m_nargs
Definition: FuncCallOperator.h:63
uint32_t Oid
Definition: tdb_base.h:210
std::function< Datum(FunctionCallInfo &)> FunctionInfo
An FMGR managed function should be declared as.
Definition: fmgr.h:50