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