HHH-11929 removed excessive toLowerCase() and substring() from SQLServer2012LimitHandler.hasOrderBy(). Also reversed the direction for scanning the sql string for "order by " to start at the end of the string

This commit is contained in:
Bruce Brown 2017-08-15 22:56:47 -05:00 committed by Chris Cranford
parent 9394fadc9a
commit 6ad8302a3c
1 changed files with 6 additions and 3 deletions

View File

@ -110,8 +110,11 @@ public class SQLServer2012LimitHandler extends SQLServer2005LimitHandler {
private boolean hasOrderBy(String sql) {
int depth = 0;
for ( int i = 0; i < sql.length(); ++i ) {
char ch = sql.charAt( i );
String lowerCaseSQL = sql.toLowerCase();
for ( int i = lowerCaseSQL.length() - 1; i >= 0; --i ) {
char ch = lowerCaseSQL.charAt( i );
if ( ch == '(' ) {
depth++;
}
@ -119,7 +122,7 @@ public class SQLServer2012LimitHandler extends SQLServer2005LimitHandler {
depth--;
}
if ( depth == 0 ) {
if ( sql.substring( i ).toLowerCase().startsWith( "order by " ) ) {
if ( lowerCaseSQL.startsWith( "order by ", i ) ) {
return true;
}
}