Skip to content

Commit 8f3ab01

Browse files
committed
Avoid carrying named parameters collection around
1 parent 90657a2 commit 8f3ab01

File tree

2 files changed

+16
-21
lines changed

2 files changed

+16
-21
lines changed

src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.cs

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ public partial class HqlSqlWalker
5858
private readonly LiteralProcessor _literalProcessor;
5959

6060
private readonly IDictionary<string, string> _tokenReplacements;
61-
private readonly IDictionary<string, NamedParameter> _namedParameters;
6261
private readonly IDictionary<IParameterSpecification, IType> _guessedParameterTypes = new Dictionary<IParameterSpecification, IType>();
6362

6463
private JoinType _impliedJoinType;
@@ -68,32 +67,20 @@ public partial class HqlSqlWalker
6867
private IASTFactory _nodeFactory;
6968
private readonly List<AssignmentSpecification> assignmentSpecifications = new List<AssignmentSpecification>();
7069
private int numberOfParametersInSetClause;
71-
private Stack<int> clauseStack=new Stack<int>();
70+
private Stack<int> clauseStack = new Stack<int>();
7271

7372
public HqlSqlWalker(
7473
QueryTranslatorImpl qti,
7574
ISessionFactoryImplementor sfi,
7675
ITreeNodeStream input,
7776
IDictionary<string, string> tokenReplacements,
7877
string collectionRole)
79-
: this(qti, sfi, input, tokenReplacements, null, collectionRole)
80-
{
81-
}
82-
83-
internal HqlSqlWalker(
84-
QueryTranslatorImpl qti,
85-
ISessionFactoryImplementor sfi,
86-
ITreeNodeStream input,
87-
IDictionary<string, string> tokenReplacements,
88-
IDictionary<string, NamedParameter> namedParameters,
89-
string collectionRole)
9078
: this(input)
9179
{
9280
_sessionFactoryHelper = new SessionFactoryHelperExtensions(sfi);
9381
_qti = qti;
9482
_literalProcessor = new LiteralProcessor(this);
9583
_tokenReplacements = tokenReplacements;
96-
_namedParameters = namedParameters;
9784
_collectionFilterRole = collectionRole;
9885
}
9986

@@ -1099,7 +1086,7 @@ IASTNode GenerateNamedParameter(IASTNode delimiterNode, IASTNode nameNode)
10991086
);
11001087

11011088
parameter.HqlParameterSpecification = paramSpec;
1102-
if (_namedParameters != null && _namedParameters.TryGetValue(name, out var namedParameter))
1089+
if (_qti.TryGetNamedParameter(name, out var namedParameter))
11031090
{
11041091
// Add the parameter type information so that we are able to calculate functions return types
11051092
// when the parameter is used as an argument.

src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ private static IStatementExecutor BuildAppropriateStatementExecutor(IStatement s
459459

460460
private HqlSqlTranslator Analyze(string collectionRole)
461461
{
462-
var translator = new HqlSqlTranslator(_stageOneAst, this, _factory, _tokenReplacements, _namedParameters, collectionRole);
462+
var translator = new HqlSqlTranslator(_stageOneAst, this, _factory, _tokenReplacements, collectionRole);
463463

464464
translator.Translate();
465465

@@ -473,6 +473,17 @@ private void ErrorIfDML()
473473
throw new QueryExecutionRequestException("Not supported for DML operations", _queryIdentifier);
474474
}
475475
}
476+
477+
internal bool TryGetNamedParameter(string name, out NamedParameter namedParameter)
478+
{
479+
if (_namedParameters == null)
480+
{
481+
namedParameter = null;
482+
return false;
483+
}
484+
485+
return _namedParameters.TryGetValue(name, out namedParameter);
486+
}
476487
}
477488

478489
public class HqlParseEngine
@@ -573,23 +584,20 @@ internal class HqlSqlTranslator
573584
private readonly QueryTranslatorImpl _qti;
574585
private readonly ISessionFactoryImplementor _sfi;
575586
private readonly IDictionary<string, string> _tokenReplacements;
576-
private readonly IDictionary<string, NamedParameter> _namedParameters;
577587
private readonly string _collectionRole;
578588
private IStatement _resultAst;
579589

580-
public HqlSqlTranslator(
590+
internal HqlSqlTranslator(
581591
IASTNode ast,
582592
QueryTranslatorImpl qti,
583593
ISessionFactoryImplementor sfi,
584594
IDictionary<string, string> tokenReplacements,
585-
IDictionary<string, NamedParameter> namedParameters,
586595
string collectionRole)
587596
{
588597
_inputAst = ast;
589598
_qti = qti;
590599
_sfi = sfi;
591600
_tokenReplacements = tokenReplacements;
592-
_namedParameters = namedParameters;
593601
_collectionRole = collectionRole;
594602
}
595603

@@ -609,7 +617,7 @@ public IStatement Translate()
609617

610618
var nodes = new BufferedTreeNodeStream(_inputAst);
611619

612-
var hqlSqlWalker = new HqlSqlWalker(_qti, _sfi, nodes, _tokenReplacements, _namedParameters, _collectionRole);
620+
var hqlSqlWalker = new HqlSqlWalker(_qti, _sfi, nodes, _tokenReplacements, _collectionRole);
613621
hqlSqlWalker.TreeAdaptor = new HqlSqlWalkerTreeAdaptor(hqlSqlWalker);
614622

615623
try

0 commit comments

Comments
 (0)