Skip to content

Commit b6c02f1

Browse files
committed
tree.Root is side effecty
1 parent 4814b35 commit b6c02f1

File tree

3 files changed

+13
-18
lines changed

3 files changed

+13
-18
lines changed

src/NHibernate/Linq/IntermediateHqlTree.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,17 @@ public void AddFromClause(HqlTreeNode from)
127127
_root.NodesPreOrder.OfType<HqlFrom>().First().AddChild(from);
128128
}
129129

130+
internal HqlTreeNode GetFromNodeByAlias(string alias) =>
131+
_root.NodesPreOrder
132+
.First(x => x.AstNode.Type == HqlSqlWalker.FROM).Children
133+
.First(x => GetNodeAlias(x) == alias);
134+
135+
private static string GetNodeAlias(HqlTreeNode fromNode) =>
136+
fromNode.Children
137+
.Select(x => x.AstNode)
138+
.First(x => x.Type == HqlSqlWalker.ALIAS)
139+
.Text;
140+
130141
internal HqlRange GetFromRangeClause()
131142
{
132143
return _root.NodesPreOrder.OfType<HqlFrom>().First().Children.OfType<HqlRange>().FirstOrDefault();

src/NHibernate/Linq/Visitors/QuerySourceLocator.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
namespace NHibernate.Linq.Visitors
77
{
8-
98
public class QuerySourceLocator : NhQueryModelVisitorBase
109
{
1110
readonly System.Type _type;

src/NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessFetch.cs

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,29 +16,14 @@ public void Process(FetchRequestBase resultOperator, QueryModelVisitor queryMode
1616
queryModelVisitor.Model,
1717
resultOperator.RelationMember.DeclaringType);
1818
var name = queryModelVisitor.VisitorParameters.QuerySourceNamer.GetName(querySource);
19-
Process(resultOperator, queryModelVisitor, tree, GetFromNodeByAlias(tree, name), name);
20-
}
21-
22-
private static HqlTreeNode GetFromNodeByAlias(IntermediateHqlTree tree, string alias)
23-
{
24-
return tree.Root.NodesPreOrder
25-
.First(x => x.AstNode.Type == HqlSqlWalker.FROM).Children
26-
.First(x => GetNodeAlias(x) == alias);
27-
}
28-
29-
private static string GetNodeAlias(HqlTreeNode fromNode)
30-
{
31-
return fromNode.Children
32-
.Select(x => x.AstNode)
33-
.First(x => x.Type == HqlSqlWalker.ALIAS)
34-
.Text;
19+
Process(resultOperator, queryModelVisitor, tree, tree.GetFromNodeByAlias(name), name);
3520
}
3621

3722
// Since v5.5
3823
[Obsolete("This method is not used and will be removed in a future version.")]
3924
public void Process(FetchRequestBase resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree, string sourceAlias)
4025
{
41-
Process(resultOperator, queryModelVisitor, tree, GetFromNodeByAlias(tree, sourceAlias), sourceAlias);
26+
Process(resultOperator, queryModelVisitor, tree, tree.GetFromNodeByAlias(sourceAlias), sourceAlias);
4227
}
4328

4429
private void Process(

0 commit comments

Comments
 (0)