This is an automated email from the ASF dual-hosted git repository.
doebele pushed a commit to branch version3
in repository https://gitbox.apache.org/repos/asf/empire-db.git
The following commit(s) were added to refs/heads/version3 by this push:
new 3f8270e EMPIREDB-373 PreparedStatements on Context and subquery
parameter handling
3f8270e is described below
commit 3f8270ecec88d22a2ae8dfaf57bd9524885e72bb
Author: Rainer Döbele <[email protected]>
AuthorDate: Tue Feb 15 15:51:02 2022 +0100
EMPIREDB-373 PreparedStatements on Context and subquery parameter handling
---
.../empire/samples/db/advanced/CarSalesDB.java | 5 ++-
.../empire/samples/db/advanced/SampleAdvApp.java | 2 +-
.../org/apache/empire/samples/db/SampleApp.java | 9 ++++-
.../jsf2/websample/web/SampleApplication.java | 2 +-
.../org/apache/empire/rest/service/Service.java | 6 +++
.../org/apache/empire/jsf2/app/WebDBContext.java | 12 +++---
.../main/java/org/apache/empire/db/DBCmdParam.java | 9 +++++
.../main/java/org/apache/empire/db/DBCommand.java | 45 ++++++++++++++++------
.../main/java/org/apache/empire/db/DBContext.java | 2 +-
.../main/java/org/apache/empire/db/DBDatabase.java | 2 +-
.../main/java/org/apache/empire/db/DBQuery.java | 6 ---
.../main/java/org/apache/empire/db/DBReader.java | 5 ++-
.../main/java/org/apache/empire/db/DBUtils.java | 26 ++++++++++++-
.../apache/empire/db/context/DBContextBase.java | 12 ++++--
.../apache/empire/db/context/DBContextStatic.java | 42 +++++++++++++++++---
.../empire/db/expr/join/DBColumnJoinExpr.java | 26 +++++++++++++
.../empire/db/expr/join/DBCrossJoinExpr.java | 24 ++++++++++++
.../org/apache/empire/db/expr/join/DBJoinExpr.java | 7 ++++
.../java/org/apache/empire/dbms/DBMSHandler.java | 2 +-
.../org/apache/empire/dbms/DBMSHandlerBase.java | 20 +++++++++-
.../apache/empire/dbms/derby/DBMSHandlerDerby.java | 36 ++---------------
.../org/apache/empire/dbms/h2/DBMSHandlerH2.java | 10 ++---
.../apache/empire/dbms/hsql/DBMSHandlerHSql.java | 34 +---------------
.../apache/empire/dbms/mysql/DBMSHandlerMySQL.java | 10 ++---
.../apache/empire/dbms/oracle/DBCommandOracle.java | 7 ++--
.../empire/dbms/oracle/DBMSHandlerOracle.java | 6 +--
.../dbms/postgresql/DBMSHandlerPostgreSQL.java | 10 ++---
.../empire/dbms/sqlite/DBMSHandlerSQLite.java | 10 ++---
.../empire/dbms/sqlserver/DBMSHandlerMSSQL.java | 10 ++---
.../test/java/org/apache/empire/db/MockDriver.java | 14 -------
.../java/org/apache/empire/db/SerializeTest.java | 6 +++
31 files changed, 254 insertions(+), 163 deletions(-)
diff --git
a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/CarSalesDB.java
b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/CarSalesDB.java
index 90dec27..2c02576 100644
---
a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/CarSalesDB.java
+++
b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/CarSalesDB.java
@@ -334,7 +334,7 @@ public class CarSalesDB extends TDatabase<CarSalesDB>
.having(SALES.MODEL_ID.count().isGreaterThan(10))
.orderBy(BRAND.NAME.desc(), MODEL.NAME.asc());
*/
- DBCommand cmd = context.createCommand(this)
+ DBCommand cmd = context.createCommand()
.selectQualified(BRAND.NAME, MODEL.CONFIG_NAME)
.select (MODEL.BASE_PRICE)
.select (SALES.MODEL_ID.count(), SALES.PRICE.avg())
@@ -359,13 +359,14 @@ public class CarSalesDB extends TDatabase<CarSalesDB>
log.info("col {} -> {}", entry.getColumn(i).getName(),
entry.getColumn(i).getBeanPropertyName());
List<QueryResult> list = context.getUtils().queryBeanList(cmd,
QueryResult.class, null);
+ log.info("queryBeanList returnes {} items", list.size());
}
public void updateDemo(DBContext context)
{
- DBCommand cmd = context.createCommand(this)
+ DBCommand cmd = context.createCommand()
.set (MODEL.BASE_PRICE.to(55000)) // set the price-tag
.join (MODEL.BRAND_ID, BRAND.ID)
.where(BRAND.NAME.is("Tesla"))
diff --git
a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
index b52ac4c..298af0e 100644
---
a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
+++
b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
@@ -279,7 +279,7 @@ public class SampleAdvApp
*/
private void clearDatabase()
{
- DBCommand cmd = context.createCommand(db);
+ DBCommand cmd = context.createCommand();
// Delete all Employee Department History records
context.executeDelete(T_EDH, cmd);
// Delete all Employees (no constraints)
diff --git
a/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/SampleApp.java
b/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/SampleApp.java
index 0de039c..b3221be 100644
---
a/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/SampleApp.java
+++
b/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/SampleApp.java
@@ -106,6 +106,8 @@ public class SampleApp
{
// SECTION 1: Get a JDBC Connection
log.info("Step 1: getJDBCConnection()");
+
+ db.setPreparedStatementsEnabled(true);
Connection conn = getJDBCConnection();
@@ -114,7 +116,10 @@ public class SampleApp
DBMSHandler dbms = getDBMSHandler(config.getDatabaseProvider(), conn);
// SECTION 2.2: Create a Context
- context = new DBContextStatic(dbms, conn, false, true);
+ context = new DBContextStatic(dbms, conn, true)
+ // set optional context features
+ .setPreparedStatementsEnabled(db.isPreparedStatementsEnabled())
+ .setRollbackHandlingEnabled(false);
// SECTION 3: Open Database
log.info("Step 3: Open database (and create if not existing)");
@@ -261,7 +266,7 @@ public class SampleApp
*/
private void clearDatabase()
{
- DBCommand cmd = context.createCommand(db);
+ DBCommand cmd = context.createCommand();
// Delete all Payments (no constraints)
context.executeDelete(db.PAYMENTS, cmd);
// Delete all Employees (no constraints)
diff --git
a/empire-db-examples/empire-db-example-jsf2/src/main/java/org/apache/empire/jsf2/websample/web/SampleApplication.java
b/empire-db-examples/empire-db-example-jsf2/src/main/java/org/apache/empire/jsf2/websample/web/SampleApplication.java
index c2b12c2..73c4138 100644
---
a/empire-db-examples/empire-db-example-jsf2/src/main/java/org/apache/empire/jsf2/websample/web/SampleApplication.java
+++
b/empire-db-examples/empire-db-example-jsf2/src/main/java/org/apache/empire/jsf2/websample/web/SampleApplication.java
@@ -141,7 +141,7 @@ public class SampleApplication extends WebApplication {
DBContext context = null;
try {
conn = getConnection(sampleDB);
- context = new DBContextStatic(dbmsHandler, conn, false,
false);
+ context = new DBContextStatic(dbmsHandler, conn);
sampleDB.open(context);
if (!databaseExists(context)) {
// STEP 4: Create Database
diff --git
a/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/rest/service/Service.java
b/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/rest/service/Service.java
index 9efc969..b647afb 100644
---
a/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/rest/service/Service.java
+++
b/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/rest/service/Service.java
@@ -89,6 +89,12 @@ public abstract class Service {
{
return db.getDbms();
}
+
+ @Override
+ public boolean isPreparedStatementsEnabled()
+ {
+ return false;
+ }
@Override
public boolean isRollbackHandlingEnabled()
diff --git
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/WebDBContext.java
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/WebDBContext.java
index 4f30ad6..965a54e 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/WebDBContext.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/WebDBContext.java
@@ -9,7 +9,6 @@ import java.sql.Connection;
import javax.faces.context.FacesContext;
import org.apache.empire.commons.ClassUtils;
-import org.apache.empire.db.DBCommand;
import org.apache.empire.db.DBDatabase;
import org.apache.empire.db.context.DBContextBase;
import org.apache.empire.db.context.DBRollbackManager;
@@ -80,16 +79,17 @@ public class WebDBContext<DB extends DBDatabase> extends
DBContextBase implement
return database;
}
- public DBCommand createCommand()
- {
- return super.createCommand(database);
- }
-
@Override
public DBMSHandler getDbms()
{
return dbms;
}
+
+ @Override
+ public boolean isPreparedStatementsEnabled()
+ {
+ return database.isPreparedStatementsEnabled();
+ }
@Override
public boolean isRollbackHandlingEnabled()
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBCmdParam.java
b/empire-db/src/main/java/org/apache/empire/db/DBCmdParam.java
index c32a6f4..b5503fb 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBCmdParam.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBCmdParam.java
@@ -113,6 +113,15 @@ public class DBCmdParam extends DBExpr
}
/**
+ * Returns the command this parameter belongs to
+ * @return the command
+ */
+ public DBCommand getCmd()
+ {
+ return cmd;
+ }
+
+ /**
* Returns the data type of the command parameter
* @return the data type
*/
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 0a49d6d..0c9e288 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
@@ -59,8 +59,6 @@ public abstract class DBCommand extends DBCommandExpr
// Logger
protected static final Logger log =
LoggerFactory.getLogger(DBCommand.class);
- // Database
- private final DBDatabase db; /* transient */
// Distinct Select
protected boolean selectDistinct = false;
// Lists
@@ -70,7 +68,9 @@ public abstract class DBCommand extends DBCommandExpr
protected List<DBCompareExpr> where = null;
protected List<DBCompareExpr> having = null;
protected List<DBColumnExpr> groupBy = null;
+
// Parameters for prepared Statements
+ protected boolean preparedStatementsEnabled = false; /*
flag for automatic prepared statements */
protected List<DBCmdParam> cmdParams = null;
private int paramUsageCount= 0;
@@ -79,9 +79,9 @@ public abstract class DBCommand extends DBCommandExpr
*
* @param db the current database object
*/
- protected DBCommand(DBDatabase db)
+ protected DBCommand(boolean preparedStatementsEnabled)
{
- this.db = db;
+ this.preparedStatementsEnabled = preparedStatementsEnabled;
}
/**
@@ -115,6 +115,12 @@ public abstract class DBCommand extends DBCommandExpr
protected void resetParamUsage()
{
paramUsageCount = 0;
+ // clear subquery params
+ if (cmdParams==null)
+ return;
+ for (int i=cmdParams.size()-1; i>=0 ;i--)
+ if (cmdParams.get(i).getCmd()!=this)
+ cmdParams.remove(i);
}
/**
@@ -188,8 +194,11 @@ public abstract class DBCommand extends DBCommandExpr
clone.paramUsageCount = 0;
clone.cmdParams = new ArrayList<DBCmdParam>();
for (DBCmdParam p : cmdParams)
- {
- DBCmdParam param = new DBCmdParam(this, p.getDataType(),
p.getValue());
+ { // checkCmd
+ if (p.getCmd()!=this)
+ continue;
+ // copy
+ DBCmdParam param = new DBCmdParam(clone, p.getDataType(),
p.getValue());
clone.cmdParams.add(param);
}
}
@@ -206,7 +215,12 @@ public abstract class DBCommand extends DBCommandExpr
@Override
public final DBDatabase getDatabase()
{
- return db;
+ if (hasSelectExpr())
+ return this.select.get(0).getDatabase();
+ if (hasSetExpr())
+ return this.set.get(0).getDatabase();
+ // not valid yet
+ return null;
}
/**
@@ -1166,11 +1180,11 @@ public abstract class DBCommand extends DBCommandExpr
}
/**
- * returns true if prepared statements are enabled for this database
+ * returns true if prepared statements are enabled for this command
*/
protected boolean isPreparedStatementsEnabled()
{
- return db.isPreparedStatementsEnabled();
+ return this.preparedStatementsEnabled;
}
/**
@@ -1279,7 +1293,7 @@ public abstract class DBCommand extends DBCommandExpr
continue;
}
if (tables.contains(table) == false && table != null)
- { // Add table
+ { // Add table
tables.add(table);
}
}
@@ -1515,6 +1529,15 @@ public abstract class DBCommand extends DBCommandExpr
buf.append( "\t" );
}
join.addSQL(buf, context);
+ // Merge subquery params
+ Object[] qryParams = join.getSubqueryParams();
+ if (qryParams!=null && qryParams.length>0)
+ {
+ for (int p=0; p<qryParams.length; p++)
+ {
+ cmdParams.add(paramUsageCount++, new DBCmdParam(null,
DataType.UNKNOWN, qryParams[p]));
+ }
+ }
// add CRLF
if( i!=joins.size()-1 )
buf.append("\r\n");
@@ -1530,7 +1553,7 @@ public abstract class DBCommand extends DBCommandExpr
}
if (sep==false)
{ // add pseudo table or omitt from
- String pseudoTable =
db.getDbms().getSQLPhrase(DBSqlPhrase.SQL_PSEUDO_TABLE);
+ String pseudoTable =
getDatabase().getDbms().getSQLPhrase(DBSqlPhrase.SQL_PSEUDO_TABLE);
if (StringUtils.isNotEmpty(pseudoTable))
{ // add pseudo table
buf.append(pseudoTable);
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBContext.java
b/empire-db/src/main/java/org/apache/empire/db/DBContext.java
index b640111..52297f8 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBContext.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBContext.java
@@ -36,7 +36,7 @@ public interface DBContext
<T extends DBUtils> T getUtils();
- DBCommand createCommand(DBDatabase db);
+ DBCommand createCommand();
int executeSQL(String sqlCmd, Object[] sqlParams);
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
b/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
index 9d2c3ab..7e67076 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
@@ -886,7 +886,7 @@ public abstract class DBDatabase extends DBObject
public final DBCommand createCommand()
{
checkOpen();
- return dbms.createCommand(this);
+ return dbms.createCommand(this.isPreparedStatementsEnabled());
}
/**
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
b/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
index aa12f7e..ac1e021 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
@@ -402,8 +402,6 @@ public class DBQuery extends DBRowSet
for (int i = 0; i < keyColumns.length; i++)
{ // Set key column constraint
Object value = key[i];
- if (db.isPreparedStatementsEnabled())
- value = cmd.addParam(keyColumns[i], value);
cmd.where(keyColumns[i].is(value));
}
// Read Record
@@ -527,8 +525,6 @@ public class DBQuery extends DBRowSet
if (keyColumns[i].getRowSet() == table)
{ // Set key column constraint
Object value = key[i];
- if (db.isPreparedStatementsEnabled())
- value = upd.addParam(keyColumns[i], value);
upd.where(keyColumns[i].is(value));
}
}
@@ -546,8 +542,6 @@ public class DBQuery extends DBRowSet
Object lastTS = fields[timestampIndex];
if (ObjectUtils.isEmpty(lastTS)==false)
{ // set timestamp constraint
- if (db.isPreparedStatementsEnabled())
- lastTS = upd.addParam(tsColumn, lastTS);
upd.where(tsColumn.is(lastTS));
}
// Set new Timestamp
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBReader.java
b/empire-db/src/main/java/org/apache/empire/db/DBReader.java
index acfd9d1..d4da336 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBReader.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBReader.java
@@ -24,7 +24,6 @@ import java.lang.reflect.InvocationTargetException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -474,8 +473,9 @@ public class DBReader extends DBRecordData implements
Closeable
close();
// Get the query statement
String sqlCmd = cmd.getSelect();
- // Collect the query parameters
Object[] paramValues = cmd.getParamValues();
+ // Collect the query parameters
+ /*
List<Object> subqueryParamValues = (cmd instanceof DBCommand) ?
findSubQueryParams((DBCommand)cmd) : null;
if (subqueryParamValues!=null && !subqueryParamValues.isEmpty())
{ // Check Count
@@ -489,6 +489,7 @@ public class DBReader extends DBRecordData implements
Closeable
throw new UnspecifiedErrorException(msg);
}
}
+ */
// Execute the query
DBUtils utils = context.getUtils();
ResultSet queryRset = utils.executeQuery(sqlCmd, paramValues,
scrollable);
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBUtils.java
b/empire-db/src/main/java/org/apache/empire/db/DBUtils.java
index 2574fa7..3c816bb 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBUtils.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBUtils.java
@@ -3,6 +3,7 @@ package org.apache.empire.db;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.SQLIntegrityConstraintViolationException;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -24,17 +25,18 @@ import
org.apache.empire.db.exceptions.QueryNoResultException;
import org.apache.empire.db.exceptions.StatementFailedException;
import org.apache.empire.db.exceptions.UnknownBeanTypeException;
import org.apache.empire.db.expr.compare.DBCompareExpr;
-import org.apache.empire.db.list.DataBean;
import org.apache.empire.db.list.DBBeanFactoryCache;
import org.apache.empire.db.list.DBBeanListFactory;
import org.apache.empire.db.list.DBBeanListFactoryImpl;
import org.apache.empire.db.list.DBRecordListFactory;
import org.apache.empire.db.list.DBRecordListFactoryImpl;
+import org.apache.empire.db.list.DataBean;
import org.apache.empire.dbms.DBMSFeature;
import org.apache.empire.dbms.DBMSHandler;
import org.apache.empire.exceptions.InternalException;
import org.apache.empire.exceptions.InvalidArgumentException;
import org.apache.empire.exceptions.UnexpectedReturnValueException;
+import org.apache.empire.exceptions.UnspecifiedErrorException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -116,6 +118,18 @@ public class DBUtils implements DBContextAware
}
/**
+ * internally used
+ */
+ private int getSelectParamsCount(String select)
+ {
+ int count = 0;
+ int pos = -1;
+ while ((pos=select.indexOf('?', ++pos))>0)
+ count++;
+ return count;
+ }
+
+ /**
* Executes a select SQL-Statement and returns a ResultSet containing the
query results.<BR>
* This function returns a JDBC ResultSet.<BR>
* Instead of using this function directly you should use a DBReader
object instead.<BR>
@@ -128,7 +142,15 @@ public class DBUtils implements DBContextAware
public ResultSet executeQuery(String sqlCmd, Object[] sqlParams, boolean
scrollable)
{
try
- { // Debug
+ { // check
+ int paramCount = getSelectParamsCount(sqlCmd);
+ if (paramCount!=(sqlParams!=null ? sqlParams.length : 0))
+ { // Wrong number of params
+ String msg = MessageFormat.format("Invalid number of
parameters query: provided={0}, required={1}; query="+sqlCmd, paramCount,
sqlParams.length);
+ log.error(msg);
+ throw new UnspecifiedErrorException(msg);
+ }
+ // Debug
if (log.isDebugEnabled())
log.debug("Executing: " + sqlCmd);
// Execute the Statement
diff --git
a/empire-db/src/main/java/org/apache/empire/db/context/DBContextBase.java
b/empire-db/src/main/java/org/apache/empire/db/context/DBContextBase.java
index c03464c..d1c09df 100644
--- a/empire-db/src/main/java/org/apache/empire/db/context/DBContextBase.java
+++ b/empire-db/src/main/java/org/apache/empire/db/context/DBContextBase.java
@@ -23,7 +23,6 @@ import java.sql.SQLException;
import org.apache.empire.db.DBCommand;
import org.apache.empire.db.DBContext;
-import org.apache.empire.db.DBDatabase;
import org.apache.empire.db.DBObject;
import org.apache.empire.db.DBTable;
import org.apache.empire.db.DBUtils;
@@ -76,14 +75,21 @@ public abstract class DBContextBase implements DBContext
}
/**
+ * returns whether DBCommmand should automatically create a prepared
statement with command params (?)
+ * Event if this is false, is still possible to manually add command
params using cmd.addCmdParam();
+ * @return true if automatic prepared Statements are enabled or false if
not
+ */
+ public abstract boolean isPreparedStatementsEnabled();
+
+ /**
* Creates a new Command object for the given database
*
* @return the command object.
*/
@Override
- public final DBCommand createCommand(DBDatabase db)
+ public final DBCommand createCommand()
{
- return getDbms().createCommand(db);
+ return getDbms().createCommand(isPreparedStatementsEnabled());
}
/**
diff --git
a/empire-db/src/main/java/org/apache/empire/db/context/DBContextStatic.java
b/empire-db/src/main/java/org/apache/empire/db/context/DBContextStatic.java
index 2085a6f..f4ad1cd 100644
--- a/empire-db/src/main/java/org/apache/empire/db/context/DBContextStatic.java
+++ b/empire-db/src/main/java/org/apache/empire/db/context/DBContextStatic.java
@@ -22,13 +22,19 @@ import java.sql.Connection;
import org.apache.empire.db.context.DBRollbackManager.ReleaseAction;
import org.apache.empire.dbms.DBMSHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class DBContextStatic extends DBContextBase
-{
+{ // Logger
+ private static final Logger log =
LoggerFactory.getLogger(DBContextStatic.class);
+
private final DBMSHandler dbms;
private final Connection conn;
- private final boolean enableRollbackHandling;
private final boolean closeOnDiscard;
+ // features
+ private boolean enableRollbackHandling = false;
+ private boolean preparedStatementsEnabled = false;
/**
* Global DBRollbackManager
@@ -45,7 +51,7 @@ public class DBContextStatic extends DBContextBase
*/
public DBContextStatic(DBMSHandler dbmsHandler, Connection conn)
{
- this(dbmsHandler, conn, false, false);
+ this(dbmsHandler, conn, false);
}
/**
@@ -55,11 +61,10 @@ public class DBContextStatic extends DBContextBase
* @param enableRollbackHandling
* @param closeOnDiscard
*/
- public DBContextStatic(DBMSHandler dbmsHandler, Connection conn, boolean
enableRollbackHandling, boolean closeOnDiscard)
+ public DBContextStatic(DBMSHandler dbmsHandler, Connection conn, boolean
closeOnDiscard)
{
this.dbms = dbmsHandler;
this.conn = conn;
- this.enableRollbackHandling = enableRollbackHandling;
this.closeOnDiscard = closeOnDiscard;
}
@@ -70,11 +75,38 @@ public class DBContextStatic extends DBContextBase
}
@Override
+ public boolean isPreparedStatementsEnabled()
+ {
+ return preparedStatementsEnabled;
+ }
+
+ /**
+ * enables or disables the use of prepared statements for update and
insert commands as well as for read operations on a DBRecord.
+ * Note: For custom SQL commands parameters must be explicitly declared
using cmd.addCmdParam();
+ * @param preparedStatementsEnabled
+ */
+ public DBContextStatic setPreparedStatementsEnabled(boolean enabled)
+ {
+ this.preparedStatementsEnabled = enabled;
+ // log prepared statement
+ log.info("PreparedStatementsEnabled has been set to " +
preparedStatementsEnabled);
+ return this;
+ }
+
+ @Override
public boolean isRollbackHandlingEnabled()
{
return enableRollbackHandling;
}
+ public DBContextStatic setRollbackHandlingEnabled(boolean enabled)
+ {
+ this.enableRollbackHandling = enabled;
+ // log prepared statement
+ log.info("RollbackHandlingEnabled has been set to " +
enableRollbackHandling);
+ return this;
+ }
+
@Override
public void discard()
{
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 cc54ed7..7a0629e 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
@@ -25,6 +25,7 @@ import org.apache.empire.db.DBColumn;
import org.apache.empire.db.DBColumnExpr;
import org.apache.empire.db.DBDatabase;
import org.apache.empire.db.DBJoinType;
+import org.apache.empire.db.DBQuery;
import org.apache.empire.db.DBRowSet;
import org.apache.empire.db.expr.compare.DBCompareExpr;
import org.apache.empire.exceptions.InvalidPropertyException;
@@ -250,6 +251,31 @@ public class DBColumnJoinExpr extends DBJoinExpr
}
/**
+ * Returns the subquery Params
+ * Valid only directly after addSQL() has been called!
+ * @return the subquery params;
+ */
+ @Override
+ public Object[] getSubqueryParams()
+ {
+ 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;
+ if (leftParams!=null && rightParams!=null)
+ { // combine
+ Object[] both = new Object[leftParams.length+rightParams.length];
+ int index = 0;
+ for (int i=0; i<leftParams.length; i++)
+ both[index++] = leftParams[i];
+ for (int i=0; i<rightParams.length; i++)
+ both[index++] = rightParams[i];
+ return both;
+ }
+ return (leftParams!=null ? leftParams : rightParams);
+ }
+
+ /**
* Compares two DBJoinExpr objects.
*
* @param obj other DBJoinExpr object
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 721bce3..5b0df2f 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
@@ -24,6 +24,7 @@ import org.apache.empire.db.DBColumn;
import org.apache.empire.db.DBColumnExpr;
import org.apache.empire.db.DBDatabase;
import org.apache.empire.db.DBJoinType;
+import org.apache.empire.db.DBQuery;
import org.apache.empire.db.DBRowSet;
/**
@@ -154,6 +155,29 @@ public class DBCrossJoinExpr extends DBJoinExpr
}
/**
+ * Returns the subquery Params
+ * Valid only directly after addSQL() has been called!
+ * @return the subquery params;
+ */
+ @Override
+ public Object[] getSubqueryParams()
+ {
+ Object[] leftParams = (left instanceof DBQuery) ? ((DBQuery)left
).getCommandExpr().getParamValues() : null;
+ Object[] rightParams = (right instanceof DBQuery) ?
((DBQuery)right).getCommandExpr().getParamValues() : null;
+ if (leftParams!=null && rightParams!=null)
+ { // combine
+ Object[] both = new Object[leftParams.length+rightParams.length];
+ int index = 0;
+ for (int i=0; i<leftParams.length; i++)
+ both[index++] = leftParams[i];
+ for (int i=0; i<rightParams.length; i++)
+ both[index++] = rightParams[i];
+ return both;
+ }
+ return (leftParams!=null ? leftParams : rightParams);
+ }
+
+ /**
* Compares two DBJoinExpr objects.
*
* @param obj other DBJoinExpr object
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 62eef75..7cb40bf 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
@@ -98,6 +98,13 @@ public abstract class DBJoinExpr extends DBExpr
public abstract DBRowSet getOuterTable();
/**
+ * Returns the subquery Params
+ * Valid only directly after addSQL() has been called!
+ * @return the subquery params;
+ */
+ public abstract Object[] getSubqueryParams();
+
+ /**
* This function swaps the left and the right statements of the join
expression.
*/
public abstract void reverse();
diff --git a/empire-db/src/main/java/org/apache/empire/dbms/DBMSHandler.java
b/empire-db/src/main/java/org/apache/empire/dbms/DBMSHandler.java
index 3c46b26..4102494 100644
--- a/empire-db/src/main/java/org/apache/empire/dbms/DBMSHandler.java
+++ b/empire-db/src/main/java/org/apache/empire/dbms/DBMSHandler.java
@@ -60,7 +60,7 @@ public interface DBMSHandler
* @param db the database for which to create a command object for
* @return a DBCommand object
*/
- DBCommand createCommand(DBDatabase db);
+ DBCommand createCommand(boolean preparedStatementsEnabled);
/**
* This function gives the dbms a chance to provide a custom
implementation
diff --git
a/empire-db/src/main/java/org/apache/empire/dbms/DBMSHandlerBase.java
b/empire-db/src/main/java/org/apache/empire/dbms/DBMSHandlerBase.java
index 11fbd33..65b4c63 100644
--- a/empire-db/src/main/java/org/apache/empire/dbms/DBMSHandlerBase.java
+++ b/empire-db/src/main/java/org/apache/empire/dbms/DBMSHandlerBase.java
@@ -80,6 +80,19 @@ public abstract class DBMSHandlerBase implements DBMSHandler
"select", "udpate",
"insert", "alter", "delete",
"order" };
protected final Set<String> reservedSQLKeywords;
+
+ /**
+ * DBMSCommand
+ * A Default DBCommand implementation with no additional features
+ * @author doebele
+ */
+ public static final class DBMSCommand extends DBCommand
+ {
+ protected DBMSCommand(boolean preparedStatementsEnabled)
+ {
+ super(preparedStatementsEnabled);
+ }
+ }
/**
* This class is used to emulate sequences by using a sequence table.
@@ -118,7 +131,7 @@ public abstract class DBMSHandlerBase implements DBMSHandler
PreparedStatement stmt = null;
try
{ // The select Statement
- DBCommand cmd = dbms.createCommand(db);
+ DBCommand cmd =
dbms.createCommand(db.isPreparedStatementsEnabled());
DBCmdParam nameParam = cmd.addParam(SeqName);
cmd.select(C_SEQVALUE);
cmd.select(C_TIMESTAMP);
@@ -276,7 +289,10 @@ public abstract class DBMSHandlerBase implements
DBMSHandler
* @return a DBCommand object
*/
@Override
- public abstract DBCommand createCommand(DBDatabase db);
+ public DBCommand createCommand(boolean preparedStatementsEnabled)
+ {
+ return new DBMSCommand(preparedStatementsEnabled);
+ }
/**
* This function gives the dbms a chance to provide a custom
implementation
diff --git
a/empire-db/src/main/java/org/apache/empire/dbms/derby/DBMSHandlerDerby.java
b/empire-db/src/main/java/org/apache/empire/dbms/derby/DBMSHandlerDerby.java
index c9ceb53..2e1f9c7 100644
--- a/empire-db/src/main/java/org/apache/empire/dbms/derby/DBMSHandlerDerby.java
+++ b/empire-db/src/main/java/org/apache/empire/dbms/derby/DBMSHandlerDerby.java
@@ -23,18 +23,17 @@ import java.util.GregorianCalendar;
import org.apache.empire.data.DataType;
import org.apache.empire.db.DBColumnExpr;
-import org.apache.empire.db.DBCommand;
import org.apache.empire.db.DBDDLGenerator;
import org.apache.empire.db.DBDDLGenerator.DDLActionType;
-import org.apache.empire.dbms.DBMSHandler;
-import org.apache.empire.dbms.DBMSHandlerBase;
-import org.apache.empire.dbms.DBMSFeature;
-import org.apache.empire.dbms.DBSqlPhrase;
import org.apache.empire.db.DBDatabase;
import org.apache.empire.db.DBObject;
import org.apache.empire.db.DBSQLScript;
import org.apache.empire.db.DBTable;
import org.apache.empire.db.DBTableColumn;
+import org.apache.empire.dbms.DBMSFeature;
+import org.apache.empire.dbms.DBMSHandler;
+import org.apache.empire.dbms.DBMSHandlerBase;
+import org.apache.empire.dbms.DBSqlPhrase;
import org.apache.empire.exceptions.NotSupportedException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -49,19 +48,6 @@ public class DBMSHandlerDerby extends DBMSHandlerBase
{
// *Deprecated* private static final long serialVersionUID = 1L;
private static final Logger log =
LoggerFactory.getLogger(DBMSHandlerDerby.class);
-
- /**
- * Defines the Derby command type.
- */
- public static class DBCommandDerby extends DBCommand
- {
- // *Deprecated* private static final long serialVersionUID = 1L;
-
- public DBCommandDerby(DBDatabase db)
- {
- super(db);
- }
- }
// Properties
private String databaseName = null;
@@ -142,20 +128,6 @@ public class DBMSHandlerDerby extends DBMSHandlerBase
}
/**
- * Creates a new Derby command object.
- *
- * @return the new DBCommandDerby object
- */
- @Override
- public DBCommand createCommand(DBDatabase db)
- {
- if (db == null)
- return null;
- // create command object
- return new DBCommandDerby(db);
- }
-
- /**
* Returns whether or not a particular feature is supported by this dbms
* @param type type of requrested feature. @see DBMSFeature
* @return true if the features is supported or false otherwise
diff --git
a/empire-db/src/main/java/org/apache/empire/dbms/h2/DBMSHandlerH2.java
b/empire-db/src/main/java/org/apache/empire/dbms/h2/DBMSHandlerH2.java
index 98dd19a..87673b1 100644
--- a/empire-db/src/main/java/org/apache/empire/dbms/h2/DBMSHandlerH2.java
+++ b/empire-db/src/main/java/org/apache/empire/dbms/h2/DBMSHandlerH2.java
@@ -61,9 +61,9 @@ public class DBMSHandlerH2 extends DBMSHandlerBase
protected int limitRows = -1;
protected int skipRows = 0;
- public DBCommandH2(DBDatabase db)
+ public DBCommandH2(boolean preparedStatementsEnabled)
{
- super(db);
+ super(preparedStatementsEnabled);
}
@Override
@@ -192,12 +192,10 @@ public class DBMSHandlerH2 extends DBMSHandlerBase
* @return the new DBCommandDerby object
*/
@Override
- public DBCommand createCommand(DBDatabase db)
+ public DBCommand createCommand(boolean preparedStatementsEnabled)
{
- if (db == null)
- return null;
// create command object
- return new DBCommandH2(db);
+ return new DBCommandH2(preparedStatementsEnabled);
}
/**
diff --git
a/empire-db/src/main/java/org/apache/empire/dbms/hsql/DBMSHandlerHSql.java
b/empire-db/src/main/java/org/apache/empire/dbms/hsql/DBMSHandlerHSql.java
index d4a4a5e..2415305 100644
--- a/empire-db/src/main/java/org/apache/empire/dbms/hsql/DBMSHandlerHSql.java
+++ b/empire-db/src/main/java/org/apache/empire/dbms/hsql/DBMSHandlerHSql.java
@@ -24,7 +24,6 @@ import java.util.GregorianCalendar;
import org.apache.empire.commons.ObjectUtils;
import org.apache.empire.data.DataType;
import org.apache.empire.db.DBColumnExpr;
-import org.apache.empire.db.DBCommand;
import org.apache.empire.db.DBDDLGenerator;
import org.apache.empire.db.DBDDLGenerator.DDLActionType;
import org.apache.empire.db.DBDatabase;
@@ -33,9 +32,9 @@ import org.apache.empire.db.DBSQLScript;
import org.apache.empire.db.DBTableColumn;
import org.apache.empire.db.exceptions.QueryNoResultException;
import org.apache.empire.db.validation.DBModelChecker;
+import org.apache.empire.dbms.DBMSFeature;
import org.apache.empire.dbms.DBMSHandler;
import org.apache.empire.dbms.DBMSHandlerBase;
-import org.apache.empire.dbms.DBMSFeature;
import org.apache.empire.dbms.DBSqlPhrase;
import org.apache.empire.exceptions.NotSupportedException;
import org.slf4j.Logger;
@@ -52,23 +51,6 @@ public class DBMSHandlerHSql extends DBMSHandlerBase
{
// *Deprecated* private static final long serialVersionUID = 1L;
private static final Logger log =
LoggerFactory.getLogger(DBMSHandlerHSql.class);
-
- /**
- * Defines the HSQLDB command type.
- */
- public static class DBCommandHSql extends DBCommand
- {
- // *Deprecated* private static final long serialVersionUID = 1L;
-
- /**
- * @param db the database
- * @see org.apache.empire.db.DBCommand
- */
- public DBCommandHSql(DBDatabase db)
- {
- super(db);
- }
- }
private DBDDLGenerator<?> ddlGenerator = null; // lazy creation
@@ -82,20 +64,6 @@ public class DBMSHandlerHSql extends DBMSHandlerBase
}
/**
- * Creates a new HSQLDB command object.
- *
- * @return the new DBCommandHSql object
- */
- @Override
- public DBCommand createCommand(DBDatabase db)
- {
- if (db == null)
- return null;
- // create command object
- return new DBCommandHSql(db);
- }
-
- /**
* Returns whether or not a particular feature is supported by this dbms
* @param type type of requested feature. @see DBMSFeature
* @return true if the features is supported or false otherwise
diff --git
a/empire-db/src/main/java/org/apache/empire/dbms/mysql/DBMSHandlerMySQL.java
b/empire-db/src/main/java/org/apache/empire/dbms/mysql/DBMSHandlerMySQL.java
index a53e41b..26faef5 100644
--- a/empire-db/src/main/java/org/apache/empire/dbms/mysql/DBMSHandlerMySQL.java
+++ b/empire-db/src/main/java/org/apache/empire/dbms/mysql/DBMSHandlerMySQL.java
@@ -65,9 +65,9 @@ public class DBMSHandlerMySQL extends DBMSHandlerBase
protected int limit = -1;
protected int skip = -1;
- public DBCommandMySQL(DBDatabase db)
+ public DBCommandMySQL(boolean preparedStatementsEnabled)
{
- super(db);
+ super(preparedStatementsEnabled);
}
@Override
@@ -904,12 +904,10 @@ public class DBMSHandlerMySQL extends DBMSHandlerBase
* @return the new DBCommandMySQL object
*/
@Override
- public DBCommand createCommand(DBDatabase db)
+ public DBCommand createCommand(boolean preparedStatementsEnabled)
{
- if (db == null)
- return null;
// create command object
- return new DBCommandMySQL(db);
+ return new DBCommandMySQL(preparedStatementsEnabled);
}
@Override
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 58222c0..d5e878d 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
@@ -29,7 +29,6 @@ import org.apache.empire.data.DataType;
import org.apache.empire.db.DBColumn;
import org.apache.empire.db.DBColumnExpr;
import org.apache.empire.db.DBCommand;
-import org.apache.empire.db.DBDatabase;
import org.apache.empire.db.DBIndex;
import org.apache.empire.db.DBRowSet;
import org.apache.empire.db.DBTable;
@@ -68,9 +67,9 @@ public class DBCommandOracle extends DBCommand
*
* @param db the oracle database object this command belongs to
*/
- public DBCommandOracle(DBDatabase db)
+ public DBCommandOracle(boolean preparedStatementsEnabled)
{
- super(db);
+ super(preparedStatementsEnabled);
}
public String getOptimizerHint()
@@ -228,7 +227,7 @@ public class DBCommandOracle extends DBCommand
public Object[] getParamValues()
{
Object[] params = super.getParamValues();
- if (limitRows<0 || !getDatabase().isPreparedStatementsEnabled())
+ if (limitRows<0 || !isPreparedStatementsEnabled())
return params;
// add limit and skip params
int newSize = (params!=null ? params.length : 0)+(skipRows>0 ? 2 : 1);
diff --git
a/empire-db/src/main/java/org/apache/empire/dbms/oracle/DBMSHandlerOracle.java
b/empire-db/src/main/java/org/apache/empire/dbms/oracle/DBMSHandlerOracle.java
index eea9835..2d57c2d 100644
---
a/empire-db/src/main/java/org/apache/empire/dbms/oracle/DBMSHandlerOracle.java
+++
b/empire-db/src/main/java/org/apache/empire/dbms/oracle/DBMSHandlerOracle.java
@@ -151,12 +151,10 @@ public class DBMSHandlerOracle extends DBMSHandlerBase
* @return the new DBCommandOracle object
*/
@Override
- public DBCommand createCommand(DBDatabase db)
+ public DBCommand createCommand(boolean preparedStatementsEnabled)
{
- if (db == null)
- return null;
// create oracle command
- return new DBCommandOracle(db);
+ return new DBCommandOracle(preparedStatementsEnabled);
}
/**
diff --git
a/empire-db/src/main/java/org/apache/empire/dbms/postgresql/DBMSHandlerPostgreSQL.java
b/empire-db/src/main/java/org/apache/empire/dbms/postgresql/DBMSHandlerPostgreSQL.java
index 04709c4..7770f17 100644
---
a/empire-db/src/main/java/org/apache/empire/dbms/postgresql/DBMSHandlerPostgreSQL.java
+++
b/empire-db/src/main/java/org/apache/empire/dbms/postgresql/DBMSHandlerPostgreSQL.java
@@ -86,9 +86,9 @@ public class DBMSHandlerPostgreSQL extends DBMSHandlerBase
protected int limit = -1;
protected int skip = -1;
- public DBCommandPostreSQL(DBDatabase db)
+ public DBCommandPostreSQL(boolean preparedStatementsEnabled)
{
- super(db);
+ super(preparedStatementsEnabled);
}
@Override
@@ -293,12 +293,10 @@ public class DBMSHandlerPostgreSQL extends DBMSHandlerBase
* @return the new DBCommandPostgreSQL object
*/
@Override
- public DBCommand createCommand(DBDatabase db)
+ public DBCommand createCommand(boolean preparedStatementsEnabled)
{
- if (db == null)
- return null;
// create command object
- return new DBCommandPostreSQL(db);
+ return new DBCommandPostreSQL(preparedStatementsEnabled);
}
/**
diff --git
a/empire-db/src/main/java/org/apache/empire/dbms/sqlite/DBMSHandlerSQLite.java
b/empire-db/src/main/java/org/apache/empire/dbms/sqlite/DBMSHandlerSQLite.java
index bd4f4af..1f549b5 100644
---
a/empire-db/src/main/java/org/apache/empire/dbms/sqlite/DBMSHandlerSQLite.java
+++
b/empire-db/src/main/java/org/apache/empire/dbms/sqlite/DBMSHandlerSQLite.java
@@ -73,9 +73,9 @@ public class DBMSHandlerSQLite extends DBMSHandlerBase
* the database
* @see org.apache.empire.db.DBCommand
*/
- public DBCommandSQLite(DBDatabase db)
+ public DBCommandSQLite(boolean preparedStatementsEnabled)
{
- super(db);
+ super(preparedStatementsEnabled);
}
@Override
@@ -268,12 +268,10 @@ public class DBMSHandlerSQLite extends DBMSHandlerBase
* @return the new DBCommandSQLite object
*/
@Override
- public DBCommand createCommand(DBDatabase db)
+ public DBCommand createCommand(boolean preparedStatementsEnabled)
{
- if (db == null)
- return null;
// create command object
- return new DBCommandSQLite(db);
+ return new DBCommandSQLite(preparedStatementsEnabled);
}
/**
diff --git
a/empire-db/src/main/java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java
b/empire-db/src/main/java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java
index cf68e99..07630ec 100644
---
a/empire-db/src/main/java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java
+++
b/empire-db/src/main/java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java
@@ -64,9 +64,9 @@ public class DBMSHandlerMSSQL extends DBMSHandlerBase
// *Deprecated* private static final long serialVersionUID = 1L;
protected int limit = -1;
- public DBCommandMSSQL(DBDatabase db)
+ public DBCommandMSSQL(boolean preparedStatementsEnabled)
{
- super(db);
+ super(preparedStatementsEnabled);
}
@Override
@@ -277,12 +277,10 @@ public class DBMSHandlerMSSQL extends DBMSHandlerBase
* @return the new DBCommandMSSQL object
*/
@Override
- public DBCommand createCommand(DBDatabase db)
+ public DBCommand createCommand(boolean preparedStatementsEnabled)
{
- if (db == null)
- return null;
// create command object
- return new DBCommandMSSQL(db);
+ return new DBCommandMSSQL(preparedStatementsEnabled);
}
/**
diff --git a/empire-db/src/test/java/org/apache/empire/db/MockDriver.java
b/empire-db/src/test/java/org/apache/empire/db/MockDriver.java
index 8724e6a..ed6521e 100644
--- a/empire-db/src/test/java/org/apache/empire/db/MockDriver.java
+++ b/empire-db/src/test/java/org/apache/empire/db/MockDriver.java
@@ -32,20 +32,6 @@ public class MockDriver extends DBMSHandlerBase {
// *Deprecated* private static final long serialVersionUID = 1L;
int seqValue = 0;
-
- class MockCommand extends DBCommand{
- // *Deprecated* private static final long serialVersionUID = 1L;
- protected MockCommand(DBDatabase db)
- {
- super(db);
- }
- }
-
- @Override
- public DBCommand createCommand(DBDatabase db)
- {
- return new MockCommand(db);
- }
@Override
public String getConvertPhrase(DataType destType, DataType srcType, Object
format)
diff --git a/empire-db/src/test/java/org/apache/empire/db/SerializeTest.java
b/empire-db/src/test/java/org/apache/empire/db/SerializeTest.java
index 7c731ba..ca11abd 100644
--- a/empire-db/src/test/java/org/apache/empire/db/SerializeTest.java
+++ b/empire-db/src/test/java/org/apache/empire/db/SerializeTest.java
@@ -155,6 +155,12 @@ public class SerializeTest
}
@Override
+ public boolean isPreparedStatementsEnabled()
+ {
+ return false;
+ }
+
+ @Override
public boolean isRollbackHandlingEnabled()
{
return false;