24473 {
24474 for (idx_t param_idx = 0; default_macro.parameters[param_idx] != nullptr; param_idx++) {
24475 function->parameters.push_back(make_uniq<ColumnRefExpression>(default_macro.parameters[param_idx]));
24476 }
24477 for (idx_t named_idx = 0; default_macro.named_parameters[named_idx].name != nullptr; named_idx++) {
24478 const auto &named_param = default_macro.named_parameters[named_idx];
24480 if (expr_list.size() != 1) {
24481 throw InternalException("Expected a single expression");
24482 }
24483 function->parameters.push_back(make_uniq<ColumnRefExpression>(named_param.name));
24484 function->default_parameters.insert(make_pair(named_param.name, std::move(expr_list[0])));
24485 }
24486
24487 auto type = CatalogType::TABLE_MACRO_ENTRY;
24488 auto bind_info = make_uniq<CreateMacroInfo>(type);
24489 bind_info->schema = default_macro.schema;
24490 bind_info->name = default_macro.name;
24491 bind_info->temporary = true;
24492 bind_info->internal = true;
24493 bind_info->macros.push_back(std::move(function));
24494 return bind_info;
24495}
static DUCKDB_API vector< unique_ptr< ParsedExpression > > ParseExpressionList(const string &select_list, ParserOptions options=ParserOptions())
Parses a list of expressions (i.e. the list found in a SELECT clause)