Skip to content

Commit b1bd183

Browse files
committed
Removed order by sql for db sqlserver when checks values Lov
1 parent 1d6a68a commit b1bd183

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

knowagedao/src/main/java/it/eng/spagobi/behaviouralmodel/lov/bo/QueryDetail.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
import java.util.Map;
3434
import java.util.Optional;
3535
import java.util.Set;
36+
import java.util.regex.Matcher;
37+
import java.util.regex.Pattern;
3638
import java.util.stream.Collectors;
3739

3840
import javax.naming.NamingException;
@@ -1026,6 +1028,9 @@ private String getValidationQueryForRegularLOVs(IEngUserProfile profile, Abstrac
10261028

10271029
List<String> reserverWords = getReserverWords();
10281030
String statement = getQueryDefinition();
1031+
if (databaseDialect.getValue().contains(DatabaseDialect.SQLSERVER.getValue())) {
1032+
statement = removeOuterOrderBy(statement);
1033+
}
10291034
statement = StringUtilities.substituteProfileAttributesInString(statement, profile);
10301035
statement = substituteParametersInString(statement, drivers);
10311036
StringBuilder buffer = new StringBuilder();
@@ -1047,6 +1052,21 @@ private String getValidationQueryForRegularLOVs(IEngUserProfile profile, Abstrac
10471052
return buffer.toString();
10481053
}
10491054

1055+
public static String removeOuterOrderBy(String sql) {
1056+
if (sql == null) {
1057+
return null;
1058+
}
1059+
1060+
Pattern pattern = Pattern.compile("(?i)order\\s+by(?=[^()]*$)");
1061+
Matcher matcher = pattern.matcher(sql);
1062+
1063+
if (matcher.find()) {
1064+
return sql.substring(0, matcher.start()).trim();
1065+
}
1066+
1067+
return sql.trim();
1068+
}
1069+
10501070
/**
10511071
* This methods builds the validation query for LOVs that are trees with inner nodes selection
10521072
*/

0 commit comments

Comments
 (0)