IDEMPIERE-6194 2Pack must ignore the SIMILAR TO preference from user (#2423)

- make the SIMILAR TO conversion work just for SELECT queries
This commit is contained in:
Carlos Ruiz 2024-07-26 08:10:10 +02:00
parent d1450a5ce0
commit 7a667bc5db
1 changed files with 11 additions and 2 deletions

View File

@ -171,11 +171,16 @@ public class Convert_PostgreSQL extends Convert_SQL92 {
return retValue; return retValue;
} }
/**
* Convert LIKE to SIMILAR TO depending on the user preference P|IsUseSimilarTo - applies just to SELECT queries
* @param statement
* @return
*/
private String convertSimilarTo(String statement) { private String convertSimilarTo(String statement) {
String retValue = statement; String retValue = statement;
boolean useSimilarTo = isUseSimilarTo(); boolean useSimilarTo = isUseSimilarTo();
if (useSimilarTo) { if (useSimilarTo && statement.matches("(?i)^\\s*SELECT\\b.*")) {
String replacement = "SIMILAR TO"; final String replacement = "SIMILAR TO";
try { try {
Matcher m = likePattern.matcher(retValue); Matcher m = likePattern.matcher(retValue);
retValue = m.replaceAll(replacement); retValue = m.replaceAll(replacement);
@ -188,6 +193,10 @@ public class Convert_PostgreSQL extends Convert_SQL92 {
return retValue; return retValue;
} }
/**
* True if the user preference IsUseSimilarTo is set to Y
* @return
*/
private boolean isUseSimilarTo() { private boolean isUseSimilarTo() {
return "Y".equals(Env.getContext(Env.getCtx(), "P|IsUseSimilarTo")); return "Y".equals(Env.getContext(Env.getCtx(), "P|IsUseSimilarTo"));
} }