Skip to content
6 changes: 6 additions & 0 deletions src/Core/Resolvers/DWSqlQueryBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -432,5 +432,11 @@ private string BuildAggregationColumns(GroupByMetadata metadata)
{
return string.Join(", ", metadata.Aggregations.Select(aggregation => Build(aggregation.Column, useAlias: true)));
}

public string QuoteTableNameAsDBConnectionParam(string param)
{
// Table names in DWSql should not be quoted when used as DB Connection Params.
return param;
}
}
}
6 changes: 6 additions & 0 deletions src/Core/Resolvers/IQueryBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -84,5 +84,11 @@ public interface IQueryBuilder
/// Adds database specific quotes to string identifier
/// </summary>
public string QuoteIdentifier(string identifier);

/// <summary>
/// Adds database specific quotes to the table name when used as part of a
/// DB Connection Param.
/// </summary>
public string QuoteTableNameAsDBConnectionParam(string param);
}
}
6 changes: 6 additions & 0 deletions src/Core/Resolvers/MsSqlQueryBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -594,5 +594,11 @@ public string BuildFetchEnabledTriggersQuery()

return query;
}

public string QuoteTableNameAsDBConnectionParam(string param)
{
// Table names in MSSQL should not be quoted when used as DB Connection Params.
return param;
}
}
}
6 changes: 6 additions & 0 deletions src/Core/Resolvers/MySqlQueryBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -367,5 +367,11 @@ public string BuildStoredProcedureResultDetailsQuery(string databaseObjectName)
{
throw new NotImplementedException();
}

public string QuoteTableNameAsDBConnectionParam(string param)
{
// Table names in MySQL should not be quoted when used as DB Connection Params.
return param;
}
}
}
7 changes: 7 additions & 0 deletions src/Core/Resolvers/PostgresQueryBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -241,5 +241,12 @@ public string BuildQueryToGetReadOnlyColumns(string schemaParamName, string tabl
$"WHERE attrelid = ({schemaParamName} || '.' || {tableParamName})::regclass AND attgenerated = 's';";
return query;
}

public string QuoteTableNameAsDBConnectionParam(string param)
{
// PostreSQL uses same quoting for table name as DB Connection Param
// as when used directly in SQL text.
return QuoteIdentifier(param);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -1355,12 +1355,13 @@ private async Task PopulateSourceDefinitionAsync(
private async Task PopulateColumnDefinitionsWithReadOnlyFlag(string tableName, string schemaOrDatabaseName, SourceDefinition sourceDefinition)
{
string schemaOrDatabaseParamName = $"{BaseQueryStructure.PARAM_NAME_PREFIX}param0";
string quotedTableName = SqlQueryBuilder.QuoteTableNameAsDBConnectionParam(tableName);
string tableParamName = $"{BaseQueryStructure.PARAM_NAME_PREFIX}param1";
string queryToGetReadOnlyColumns = SqlQueryBuilder.BuildQueryToGetReadOnlyColumns(schemaOrDatabaseParamName, tableParamName);
Dictionary<string, DbConnectionParam> parameters = new()
{
{ schemaOrDatabaseParamName, new(schemaOrDatabaseName, DbType.String) },
{ tableParamName, new(tableName, DbType.String) }
{ tableParamName, new(quotedTableName, DbType.String) }
};

List<string>? readOnlyFields = await QueryExecutor.ExecuteQueryAsync(
Expand Down