Current section
Files
Jump to
Current section
Files
c_src/duckdb/src/planner/binder/tableref/bind_named_parameters.cpp
#include "duckdb/planner/binder.hpp"
namespace duckdb {
void Binder::BindNamedParameters(unordered_map<string, LogicalType> &types, unordered_map<string, Value> &values,
QueryErrorContext &error_context, string &func_name) {
for (auto &kv : values) {
auto entry = types.find(kv.first);
if (entry == types.end()) {
// create a list of named parameters for the error
string named_params;
for (auto &kv : types) {
named_params += " ";
named_params += kv.first;
named_params += " ";
named_params += kv.second.ToString();
named_params += "\n";
}
string error_msg;
if (named_params.empty()) {
error_msg = "Function does not accept any named parameters.";
} else {
error_msg = "Candidates: " + named_params;
}
throw BinderException(error_context.FormatError("Invalid named parameter \"%s\" for function %s\n%s",
kv.first, func_name, error_msg));
}
if (entry->second.id() != LogicalTypeId::ANY) {
kv.second = kv.second.CastAs(entry->second);
}
}
}
} // namespace duckdb