1#include "duckdb/function/pragma_function.hpp"
2#include "duckdb/common/string_util.hpp"
3
4namespace duckdb {
5
6PragmaFunction::PragmaFunction(string name, PragmaType pragma_type, pragma_query_t query, pragma_function_t function,
7 vector<LogicalType> arguments, LogicalType varargs)
8 : SimpleNamedParameterFunction(std::move(name), std::move(arguments), std::move(varargs)), type(pragma_type),
9 query(query), function(function) {
10}
11
12PragmaFunction PragmaFunction::PragmaCall(const string &name, pragma_query_t query, vector<LogicalType> arguments,
13 LogicalType varargs) {
14 return PragmaFunction(name, PragmaType::PRAGMA_CALL, query, nullptr, std::move(arguments), std::move(varargs));
15}
16
17PragmaFunction PragmaFunction::PragmaCall(const string &name, pragma_function_t function, vector<LogicalType> arguments,
18 LogicalType varargs) {
19 return PragmaFunction(name, PragmaType::PRAGMA_CALL, nullptr, function, std::move(arguments), std::move(varargs));
20}
21
22PragmaFunction PragmaFunction::PragmaStatement(const string &name, pragma_query_t query) {
23 vector<LogicalType> types;
24 return PragmaFunction(name, PragmaType::PRAGMA_STATEMENT, query, nullptr, std::move(types), LogicalType::INVALID);
25}
26
27PragmaFunction PragmaFunction::PragmaStatement(const string &name, pragma_function_t function) {
28 vector<LogicalType> types;
29 return PragmaFunction(name, PragmaType::PRAGMA_STATEMENT, nullptr, function, std::move(types),
30 LogicalType::INVALID);
31}
32
33string PragmaFunction::ToString() const {
34 switch (type) {
35 case PragmaType::PRAGMA_STATEMENT:
36 return StringUtil::Format(fmt_str: "PRAGMA %s", params: name);
37 case PragmaType::PRAGMA_CALL: {
38 return StringUtil::Format(fmt_str: "PRAGMA %s", params: SimpleNamedParameterFunction::ToString());
39 }
40 default:
41 return "UNKNOWN";
42 }
43}
44
45} // namespace duckdb
46