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)
     {

Reply via email to