You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by dj...@apache.org on 2006/04/07 19:09:26 UTC

svn commit: r392336 - in /db/derby/code/branches/10.1/java: drda/org/apache/derby/impl/drda/ engine/org/apache/derby/iapi/jdbc/ engine/org/apache/derby/impl/jdbc/

Author: djd
Date: Fri Apr  7 10:09:25 2006
New Revision: 392336

URL: http://svn.apache.org/viewcvs?rev=392336&view=rev
Log:
DERBY-1015 (partial) Add an interface for Statement objects from the engine, EngineStatement. Removes
some use of reflection in brokered objects and the network server. Is also a step towards solving
DERBY-1158, downgrading holdabilty in global transactions.
Merge of 391691 from trunk.

Added:
    db/derby/code/branches/10.1/java/engine/org/apache/derby/iapi/jdbc/EngineStatement.java   (props changed)
      - copied unchanged from r391691, db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/EngineStatement.java
Modified:
    db/derby/code/branches/10.1/java/drda/org/apache/derby/impl/drda/DRDAStatement.java
    db/derby/code/branches/10.1/java/engine/org/apache/derby/iapi/jdbc/BrokeredStatement.java
    db/derby/code/branches/10.1/java/engine/org/apache/derby/impl/jdbc/EmbedStatement.java

Modified: db/derby/code/branches/10.1/java/drda/org/apache/derby/impl/drda/DRDAStatement.java
URL: http://svn.apache.org/viewcvs/db/derby/code/branches/10.1/java/drda/org/apache/derby/impl/drda/DRDAStatement.java?rev=392336&r1=392335&r2=392336&view=diff
==============================================================================
--- db/derby/code/branches/10.1/java/drda/org/apache/derby/impl/drda/DRDAStatement.java (original)
+++ db/derby/code/branches/10.1/java/drda/org/apache/derby/impl/drda/DRDAStatement.java Fri Apr  7 10:09:25 2006
@@ -38,6 +38,7 @@
 import org.apache.derby.iapi.jdbc.BrokeredConnection;
 import org.apache.derby.iapi.jdbc.BrokeredPreparedStatement;
 import org.apache.derby.iapi.jdbc.EngineConnection;
+import org.apache.derby.iapi.jdbc.EngineStatement;
 import org.apache.derby.iapi.reference.JDBC30Translation;
 import org.apache.derby.iapi.sql.execute.ExecutionContext;
 import org.apache.derby.iapi.util.StringUtil;
@@ -245,65 +246,47 @@
 
 	/**
 	 *
-	 *  get resultSetHoldability with reflection. 
-	 *  We need to use reflection so we can use hold cursors with 1.3.1. 
-	 *  And also since our statement might be a BrokeredStatement.
+	 *  get resultSetHoldability.
 	 * 
 	 * @return the resultSet holdability for the prepared statement
 	 *
 	 */
 	protected int getResultSetHoldability() throws SQLException
 	{
-		Statement rsstmt = null;
+		Statement rsstmt;
 		ResultSet rs = getResultSet();
-		int holdValue = -1;
 
 		if (rs  != null)
 			rsstmt = rs.getStatement();
 		else
 			rsstmt = getPreparedStatement();
-				
-		Class[] getResultSetHoldabilityParam  = {};
-		try {
-			Method sh =
-				rsstmt.getClass().getMethod("getResultSetHoldability", getResultSetHoldabilityParam);
-			holdValue =  ((Integer) sh.invoke(rsstmt,null)).intValue();
-		}
-		catch (Exception e) {
-			handleReflectionException(e);
-		}
+        
+        int holdValue = 
+            ((EngineStatement) rsstmt).getResultSetHoldability();
+
 		return holdValue;
 	}
 	
 	/**
 	 *
-	 *  get resultSetHoldability with reflection. 
-	 *  We need to use reflection so we can use hold cursors with 1.3.1. 
-	 *  And also since our statement might be a BrokeredStatement.
+	 *  get resultSetHoldability.
 	 * 
 	 * @param rs ResultSet 
 	 * @return the resultSet holdability for the prepared statement
 	 *
 	 */
-	protected int getResultSetHoldability(ResultSet rs) throws SQLException
+	int getResultSetHoldability(ResultSet rs) throws SQLException
 	{
-		Statement rsstmt = null;
-		int holdValue = -1;
+		Statement rsstmt;
 
 		if (rs  != null)
 			rsstmt = rs.getStatement();
 		else
 			rsstmt = getPreparedStatement();
-				
-		Class[] getResultSetHoldabilityParam  = {};
-		try {
-			Method sh =
-				rsstmt.getClass().getMethod("getResultSetHoldability", getResultSetHoldabilityParam);
-			holdValue =  ((Integer) sh.invoke(rsstmt,null)).intValue();
-		}
-		catch (Exception e) {
-			handleReflectionException(e);
-		}
+        
+        int holdValue = 
+            ((EngineStatement) rsstmt).getResultSetHoldability();
+
 		return holdValue;
 	}	
 
