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 rh...@apache.org on 2014/10/07 14:28:53 UTC

svn commit: r1629866 - in /db/derby/code/trunk/java/engine/org/apache/derby: impl/jdbc/ConnectionChild.java impl/jdbc/EmbedSavepoint.java jdbc/EmbedXAResource.java

Author: rhillegas
Date: Tue Oct  7 12:28:52 2014
New Revision: 1629866

URL: http://svn.apache.org/r1629866
Log:
DERBY-6751: Improve performance of ResultSet.next() by caching the lcc in ConnectionChild; tests passed cleanly on derby-6751-02-ab-cacheLCC.diff.

Modified:
    db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/ConnectionChild.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedSavepoint.java
    db/derby/code/trunk/java/engine/org/apache/derby/jdbc/EmbedXAResource.java

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/ConnectionChild.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/ConnectionChild.java?rev=1629866&r1=1629865&r2=1629866&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/ConnectionChild.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/ConnectionChild.java Tue Oct  7 12:28:52 2014
@@ -42,6 +42,9 @@ abstract class ConnectionChild {
 	*/
 	EmbedConnection localConn;
 
+    /** Cached LanguageConnectionContext */
+    private LanguageConnectionContext   lcc;
+
 	/**	
 		Factory for JDBC objects to be created.
 	*/
@@ -156,7 +159,7 @@ abstract class ConnectionChild {
         boolean pushStack, EmbedConnection ec) {
 
         if (pushStack) {
-            InterruptStatus.restoreIntrFlagIfSeen( getLanguageConnectionContext( ec ) );
+            InterruptStatus.restoreIntrFlagIfSeen( getLCC( ec ) );
         } else {
             // no lcc if connection is closed:
             InterruptStatus.restoreIntrFlagIfSeen();
@@ -164,9 +167,18 @@ abstract class ConnectionChild {
     }
     
 	/**
+	  *	Get and cache the LanguageConnectionContext for this connection.
+	  */
+	LanguageConnectionContext	getLanguageConnectionContext( final EmbedConnection conn )
+	{
+        if ( lcc == null ) { lcc = getLCC( conn ); }
+
+        return lcc;
+	}
+	/**
 	  *	Gets the LanguageConnectionContext for this connection.
 	  */
-	static LanguageConnectionContext	getLanguageConnectionContext( final EmbedConnection conn )
+	static LanguageConnectionContext	getLCC( final EmbedConnection conn )
 	{
         return AccessController.doPrivileged
             (

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedSavepoint.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedSavepoint.java?rev=1629866&r1=1629865&r2=1629866&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedSavepoint.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedSavepoint.java Tue Oct  7 12:28:52 2014
@@ -120,8 +120,8 @@ final class EmbedSavepoint extends Conne
     boolean sameConnection(EmbedConnection con) {
    		return
             (
-             getLanguageConnectionContext( getEmbedConnection() ) ==
-             getLanguageConnectionContext( con )
+             getLCC( getEmbedConnection() ) ==
+             getLCC( con )
              );
     }
 

Modified: db/derby/code/trunk/java/engine/org/apache/derby/jdbc/EmbedXAResource.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/jdbc/EmbedXAResource.java?rev=1629866&r1=1629865&r2=1629866&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/jdbc/EmbedXAResource.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/jdbc/EmbedXAResource.java Tue Oct  7 12:28:52 2014
@@ -63,6 +63,8 @@ class EmbedXAResource implements XAResou
     private XAXactId currentXid;    
     /** The value of the transaction timeout on this resource. */
     private int timeoutSeconds;
+
+    private LanguageConnectionContext   lcc;
     
     EmbedXAResource (EmbedPooledConnection con, ResourceAdapter ra) {
         this.con = con;
@@ -997,22 +999,27 @@ class EmbedXAResource implements XAResou
 	private	LanguageConnectionContext	getLanguageConnectionContext( final EmbedPooledConnection conn )
         throws SQLException
     {
-        try {
-            return AccessController.doPrivileged
-                (
-                 new PrivilegedExceptionAction<LanguageConnectionContext>()
-                 {
-                     public LanguageConnectionContext run()
-                         throws SQLException
+        if ( lcc == null )
+        {
+            try {
+                lcc = AccessController.doPrivileged
+                    (
+                     new PrivilegedExceptionAction<LanguageConnectionContext>()
                      {
-                         return conn.getLanguageConnection();
+                         public LanguageConnectionContext run()
+                             throws SQLException
+                         {
+                             return conn.getLanguageConnection();
+                         }
                      }
-                 }
-                 );
-        } catch (PrivilegedActionException pae)
-        {
-            throw Util.javaException( pae );
+                     );
+            } catch (PrivilegedActionException pae)
+            {
+                throw Util.javaException( pae );
+            }
         }
+
+        return lcc;
     }
 
 }