Skip to content

Commit 85583b9

Browse files
committed
Added CallableParser.HasReturnParameter with suggested optimizations
1 parent 83e7c17 commit 85583b9

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

src/NHibernate/Engine/Query/CallableParser.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,20 @@ public static Detail Parse(string sqlString)
3737

3838
callableDetail.FunctionName = functionMatch.Groups[1].Value;
3939

40-
callableDetail.HasReturn = indexOfCall > 0 &&
41-
sqlString.IndexOf('?') > 0 &&
42-
sqlString.IndexOf('=') > 0 &&
43-
sqlString.IndexOf('?') < indexOfCall &&
44-
sqlString.IndexOf('=') < indexOfCall;
40+
callableDetail.HasReturn = HasReturnParameter(sqlString, indexOfCall);
4541

4642
return callableDetail;
4743
}
44+
45+
internal static bool HasReturnParameter(string sqlString, int indexOfCall)
46+
{
47+
int indexOfQuestionMark;
48+
int indexOfEqual;
49+
return indexOfCall > 0 &&
50+
(indexOfQuestionMark = sqlString.IndexOf('?')) > 0 &&
51+
(indexOfEqual = sqlString.IndexOf('=')) > 0 &&
52+
indexOfQuestionMark < indexOfCall &&
53+
indexOfEqual < indexOfCall;
54+
}
4855
}
4956
}

src/NHibernate/Engine/Query/ParameterParser.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,7 @@ public static void Parse(string sqlString, IRecognizer recognizer)
4343
{
4444
// TODO: WTF? "CALL"... it may work for ORACLE but what about others RDBMS ? (by FM)
4545
var indexOfCall = sqlString.IndexOf("call", StringComparison.Ordinal);
46-
bool hasMainOutputParameter = indexOfCall > 0 &&
47-
sqlString.IndexOf('?') > 0 &&
48-
sqlString.IndexOf('=') > 0 &&
49-
sqlString.IndexOf('?') < indexOfCall &&
50-
sqlString.IndexOf('=') < indexOfCall;
46+
bool hasMainOutputParameter = CallableParser.HasReturnParameter(sqlString, indexOfCall);
5147
bool foundMainOutputParam = false;
5248

5349
int stringLength = sqlString.Length;

0 commit comments

Comments
 (0)