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 7910cf7c EMPIREDB-400 Bugfix Oracle subquery cmdParams for limitRows 
and skipRows
7910cf7c is described below

commit 7910cf7cfdc5e850ce5e4f91f99fa32e04c8cf09
Author: Rainer Döbele <[email protected]>
AuthorDate: Mon Feb 27 16:07:01 2023 +0100

    EMPIREDB-400
    Bugfix Oracle subquery cmdParams for limitRows and skipRows
---
 .../empire-db-example-advanced/config.xml             |  4 ++--
 empire-db-examples/empire-db-example-basic/config.xml |  4 ++--
 .../java/org/apache/empire/db/DBCmdParamList.java     | 19 +++++++++++++++++++
 .../apache/empire/dbms/oracle/DBCommandOracle.java    | 16 ++++++++++++++++
 4 files changed, 39 insertions(+), 4 deletions(-)

diff --git a/empire-db-examples/empire-db-example-advanced/config.xml 
b/empire-db-examples/empire-db-example-advanced/config.xml
index baa6fa19..1006fb11 100644
--- a/empire-db-examples/empire-db-example-advanced/config.xml
+++ b/empire-db-examples/empire-db-example-advanced/config.xml
@@ -98,7 +98,7 @@
                <!-- JDBC properties for an Oracle Database connection -->
                <!-- Required jar file: ojdbc14.jar -->
                <jdbcClass>oracle.jdbc.driver.OracleDriver</jdbcClass>
-               <jdbcURL>jdbc:oracle:thin:@esteams12:1521:ora12</jdbcURL>
+               <jdbcURL>jdbc:oracle:thin:@devserver:1521:ora19</jdbcURL>
                <jdbcUser>DBSAMPLEADV</jdbcUser>
                <jdbcPwd>DBSAMPLEADV</jdbcPwd>
                <!-- Empire-db driver configuration -->
@@ -111,7 +111,7 @@
        <properties-sqlserver>
                <!-- JDBC properties for a Microsoft SQL-Server Database 
connection -->
                
<jdbcClass>com.microsoft.sqlserver.jdbc.SQLServerDriver</jdbcClass>
-               <jdbcURL>jdbc:sqlserver://esteams12\sql17</jdbcURL>
+               <jdbcURL>jdbc:sqlserver://devserver</jdbcURL>
                <jdbcUser>jdbcUser</jdbcUser>
                <jdbcPwd>jdbcPwd</jdbcPwd>
                <!-- Empire-db driver configuration -->
diff --git a/empire-db-examples/empire-db-example-basic/config.xml 
b/empire-db-examples/empire-db-example-basic/config.xml
index bec257fd..de705b3a 100644
--- a/empire-db-examples/empire-db-example-basic/config.xml
+++ b/empire-db-examples/empire-db-example-basic/config.xml
@@ -98,7 +98,7 @@
                <!-- JDBC properties for an Oracle Database connection -->
                <!-- Required jar file: ojdbc14.jar -->
                <jdbcClass>oracle.jdbc.driver.OracleDriver</jdbcClass>
-               <jdbcURL>jdbc:oracle:thin:@esteams12:1521:ora12</jdbcURL>
+               <jdbcURL>jdbc:oracle:thin:@devserver:1521:ora19</jdbcURL>
                <jdbcUser>DBSAMPLE</jdbcUser>
                <jdbcPwd>DBSAMPLE</jdbcPwd>
                <!-- Empire-db driver configuration -->
@@ -111,7 +111,7 @@
        <properties-sqlserver>
                <!-- JDBC properties for a Microsoft SQL-Server Database 
connection -->
                
<jdbcClass>com.microsoft.sqlserver.jdbc.SQLServerDriver</jdbcClass>
-               <jdbcURL>jdbc:sqlserver://esteams12\sql17</jdbcURL>
+               <jdbcURL>jdbc:sqlserver://devserver</jdbcURL>
                <jdbcUser>jdbcUser</jdbcUser>
                <jdbcPwd>jdbcPwd</jdbcPwd>
                <!-- Empire-db driver configuration -->
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBCmdParamList.java 
b/empire-db/src/main/java/org/apache/empire/db/DBCmdParamList.java
index d59a5328..09491937 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBCmdParamList.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBCmdParamList.java
@@ -44,6 +44,20 @@ public class DBCmdParamList implements DBCmdParams
         cmdParams = null;
     }
 
+    public DBCmdParamList(DBCmdParams initial)
+    {
+        if (initial.isEmpty())
+        {   // empty
+            cmdParams = null;
+        }
+        else
+        {   // copy from initial
+            cmdParams = new ArrayList<>(initial.size());
+            for (DBCmdParam p : initial)
+                cmdParams.add(p);
+        }
+    }
+
     public DBCmdParamList(int size)
     {
         cmdParams = (size>0 ? new ArrayList<>(size) : null);
@@ -86,6 +100,11 @@ public class DBCmdParamList implements DBCmdParams
         cmdParams.add(param);
     }
     
+    public void add(DBCommand cmd, DataType type, Object value)
+    {
+        add(new DBCmdParam(cmd, type, value));
+    }
+    
     public void remove(DBCmdParam param)
     {
         if (cmdParams==null || !cmdParams.remove(param))
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 a550c29b..3cbced8a 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
@@ -23,6 +23,8 @@ import java.util.List;
 
 import org.apache.empire.commons.StringUtils;
 import org.apache.empire.data.DataType;
+import org.apache.empire.db.DBCmdParamList;
+import org.apache.empire.db.DBCmdParams;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBCommand;
@@ -218,6 +220,20 @@ public class DBCommandOracle extends DBCommand
         }
         completeParamUsage();
     }
+    
+    @Override
+    public DBCmdParams getParams()
+    {
+        DBCmdParams params = super.getParams();
+        if (limitRows<0 || !isPreparedStatementsEnabled())
+            return params;
+        // extended with limitRows and skipRows
+        DBCmdParamList extended = new DBCmdParamList(params);
+        extended.add(this, DataType.INTEGER, this.limitRows);
+        if (skipRows>0)
+            extended.add(this, DataType.INTEGER, this.skipRows);
+        return extended;
+    }
 
     @Override
     public Object[] getParamValues()

Reply via email to