Skip to content

Commit 8dde67f

Browse files
committed
Improved Apply support
Fixed errors when apply used table ref instead of subquery
1 parent 27caa63 commit 8dde67f

4 files changed

Lines changed: 8 additions & 3 deletions

File tree

Orm/Xtensive.Orm.Firebird/Sql.Drivers.Firebird/v4_0/ServerInfoProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ internal class ServerInfoProvider : v2_5.ServerInfoProvider
1111
public override QueryInfo GetQueryInfo()
1212
{
1313
var info = base.GetQueryInfo();
14-
info.Features |= QueryFeatures.CrossApply;
14+
info.Features |= QueryFeatures.CrossApplyForSubqueriesOnly;
1515
return info;
1616
}
1717

Orm/Xtensive.Orm.PostgreSql/Sql.Drivers.PostgreSql/v10_0/ServerInfoProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ internal class ServerInfoProvider : v9_0.ServerInfoProvider
1313
public override QueryInfo GetQueryInfo()
1414
{
1515
var info = base.GetQueryInfo();
16-
info.Features |= QueryFeatures.CrossApply;
16+
info.Features |= QueryFeatures.CrossApplyForSubqueriesOnly;
1717
return info;
1818
}
1919

Orm/Xtensive.Orm/Orm/Providers/SqlCompiler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,7 @@ public SqlCompiler(HandlerAccessor handlers, CompilerConfiguration configuration
563563

564564
providerInfo = Handlers.ProviderInfo;
565565
temporaryTablesSupported = DomainHandler.TemporaryTableManager.Supported;
566-
forceApplyViaReference = handlers.ProviderInfo.ProviderName.Equals(WellKnown.Provider.PostgreSql);
566+
forceApplyViaReference = Handlers.StorageDriver.ServerInfo.Query.Features.HasFlag(Sql.Info.QueryFeatures.CrossApplyForSubqueriesOnly);
567567

568568
if (!providerInfo.Supports(ProviderFeatures.FullFeaturedBooleanExpressions))
569569
booleanExpressionConverter = new BooleanExpressionConverter(Driver);

Orm/Xtensive.Orm/Sql/Info/QueryFeatures.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,11 @@ public enum QueryFeatures
147147
/// </summary>
148148
DeleteLimit = 1 << 25,
149149

150+
/// <summary>
151+
/// Indicates that RDBMS supports CROSS APPLY and OUTER APPLY operators but only for subqueries.
152+
/// </summary>
153+
CrossApplyForSubqueriesOnly = CrossApply | (1 << 26),
154+
150155
/// <summary>
151156
/// Indicates that RDBMS supports paging operators (<see cref="Limit"/> and <see cref="Offset"/>).
152157
/// </summary>

0 commit comments

Comments
 (0)