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;
}
}