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 3f9f598 EMPIREDB-362 Bugfix DBCommand mergeSubqueryParams
3f9f598 is described below
commit 3f9f5984a2bb65e8ecf0e970ec9fb58cd66c74b7
Author: Rainer Döbele <[email protected]>
AuthorDate: Mon Feb 28 09:21:51 2022 +0100
EMPIREDB-362 Bugfix DBCommand mergeSubqueryParams
---
.../main/java/org/apache/empire/db/DBCommand.java | 27 +++++++++++++++-------
1 file changed, 19 insertions(+), 8 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 2b44e7d..7899c57 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
@@ -1595,14 +1595,9 @@ public abstract class DBCommand extends DBCommandExpr
}
join.addSQL(buf, context);
// Merge subquery params
- Object[] qryParams = join.getSubqueryParams();
- if (qryParams!=null && qryParams.length>0)
- { // Subquery has parameters
- if (cmdParams==null)
- cmdParams= new
ArrayList<DBCmdParam>(qryParams.length);
- for (int p=0; p<qryParams.length; p++)
- cmdParams.add(paramUsageCount++, new DBCmdParam(null,
DataType.UNKNOWN, qryParams[p]));
- }
+ Object[] subQueryParams = join.getSubqueryParams();
+ if (subQueryParams!=null)
+ mergeSubqueryParams(subQueryParams);
// add CRLF
if( i!=joins.size()-1 )
buf.append("\r\n");
@@ -1614,6 +1609,11 @@ public abstract class DBCommand extends DBCommandExpr
if (sep) buf.append(", ");
DBRowSet t = tables.get(i);
t.addSQL(buf, CTX_DEFAULT|CTX_ALIAS);
+ // check for query
+ if (t instanceof DBQuery)
+ { // Merge subquery params
+
mergeSubqueryParams(((DBQuery)t).getCommandExpr().getParamValues());
+ }
sep = true;
}
if (sep==false)
@@ -1629,6 +1629,17 @@ public abstract class DBCommand extends DBCommandExpr
}
}
}
+
+ protected void mergeSubqueryParams(Object[] subQueryParams)
+ {
+ if (subQueryParams==null || subQueryParams.length==0)
+ return;
+ // Subquery has parameters
+ if (cmdParams==null)
+ cmdParams= new ArrayList<DBCmdParam>(subQueryParams.length);
+ for (int p=0; p<subQueryParams.length; p++)
+ cmdParams.add(paramUsageCount++, new DBCmdParam(null,
DataType.UNKNOWN, subQueryParams[p]));
+ }
protected void addWhere(StringBuilder buf, long context)
{