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