From 52a51e0fbb2b8a739e88d95d17f6ce1fb51abbac Mon Sep 17 00:00:00 2001 From: Scott Kurz Date: Wed, 5 Nov 2014 17:25:48 -0500 Subject: [PATCH] Attempt to address GLASSFISH-21022 and GLASSFISH-20886 --- .../impl/JDBCPersistenceManagerImpl.java | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/com.ibm.jbatch.container/src/main/java/com/ibm/jbatch/container/services/impl/JDBCPersistenceManagerImpl.java b/com.ibm.jbatch.container/src/main/java/com/ibm/jbatch/container/services/impl/JDBCPersistenceManagerImpl.java index 1ebbfeb4..76738371 100755 --- a/com.ibm.jbatch.container/src/main/java/com/ibm/jbatch/container/services/impl/JDBCPersistenceManagerImpl.java +++ b/com.ibm.jbatch.container/src/main/java/com/ibm/jbatch/container/services/impl/JDBCPersistenceManagerImpl.java @@ -380,12 +380,13 @@ private void logException(String msg, Exception e) { private void setSchemaOnConnection(Connection connection) throws SQLException { logger.finest("Entering " + CLASSNAME +".setSchemaOnConnection()"); - PreparedStatement ps = null; - ps = connection.prepareStatement("SET SCHEMA ?"); - ps.setString(1, schema); - ps.executeUpdate(); - - ps.close(); + if (!"Oracle".equals(connection.getMetaData().getDatabaseProductName())) { + PreparedStatement ps = null; + ps = connection.prepareStatement("SET SCHEMA ?"); + ps.setString(1, schema); + ps.executeUpdate(); + ps.close(); + } logger.finest("Exiting " + CLASSNAME +".setSchemaOnConnection()"); } @@ -1432,7 +1433,7 @@ public Set jobOperatorGetRunningExecutions(String jobName){ try { conn = getConnection(); - statement = conn.prepareStatement("SELECT A.jobexecid FROM executioninstancedata AS A INNER JOIN jobinstancedata AS B ON A.jobinstanceid = B.jobinstanceid WHERE A.batchstatus IN (?,?,?) AND B.name = ?"); + statement = conn.prepareStatement("SELECT A.jobexecid FROM executioninstancedata A INNER JOIN jobinstancedata B ON A.jobinstanceid = B.jobinstanceid WHERE A.batchstatus IN (?,?,?) AND B.name = ?"); statement.setString(1, BatchStatus.STARTED.name()); statement.setString(2, BatchStatus.STARTING.name()); statement.setString(3, BatchStatus.STOPPING.name()); @@ -1482,13 +1483,13 @@ public void purge(String apptag) { String deleteJobs = "DELETE FROM jobinstancedata WHERE apptag = ?"; String deleteJobExecutions = "DELETE FROM executioninstancedata " + "WHERE jobexecid IN (" - + "SELECT B.jobexecid FROM jobinstancedata AS A INNER JOIN executioninstancedata AS B " + + "SELECT B.jobexecid FROM jobinstancedata A INNER JOIN executioninstancedata B " + "ON A.jobinstanceid = B.jobinstanceid " + "WHERE A.apptag = ?)"; String deleteStepExecutions = "DELETE FROM stepexecutioninstancedata " + "WHERE stepexecid IN (" - + "SELECT C.stepexecid FROM jobinstancedata AS A INNER JOIN executioninstancedata AS B " - + "ON A.jobinstanceid = B.jobinstanceid INNER JOIN stepexecutioninstancedata AS C " + + "SELECT C.stepexecid FROM jobinstancedata A INNER JOIN executioninstancedata B " + + "ON A.jobinstanceid = B.jobinstanceid INNER JOIN stepexecutioninstancedata C " + "ON B.jobexecid = C.jobexecid " + "WHERE A.apptag = ?)"; @@ -1626,7 +1627,7 @@ public JobInstance createSubJobInstance(String name, String apptag) { try { conn = getConnection(); - statement = conn.prepareStatement("INSERT INTO jobinstancedata (name, apptag) VALUES(?, ?)", Statement.RETURN_GENERATED_KEYS); + statement = conn.prepareStatement("INSERT INTO jobinstancedata (name, apptag) VALUES(?, ?)", new String[] { "JOBINSTANCEID" } ); statement.setString(1, name); statement.setString(2, apptag); statement.executeUpdate(); @@ -1656,7 +1657,7 @@ public JobInstance createJobInstance(String name, String apptag, String jobXml) try { conn = getConnection(); - statement = conn.prepareStatement("INSERT INTO jobinstancedata (name, apptag) VALUES(?, ?)", Statement.RETURN_GENERATED_KEYS); + statement = conn.prepareStatement("INSERT INTO jobinstancedata (name, apptag) VALUES(?, ?)", new String[] { "JOBINSTANCEID" } ); statement.setString(1, name); statement.setString(2, apptag); statement.executeUpdate(); @@ -1695,7 +1696,7 @@ private long createRuntimeJobExecutionEntry(JobInstance jobInstance, Properties long newJobExecutionId = 0L; try { conn = getConnection(); - statement = conn.prepareStatement("INSERT INTO executioninstancedata (jobinstanceid, createtime, updatetime, batchstatus, parameters) VALUES(?, ?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS); + statement = conn.prepareStatement("INSERT INTO executioninstancedata (jobinstanceid, createtime, updatetime, batchstatus, parameters) VALUES(?, ?, ?, ?, ?)", new String[] { "JOBEXECID" }); statement.setLong(1, jobInstance.getInstanceId()); statement.setTimestamp(2, timestamp); statement.setTimestamp(3, timestamp); @@ -1798,7 +1799,7 @@ private StepExecutionImpl createStepExecution(long rootJobExecId, String batchS try { conn = getConnection(); - statement = conn.prepareStatement(query, Statement.RETURN_GENERATED_KEYS); + statement = conn.prepareStatement(query, new String[] { "STEPEXECID" }); statement.setLong(1, rootJobExecId); statement.setString(2, batchStatus); statement.setString(3, exitStatus);