Optimize G2 subqueries for != and out - remove unused joins in all cases (#1838)

At the moment such unused are removed for "tag!=1 and tag==2" but not for "tag==2 and tag!=1"

Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
This commit is contained in:
Avgustin Marinov
2024-09-10 14:48:59 +03:00
committed by GitHub
parent 62734e936a
commit 52912c3cca
2 changed files with 28 additions and 22 deletions

View File

@@ -52,6 +52,12 @@ public class RSQLToSQLTest {
print(JpaTarget.class, TargetFields.class, "(tag!=TAG1 or tag !=TAG2)");
}
@Test
public void printPG() {
printFrom(JpaTarget.class, TargetFields.class, "tag!=TAG1 and tag==TAG2");
printFrom(JpaTarget.class, TargetFields.class, "tag==TAG1 and tag!=TAG2");
}
private <T, A extends Enum<A> & RsqlQueryField> void print(final Class<T> domainClass, final Class<A> fieldsClass, final String rsql) {
System.out.println(rsql);
System.out.println("\tlegacy:\n" +
@@ -59,4 +65,15 @@ public class RSQLToSQLTest {
System.out.println("\tG2:\n" +
"\t\t" + rsqlToSQL.toSQL(domainClass, fieldsClass, rsql, false));
}
private <T, A extends Enum<A> & RsqlQueryField> void printFrom(final Class<T> domainClass, final Class<A> fieldsClass, final String rsql) {
System.out.println(rsql);
System.out.println("\tlegacy:\n" +
"\t\t" + from(rsqlToSQL.toSQL(domainClass, fieldsClass, rsql, true)));
System.out.println("\tG2:\n" +
"\t\t" + from(rsqlToSQL.toSQL(domainClass, fieldsClass, rsql, false)));
}
private static String from(final String sql) {
return sql.substring(sql.indexOf("FROM"));
}
}