@@ -1554,22 +1537,10 @@
 	 * @see java.sql.Statement#getMoreResults
 	 *
 	 */
-	protected boolean getMoreResults(int current) throws SQLException
-	{
-		boolean retVal = false;
-		Class[] intPARAM = {Integer.TYPE};
-		Object[] args = {new Integer(current)};
-		try {
-			Method sh = getPreparedStatement().getClass().getMethod("getMoreResults",intPARAM);
-			Boolean retObj = (Boolean) sh.invoke(getPreparedStatement(),args);
-			retVal = retObj.booleanValue();
-		}
-		catch (Exception e)
-		{
-			
-			handleReflectionException(e);
-		}
-		return retVal;
+	private boolean getMoreResults(int current) throws SQLException
+	{       
+        return
+            ((EngineStatement) getPreparedStatement()).getMoreResults(current);
 	}
 
 	/**

Modified: db/derby/code/branches/10.1/java/engine/org/apache/derby/iapi/jdbc/BrokeredStatement.java
URL: http://svn.apache.org/viewcvs/db/derby/code/branches/10.1/java/engine/org/apache/derby/iapi/jdbc/BrokeredStatement.java?rev=392336&r1=392335&r2=392336&view=diff
==============================================================================
--- db/derby/code/branches/10.1/java/engine/org/apache/derby/iapi/jdbc/BrokeredStatement.java (original)
+++ db/derby/code/branches/10.1/java/engine/org/apache/derby/iapi/jdbc/BrokeredStatement.java Fri Apr  7 10:09:25 2006
@@ -36,7 +36,7 @@
 /**
 	A Statement implementation that forwards all of its requests to an underlying Statement.
  */
-public class BrokeredStatement implements Statement
+public class BrokeredStatement implements EngineStatement
 {
 
 	/**
@@ -441,7 +441,7 @@
      */
 	public final boolean getMoreResults(int current) throws SQLException
     {
-        return getStatement().getMoreResults( current);
+        return ((EngineStatement) getStatement()).getMoreResults( current);
 	}
 
     /**
@@ -464,19 +464,7 @@
 	public final int getResultSetHoldability()
         throws SQLException
 	{
-		int defaultHoldability = JDBC30Translation.HOLD_CURSORS_OVER_COMMIT;
-		if (JVMInfo.JDK_ID >= JVMInfo.J2SE_14) { //No need to use reflection for jdks 1.4 and higher
-			defaultHoldability = getStatement().getResultSetHoldability();
-		} else {
-			try {
-				Method sh = getStatement().getClass().getMethod("getResultSetHoldability", null);
-				defaultHoldability = ((Integer)sh.invoke(getStatement(), null)).intValue();
-			} catch( Exception e)
-			{
-				throw PublicAPI.wrapStandardException( StandardException.plainWrapException( e));
-			}
-		}
-		return defaultHoldability;
+		return ((EngineStatement) getStatement()).getResultSetHoldability();
 	}
 
 	/*

Propchange: db/derby/code/branches/10.1/java/engine/org/apache/derby/iapi/jdbc/EngineStatement.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: db/derby/code/branches/10.1/java/engine/org/apache/derby/impl/jdbc/EmbedStatement.java
URL: http://svn.apache.org/viewcvs/db/derby/code/branches/10.1/java/engine/org/apache/derby/impl/jdbc/EmbedStatement.java?rev=392336&r1=392335&r2=392336&view=diff
==============================================================================
--- db/derby/code/branches/10.1/java/engine/org/apache/derby/impl/jdbc/EmbedStatement.java (original)
+++ db/derby/code/branches/10.1/java/engine/org/apache/derby/impl/jdbc/EmbedStatement.java Fri Apr  7 10:09:25 2006
@@ -32,6 +32,7 @@
 import org.apache.derby.iapi.sql.ParameterValueSet;
 import org.apache.derby.iapi.sql.conn.LanguageConnectionContext;
 import org.apache.derby.iapi.error.StandardException;
+import org.apache.derby.iapi.jdbc.EngineStatement;
 
 import java.sql.SQLException;
 import java.sql.SQLWarning;
@@ -58,7 +59,7 @@
  * @author ames
  */
 public class EmbedStatement extends ConnectionChild
-    implements java.sql.Statement {
+    implements EngineStatement {
 
 	private final java.sql.Connection applicationConnection;