diff --git a/src/Core/Resolvers/IQueryExecutor.cs b/src/Core/Resolvers/IQueryExecutor.cs
index a9bb00b2a0..8110004444 100644
--- a/src/Core/Resolvers/IQueryExecutor.cs
+++ b/src/Core/Resolvers/IQueryExecutor.cs
@@ -24,15 +24,15 @@ public interface IQueryExecutor
/// in the DbDataReader obtained after executing the query.
/// Current request httpContext.
/// List of string arguments to the DbDataReader handler.
- /// dataSourceName against which to run query.
+ /// dataSourceName against which to run query. Can specify null or empty to run against default db.
/// An object formed using the results of the query as returned by the given handler.
public Task ExecuteQueryAsync(
string sqltext,
IDictionary parameters,
Func?, Task>? dataReaderHandler,
+ string dataSourceName,
HttpContext? httpContext = null,
- List? args = null,
- string dataSourceName = "");
+ List? args = null);
///
/// Extracts the rows from the given DbDataReader to populate
diff --git a/src/Core/Resolvers/QueryExecutor.cs b/src/Core/Resolvers/QueryExecutor.cs
index 0736d2fc1b..ba40651414 100644
--- a/src/Core/Resolvers/QueryExecutor.cs
+++ b/src/Core/Resolvers/QueryExecutor.cs
@@ -65,9 +65,9 @@ public QueryExecutor(DbExceptionParser dbExceptionParser,
string sqltext,
IDictionary parameters,
Func?, Task>? dataReaderHandler,
+ string dataSourceName,
HttpContext? httpContext = null,
- List? args = null,
- string dataSourceName = "")
+ List? args = null)
{
if (string.IsNullOrEmpty(dataSourceName))
{
diff --git a/src/Core/Resolvers/SqlMutationEngine.cs b/src/Core/Resolvers/SqlMutationEngine.cs
index d0bf798797..74356358cf 100644
--- a/src/Core/Resolvers/SqlMutationEngine.cs
+++ b/src/Core/Resolvers/SqlMutationEngine.cs
@@ -277,6 +277,7 @@ await queryExecutor.ExecuteQueryAsync(
queryText,
executeQueryStructure.Parameters,
queryExecutor.GetJsonArrayAsync,
+ dataSourceName,
GetHttpContext());
transactionScope.Complete();
@@ -840,9 +841,9 @@ await queryExecutor.ExecuteQueryAsync(
queryString,
queryParameters,
queryExecutor.ExtractResultSetFromDbDataReader,
+ dataSourceName,
GetHttpContext(),
- primaryKeyExposedColumnNames.Count > 0 ? primaryKeyExposedColumnNames : sourceDefinition.PrimaryKey,
- dataSourceName);
+ primaryKeyExposedColumnNames.Count > 0 ? primaryKeyExposedColumnNames : sourceDefinition.PrimaryKey);
dbResultSetRow = dbResultSet is not null ?
(dbResultSet.Rows.FirstOrDefault() ?? new DbResultSetRow()) : null;
@@ -991,9 +992,9 @@ private async Task
queryString,
queryParameters,
queryExecutor.GetMultipleResultSetsIfAnyAsync,
+ dataSourceName,
GetHttpContext(),
- new List { prettyPrintPk, entityName },
- dataSourceName);
+ new List { prettyPrintPk, entityName });
}
private Dictionary PrepareParameters(RestRequestContext context)
diff --git a/src/Core/Services/MetadataProviders/MsSqlMetadataProvider.cs b/src/Core/Services/MetadataProviders/MsSqlMetadataProvider.cs
index c9cda7e8fd..3bc4e876e1 100644
--- a/src/Core/Services/MetadataProviders/MsSqlMetadataProvider.cs
+++ b/src/Core/Services/MetadataProviders/MsSqlMetadataProvider.cs
@@ -66,7 +66,8 @@ public override async Task PopulateTriggerMetadataForTable(string entityName, st
JsonArray? resultArray = await QueryExecutor.ExecuteQueryAsync(
sqltext: enumerateEnabledTriggers,
parameters: parameters,
- dataReaderHandler: QueryExecutor.GetJsonArrayAsync);
+ dataReaderHandler: QueryExecutor.GetJsonArrayAsync,
+ dataSourceName: _dataSourceName);
using JsonDocument sqlResult = JsonDocument.Parse(resultArray!.ToJsonString());
foreach (JsonElement element in sqlResult.RootElement.EnumerateArray())
diff --git a/src/Core/Services/MetadataProviders/SqlMetadataProvider.cs b/src/Core/Services/MetadataProviders/SqlMetadataProvider.cs
index 900812c9bb..65027306f2 100644
--- a/src/Core/Services/MetadataProviders/SqlMetadataProvider.cs
+++ b/src/Core/Services/MetadataProviders/SqlMetadataProvider.cs
@@ -1183,7 +1183,8 @@ private async Task PopulateColumnDefinitionsWithReadOnlyFlag(string tableName, s
List? readOnlyFields = await QueryExecutor.ExecuteQueryAsync(
sqltext: queryToGetReadOnlyColumns,
parameters: parameters,
- dataReaderHandler: SummarizeReadOnlyFieldsMetadata);
+ dataReaderHandler: SummarizeReadOnlyFieldsMetadata,
+ dataSourceName: _dataSourceName);
if (readOnlyFields is not null && readOnlyFields.Count > 0)
{
@@ -1496,7 +1497,7 @@ private async Task PopulateForeignKeyDefinitionAsync()
// Gather all the referencing and referenced columns for each pair
// of referencing and referenced tables.
PairToFkDefinition = await QueryExecutor.ExecuteQueryAsync(
- queryForForeignKeyInfo, parameters, SummarizeFkMetadata, httpContext: null, args: null, _dataSourceName);
+ queryForForeignKeyInfo, parameters, SummarizeFkMetadata, _dataSourceName, httpContext: null, args: null);
if (PairToFkDefinition is not null)
{
diff --git a/src/Service.Tests/Caching/DabCacheServiceIntegrationTests.cs b/src/Service.Tests/Caching/DabCacheServiceIntegrationTests.cs
index e83c670bae..785c8a572b 100644
--- a/src/Service.Tests/Caching/DabCacheServiceIntegrationTests.cs
+++ b/src/Service.Tests/Caching/DabCacheServiceIntegrationTests.cs
@@ -74,7 +74,7 @@ public async Task FirstCacheServiceInvocationCallsFactory()
IReadOnlyList