You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2022/03/01 11:01:07 UTC

[empire-db] branch master updated: EMPIREDB-362 bugfix PreparedStatementParameters added twice

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 602545e  EMPIREDB-362 bugfix PreparedStatementParameters added twice
602545e is described below

commit 602545e49b3aa53034c6c7d9f1a94da7c84199a0
Author: Rainer Döbele <do...@apache.org>
AuthorDate: Tue Mar 1 12:01:04 2022 +0100

    EMPIREDB-362 bugfix PreparedStatementParameters added twice
---
 empire-db/src/main/java/org/apache/empire/db/DBCommand.java      | 9 ++++++---
 .../java/org/apache/empire/db/expr/join/DBColumnJoinExpr.java    | 7 ++++---
 .../java/org/apache/empire/db/expr/join/DBCrossJoinExpr.java     | 9 +++++----
 .../src/main/java/org/apache/empire/db/expr/join/DBJoinExpr.java | 3 ++-
 4 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/empire-db/src/main/java/org/apache/empire/db/DBCommand.java b/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
index 6a31fbd..c978813 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
@@ -1584,6 +1584,7 @@ public abstract class DBCommand extends DBCommandExpr
         buf.append("\r\nFROM ");
         // Join
         boolean sep = false;
+        int whichParams = 0;
         List<DBRowSet> tables = getRowSetList();
         if (joins!=null && joins.size()>0)
         {   // Join
@@ -1601,21 +1602,23 @@ public abstract class DBCommand extends DBCommandExpr
                      tables.remove(join.getRightTable());
                      // Context
                      context = CTX_NAME|CTX_VALUE;
+                     whichParams = 0;
                  }
                  else
                  {   // Extend the join                    
-                     if ( joinTables.contains(join.getRightTable()))
-                          join.reverse();
+                     if (joinTables.contains(join.getRightTable()))
+                         join.reverse();
                      // Add Right Table     
                      joinTables.add(join.getRightTable());
                      tables .remove(join.getRightTable());
                      // Context
                      context = CTX_VALUE;
                      buf.append( "\t" );
+                     whichParams = 1;
                  }
                  join.addSQL(buf, context);
                  // Merge subquery params
-                 Object[] subQueryParams = join.getSubqueryParams();
+                 Object[] subQueryParams = join.getSubqueryParams(whichParams);
                  if (subQueryParams!=null)
                      mergeSubqueryParams(subQueryParams);
                  // add CRLF
diff --git a/empire-db/src/main/java/org/apache/empire/db/expr/join/DBColumnJoinExpr.java b/empire-db/src/main/java/org/apache/empire/db/expr/join/DBColumnJoinExpr.java
index 7a0629e..fdcee91 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/join/DBColumnJoinExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/join/DBColumnJoinExpr.java
@@ -253,15 +253,16 @@ public class DBColumnJoinExpr extends DBJoinExpr
     /**
      * Returns the subquery Params
      * Valid only directly after addSQL() has been called! 
+     * @param which: both (==0) | left (<=0) | right (>=0)   
      * @return the subquery params;
      */
     @Override
-    public Object[] getSubqueryParams()
+    public Object[] getSubqueryParams(int which)
     {
         DBRowSet left = getLeftTable();
         DBRowSet right = getRightTable();
-        Object[] leftParams  = (left  instanceof DBQuery) ? ((DBQuery)left ).getCommandExpr().getParamValues() : null;
-        Object[] rightParams = (right instanceof DBQuery) ? ((DBQuery)right).getCommandExpr().getParamValues() : null;
+        Object[] leftParams  = (which<=0 && (left  instanceof DBQuery)) ? ((DBQuery)left ).getCommandExpr().getParamValues() : null;
+        Object[] rightParams = (which>=0 && (right instanceof DBQuery)) ? ((DBQuery)right).getCommandExpr().getParamValues() : null;
         if (leftParams!=null && rightParams!=null)
         {   // combine
             Object[] both = new Object[leftParams.length+rightParams.length];
diff --git a/empire-db/src/main/java/org/apache/empire/db/expr/join/DBCrossJoinExpr.java b/empire-db/src/main/java/org/apache/empire/db/expr/join/DBCrossJoinExpr.java
index 5b0df2f..2868f6c 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/join/DBCrossJoinExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/join/DBCrossJoinExpr.java
@@ -156,14 +156,15 @@ public class DBCrossJoinExpr extends DBJoinExpr
 
     /**
      * Returns the subquery Params
-     * Valid only directly after addSQL() has been called! 
+     * Valid only directly after addSQL() has been called!
+     * @param which: both (==0) | left (<=0) | right (>=0)   
      * @return the subquery params;
      */
     @Override
-    public Object[] getSubqueryParams()
+    public Object[] getSubqueryParams(int which)
     {
-        Object[] leftParams  = (left  instanceof DBQuery) ? ((DBQuery)left ).getCommandExpr().getParamValues() : null;
-        Object[] rightParams = (right instanceof DBQuery) ? ((DBQuery)right).getCommandExpr().getParamValues() : null;
+        Object[] leftParams  = (which<=0 && (left  instanceof DBQuery)) ? ((DBQuery)left ).getCommandExpr().getParamValues() : null;
+        Object[] rightParams = (which>=0 && (right instanceof DBQuery)) ? ((DBQuery)right).getCommandExpr().getParamValues() : null;
         if (leftParams!=null && rightParams!=null)
         {   // combine
             Object[] both = new Object[leftParams.length+rightParams.length];
diff --git a/empire-db/src/main/java/org/apache/empire/db/expr/join/DBJoinExpr.java b/empire-db/src/main/java/org/apache/empire/db/expr/join/DBJoinExpr.java
index 7cb40bf..6867657 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/join/DBJoinExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/join/DBJoinExpr.java
@@ -100,9 +100,10 @@ public abstract class DBJoinExpr extends DBExpr
     /**
      * Returns the subquery Params
      * Valid only directly after addSQL() has been called! 
+     * @param which: both (==0) | left (<=0) | right (>=0)   
      * @return the subquery params;
      */
-    public abstract Object[] getSubqueryParams();
+    public abstract Object[] getSubqueryParams(int which);
     
     /**
      * This function swaps the left and the right statements of the join expression.