This is an automated email from the ASF dual-hosted git repository.

doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/master by this push:
     new 53b21a7b EMPIREDB-386 Avoid douple parenthesis for subselects used in 
contraints
53b21a7b is described below

commit 53b21a7bb90787f14179bafd9eb811bfb2b82e35
Author: Rainer Döbele <[email protected]>
AuthorDate: Wed Mar 1 16:50:08 2023 +0100

    EMPIREDB-386
    Avoid douple parenthesis for subselects used in contraints
---
 empire-db/src/main/java/org/apache/empire/db/DBCommandExpr.java  | 9 +++++++--
 empire-db/src/main/java/org/apache/empire/db/DBExpr.java         | 2 +-
 .../org/apache/empire/db/expr/compare/DBCompareAndOrExpr.java    | 2 +-
 .../java/org/apache/empire/db/expr/compare/DBCompareColExpr.java | 6 ++++--
 .../apache/empire/db/expr/compare/DBCompareParenthesisExpr.java  | 2 +-
 .../main/java/org/apache/empire/dbms/oracle/DBCommandOracle.java | 2 +-
 6 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/empire-db/src/main/java/org/apache/empire/db/DBCommandExpr.java 
b/empire-db/src/main/java/org/apache/empire/db/DBCommandExpr.java
index c9f270e5..edaa4ea1 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBCommandExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBCommandExpr.java
@@ -391,9 +391,14 @@ public abstract class DBCommandExpr extends DBExpr
     @Override
     public void addSQL(DBSQLBuilder sql, long context)
     {
-        sql.append("(");
+        // parenthesis open
+        if ((context & CTX_NOPARENTHESIS)==0)
+            sql.append("(");
+        // append commaand
         sql.append(this);
-        sql.append(")");
+        // parenthesis close
+        if ((context & CTX_NOPARENTHESIS)==0)
+            sql.append(")");
     }
 
     /**
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBExpr.java 
b/empire-db/src/main/java/org/apache/empire/db/DBExpr.java
index 885172c8..85ea6f3d 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBExpr.java
@@ -39,7 +39,7 @@ public abstract class DBExpr extends DBObject
     public static final long CTX_FULLNAME      = 2;  // Fully Qualified Name
     public static final long CTX_VALUE         = 4;  // Value Only
     public static final long CTX_ALIAS         = 8;  // Rename expression
-    public static final long CTX_NOPARENTHESES = 16; // No Parentheses
+    public static final long CTX_NOPARENTHESIS = 16; // No Parenthesis
     
     /**
      * Used to build the SQL command. SQL for this expression must be appended 
to StringBuilder.
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareAndOrExpr.java
 
b/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareAndOrExpr.java
index 7a7bc842..8f7d16ee 100644
--- 
a/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareAndOrExpr.java
+++ 
b/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareAndOrExpr.java
@@ -135,7 +135,7 @@ public class DBCompareAndOrExpr extends DBCompareExpr
             return;
         }
         // Parenthesis
-        boolean parenthesis = ((context & CTX_NOPARENTHESES) == 0) && or;
+        boolean parenthesis = ((context & CTX_NOPARENTHESIS) == 0) && or;
         boolean nested = ((left instanceof DBCompareAndOrExpr) && 
((DBCompareAndOrExpr)left).or==false);
         if (parenthesis)
             sql.append("(");
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareColExpr.java
 
b/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareColExpr.java
index b64dd57c..ec4d73d9 100644
--- 
a/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareColExpr.java
+++ 
b/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareColExpr.java
@@ -246,18 +246,20 @@ public class DBCompareColExpr extends DBCompareExpr
                 break;
             case IN:
                 sql.append(" IN (");
+                if (value instanceof DBCommandExpr)
+                    context |= CTX_NOPARENTHESIS;
                 suffix = ")";
                 break;
             case NOTIN:
                 sql.append(" NOT IN (");
+                if (value instanceof DBCommandExpr)
+                    context |= CTX_NOPARENTHESIS;
                 suffix = ")";
                 break;
             default:
                 // NONE
                 sql.append(" ");
         }
-        if (value instanceof DBCommandExpr)
-            System.out.println("DBCommandExpr");
         // append value
         sql.appendValue(expr.getDataType(), value, context, arraySep);
         // append suffix
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareParenthesisExpr.java
 
b/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareParenthesisExpr.java
index f76f3046..395dba49 100644
--- 
a/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareParenthesisExpr.java
+++ 
b/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareParenthesisExpr.java
@@ -87,7 +87,7 @@ public class DBCompareParenthesisExpr extends DBCompareExpr 
implements Unwrappab
     public void addSQL(DBSQLBuilder sql, long context)
     {
         sql.append("(");
-        wrapped.addSQL(sql, context|CTX_NOPARENTHESES);
+        wrapped.addSQL(sql, context|CTX_NOPARENTHESIS);
         sql.append(")");
     }
 }
diff --git 
a/empire-db/src/main/java/org/apache/empire/dbms/oracle/DBCommandOracle.java 
b/empire-db/src/main/java/org/apache/empire/dbms/oracle/DBCommandOracle.java
index 3cbced8a..f2394763 100644
--- a/empire-db/src/main/java/org/apache/empire/dbms/oracle/DBCommandOracle.java
+++ b/empire-db/src/main/java/org/apache/empire/dbms/oracle/DBCommandOracle.java
@@ -187,7 +187,7 @@ public class DBCommandOracle extends DBCommand
         if (connectBy != null)
         {   // Add 'Connect By Prior' Expression
                sql.append("\r\nCONNECT BY PRIOR ");
-            connectBy.addSQL(sql, CTX_DEFAULT | CTX_NOPARENTHESES);
+            connectBy.addSQL(sql, CTX_DEFAULT | CTX_NOPARENTHESIS);
             // Start With
             if (startWith != null)
             {  // Add 'Start With' Expression

Reply via email to