24187 {
24188 auto type = CatalogType::MACRO_ENTRY;
24189 auto bind_info = make_uniq<CreateMacroInfo>(type);
24190 for(auto &default_macro : macros) {
24191
24193 D_ASSERT(expressions.size() == 1);
24194
24195 auto function = make_uniq<ScalarMacroFunction>(std::move(expressions[0]));
24196 for (idx_t param_idx = 0; default_macro.parameters[param_idx] != nullptr; param_idx++) {
24197 function->parameters.push_back(
24198 make_uniq<ColumnRefExpression>(default_macro.parameters[param_idx]));
24199 }
24200 for (idx_t named_idx = 0; default_macro.named_parameters[named_idx].name != nullptr; named_idx++) {
24201 const auto &named_param = default_macro.named_parameters[named_idx];
24203 if (expr_list.size() != 1) {
24204 throw InternalException("Expected a single expression");
24205 }
24206 function->parameters.push_back(make_uniq<ColumnRefExpression>(named_param.name));
24207 function->default_parameters.insert(make_pair(named_param.name, std::move(expr_list[0])));
24208 }
24209 D_ASSERT(function->type == MacroType::SCALAR_MACRO);
24210 bind_info->macros.push_back(std::move(function));
24211 }
24212 bind_info->schema = macros[0].schema;
24213 bind_info->name = macros[0].name;
24214 bind_info->temporary = true;
24215 bind_info->internal = true;
24216 return bind_info;
24217}
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)