Azure / Azure/data-api-builder

[Bug]: "Invalid collection name" when using stored procedures

Open
#1,500 3 comments 0 reactions 0 assignees View on GitHub
enhancement pgsql triage
Dominant language
C#
Stars
1.5k
Forks
370
Avg merge
3d 17h
Merged PRs (30d)
8

Description

### What happened?

Having a Postgresql database running on Azure, I tried to set up a REST API to a table and a stored procedure locally. With the table entity, the API works fine. As soon as I add the stored procedure to 'entities', dab cannot be started anymore. The dab-config part for the stored procedure (within entities{}) looks as follows:

```
"my_procedure": {
"source": {
"type": "stored-procedure",
"object": "my_pg_procedure"
},
"permissions": [
{
"role": "anonymous",
"actions": [
"execute"
]
}
],
"rest": {
"methods": [
"get"
]
},
"graphql": {
"operation": "mutation"
}
}
```

### Version

0.7.5

### What database are you using?

PostgreSQL

### What hosting model are you using?

Local (including CLI)

### Which API approach are you accessing DAB through?

REST

### Relevant log output

```Text
fail: Azure.DataApiBuilder.Service.Startup[0]
Unable to complete runtime initialization. Refer to exception for error details.
System.ArgumentOutOfRangeException: Invalid collection name. (Parameter 'collectionName')
Actual value was Procedures.
at Npgsql.NpgsqlSchema.GetSchema(NpgsqlConnection conn, String collectionName, String[] restrictions, Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlConnection.GetSchemaAsync(String collectionName, String[] restrictions, CancellationToken cancellationToken)
at Azure.DataApiBuilder.Service.Services.SqlMetadataProvider`3.FillSchemaForStoredProcedureAsync(Entity procedureEntity, String entityName, String schemaName, String storedProcedureSourceName, StoredProcedureDefinition storedProcedureDefinition)
at Azure.DataApiBuilder.Service.Services.SqlMetadataProvider`3.PopulateObjectDefinitionForEntities()
at Azure.DataApiBuilder.Service.Services.SqlMetadataProvider`3.InitializeAsync()
at Azure.DataApiBuilder.Service.Startup.PerformOnConfigChangeAsync(IApplicationBuilder app)
info: Azure.DataApiBuilder.Service.Startup[0]
Loading config file: dab-config.json
fail: Azure.DataApiBuilder.Service.Startup[0]
Exiting the runtime engine...
crit: Microsoft.AspNetCore.Hosting.Diagnostics[6]
Application startup exception
System.ApplicationException: Could not initialize the engine with the runtime config file: dab-config.json
at Azure.DataApiBuilder.Service.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env, RuntimeConfigProvider runtimeConfigProvider)
at System.RuntimeMethodHandle.InvokeMethod(Object target, Span`1& arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.b__0(IApplicationBuilder builder)
at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass15_0.b__1(IApplicationBuilder app)
at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.b__0(IApplicationBuilder app)
at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
Unable to launch the runtime due to: System.ApplicationException: Could not initialize the engine with the runtime config file: dab-config.json
at Azure.DataApiBuilder.Service.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env, RuntimeConfigProvider runtimeConfigProvider)
at System.RuntimeMethodHandle.InvokeMethod(Object target, Span`1& arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.b__0(IApplicationBuilder builder)
at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass15_0.b__1(IApplicationBuilder app)
at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.b__0(IApplicationBuilder app)
at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
at Azure.DataApiBuilder.Service.Program.StartEngine(String[] args)
Error: Failed to start the engine.
```

### Code of Conduct

- [X] I agree to follow this project's Code of Conduct

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.