Skip to content

Commit

Permalink
Switch FetchXML sort to custom sorting after adding joins that requir…
Browse files Browse the repository at this point in the history
…e custom paging
  • Loading branch information
MarkMpn committed Nov 2, 2023
1 parent 1770472 commit 604586c
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions MarkMpn.Sql4Cds.Engine/ExecutionPlan/FoldableJoinNode.cs
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,7 @@ private bool FoldFetchXmlJoin(NodeCompilationContext context, IList<OptimizerHin
// in the new link entity or we must be using an inner join so we can use a post-filter node
var additionalCriteria = AdditionalJoinCriteria;

if (TranslateFetchXMLCriteria(context, dataSource.Metadata, additionalCriteria, rightSchema, rightFetch.Alias, rightEntity.name, rightFetch.Alias, rightEntity.Items, out var filter))
if (TranslateFetchXMLCriteria(context, dataSource.Metadata, additionalCriteria, rightSchema, rightFetch.Alias, null, rightEntity.name, rightFetch.Alias, rightEntity.Items, out var filter))
{
rightEntity.AddItem(filter);
additionalCriteria = null;
Expand Down Expand Up @@ -411,12 +411,6 @@ private bool FoldFetchXmlJoin(NodeCompilationContext context, IList<OptimizerHin
leftLinkEntity.Items = leftLinkEntity.Items.Concat(new object[] { rightLinkEntity }).ToArray();
}

if (additionalCriteria != null)
{
folded = new FilterNode { Filter = additionalCriteria, Source = leftFetch }.FoldQuery(context, hints);
return true;
}

foreach (var alias in rightFetch.HiddenAliases)
leftFetch.HiddenAliases.Add(alias);

Expand All @@ -425,6 +419,13 @@ private bool FoldFetchXmlJoin(NodeCompilationContext context, IList<OptimizerHin

folded = leftFetch;

if (additionalCriteria != null)
folded = new FilterNode { Filter = additionalCriteria, Source = leftFetch }.FoldQuery(context, hints);

// We might have previously folded a sort to the FetchXML that is no longer valid as we require custom paging
if (leftFetch.RequiresCustomPaging(context.DataSources))
leftFetch.RemoveSorts();

return true;
}

Expand Down

0 comments on commit 604586c

Please sign in to comment.