EMPIREDB-362 bugfix PreparedStatementParameters added twice
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 @@
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 @@
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 @@
/**
* 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 @@
/**
* 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 @@
/**
* 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.