Return-Path: X-Original-To: apmail-db-derby-commits-archive@www.apache.org Delivered-To: apmail-db-derby-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 8B783FD74 for ; Mon, 29 Apr 2013 12:17:45 +0000 (UTC) Received: (qmail 73959 invoked by uid 500); 29 Apr 2013 12:17:45 -0000 Delivered-To: apmail-db-derby-commits-archive@db.apache.org Received: (qmail 72787 invoked by uid 500); 29 Apr 2013 12:17:39 -0000 Mailing-List: contact derby-commits-help@db.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: "Derby Development" List-Id: Delivered-To: mailing list derby-commits@db.apache.org Received: (qmail 71775 invoked by uid 99); 29 Apr 2013 12:17:38 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 29 Apr 2013 12:17:38 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 29 Apr 2013 12:17:34 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 42A9A238889B; Mon, 29 Apr 2013 12:17:13 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1476983 - in /db/derby/code/trunk/java: client/org/apache/derby/client/am/ engine/org/apache/derby/impl/jdbc/ engine/org/apache/derby/impl/sql/execute/ testing/org/apache/derbyTesting/functionTests/tests/jdbc4/ Date: Mon, 29 Apr 2013 12:17:12 -0000 To: derby-commits@db.apache.org From: rhillegas@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130429121713.42A9A238889B@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: rhillegas Date: Mon Apr 29 12:17:12 2013 New Revision: 1476983 URL: http://svn.apache.org/r1476983 Log: DERBY-6206: Cleanup mutability problems in org.apache.derby.impl.jdbc. Modified: db/derby/code/trunk/java/client/org/apache/derby/client/am/ClientStatement.java db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedResultSet.java db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedResultSetMetaData.java db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedSQLException.java db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DMLWriteResultSet.java db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/RowUtil.java db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/PreparedStatementTest.java db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/StatementTest.java Modified: db/derby/code/trunk/java/client/org/apache/derby/client/am/ClientStatement.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/client/org/apache/derby/client/am/ClientStatement.java?rev=1476983&r1=1476982&r2=1476983&view=diff ============================================================================== --- db/derby/code/trunk/java/client/org/apache/derby/client/am/ClientStatement.java (original) +++ db/derby/code/trunk/java/client/org/apache/derby/client/am/ClientStatement.java Mon Apr 29 12:17:12 2013 @@ -36,8 +36,17 @@ import org.apache.derby.shared.common.sa public class ClientStatement implements Statement, StatementCallbackInterface{ /** For use in debugging setLargeMaxRows() method added by JDBC 4.2 */ - public static long fetchedRowBase = 0L; + private static long fetchedRowBase = 0L; + /** + * Debug method used to test the setLargeMaxRows() method added by JDBC 4.2. + * This method is a NOP on a production (insane) build of Derby. + */ + public static void setFetchedRowBase( long newBase ) + { + if (SanityManager.DEBUG) { fetchedRowBase = newBase; } + } + //---------------------navigational members----------------------------------- private MaterialStatement materialStatement_ = null; Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedResultSet.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedResultSet.java?rev=1476983&r1=1476982&r2=1476983&view=diff ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedResultSet.java (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedResultSet.java Mon Apr 29 12:17:12 2013 @@ -96,7 +96,7 @@ public class EmbedResultSet extends Conn implements EngineResultSet, Comparable { /** For use in debugging setLargeMaxRows() method added by JDBC 4.2 */ - public static long fetchedRowBase = 0L; + private static long fetchedRowBase = 0L; // cursor movement protected static final int FIRST = 1; @@ -305,6 +305,15 @@ public class EmbedResultSet extends Conn order = conn.getResultSetOrderId(); } + /** + * Debug method used to test the setLargeMaxRows() method added by JDBC 4.2. + * This method is a NOP on a production (insane) build of Derby. + */ + public static void setFetchedRowBase( long newBase ) + { + if (SanityManager.DEBUG) { fetchedRowBase = newBase; } + } + private void checkNotOnInsertRow() throws SQLException { if (isOnInsertRow) { throw newSQLException(SQLState.NO_CURRENT_ROW); Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedResultSetMetaData.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedResultSetMetaData.java?rev=1476983&r1=1476982&r2=1476983&view=diff ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedResultSetMetaData.java (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedResultSetMetaData.java Mon Apr 29 12:17:12 2013 @@ -21,6 +21,7 @@ package org.apache.derby.impl.jdbc; +import org.apache.derby.iapi.services.io.ArrayUtil; import org.apache.derby.iapi.sql.ResultDescription; import org.apache.derby.iapi.sql.ResultColumnDescriptor; import org.apache.derby.iapi.types.DataTypeDescriptor; @@ -65,7 +66,7 @@ public class EmbedResultSetMetaData // constructor // public EmbedResultSetMetaData(ResultColumnDescriptor[] columnInfo) { - this.columnInfo = columnInfo; + this.columnInfo = (ResultColumnDescriptor[]) ArrayUtil.copy( columnInfo ); } // Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedSQLException.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedSQLException.java?rev=1476983&r1=1476982&r2=1476983&view=diff ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedSQLException.java (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/impl/jdbc/EmbedSQLException.java Mon Apr 29 12:17:12 2013 @@ -22,6 +22,7 @@ package org.apache.derby.impl.jdbc; import org.apache.derby.iapi.error.DerbySQLException; +import org.apache.derby.iapi.services.io.ArrayUtil; import java.sql.SQLException; import org.apache.derby.iapi.error.StandardException; @@ -73,7 +74,7 @@ public class EmbedSQLException extends S } public Object[] getArguments() { - return arguments; + return ArrayUtil.copy( arguments ); } /* Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DMLWriteResultSet.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DMLWriteResultSet.java?rev=1476983&r1=1476982&r2=1476983&view=diff ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DMLWriteResultSet.java (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DMLWriteResultSet.java Mon Apr 29 12:17:12 2013 @@ -113,7 +113,7 @@ abstract class DMLWriteResultSet extends needToObjectifyStream = (this.constantAction.getTriggerInfo() != null); } - public final long modifiedRowCount() { return rowCount + RowUtil.rowCountBase; } + public final long modifiedRowCount() { return rowCount + RowUtil.getRowCountBase(); } /** Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/RowUtil.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/RowUtil.java?rev=1476983&r1=1476982&r2=1476983&view=diff ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/RowUtil.java (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/RowUtil.java Mon Apr 29 12:17:12 2013 @@ -37,7 +37,19 @@ import org.apache.derby.iapi.sql.execute public class RowUtil { /** Row count base added for testing JDBC 4.2 */ - public static long rowCountBase = 0L; + private static long rowCountBase = 0L; + + /** + * Debug method used to test the setLargeMaxRows() method added by JDBC 4.2. + * This method is a NOP on a production (insane) build of Derby. + */ + public static void setRowCountBase( long newBase ) + { + if (SanityManager.DEBUG) { rowCountBase = newBase; } + } + + /** Retrieve the row count base */ + public static long getRowCountBase() { return rowCountBase; } /** Get an empty ExecRow. Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/PreparedStatementTest.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/PreparedStatementTest.java?rev=1476983&r1=1476982&r2=1476983&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/PreparedStatementTest.java (original) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/PreparedStatementTest.java Mon Apr 29 12:17:12 2013 @@ -32,6 +32,7 @@ import org.apache.derbyTesting.junit.Tes import java.io.*; import java.sql.*; +import org.apache.derby.iapi.services.sanity.SanityManager; import org.apache.derby.iapi.services.io.DerbyIOException; import org.apache.derby.impl.jdbc.EmbedSQLException; @@ -1196,6 +1197,12 @@ public class PreparedStatementTest exten public static void largeUpdate_jdbc4_2( Connection conn ) throws Exception { + // + // This test makes use of a debug entry point which is a NOP + // in an insane production build. + // + if (!SanityManager.DEBUG) { return; } + println( "Running large update test for JDBC 4.2" ); conn.prepareStatement Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/StatementTest.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/StatementTest.java?rev=1476983&r1=1476982&r2=1476983&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/StatementTest.java (original) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/StatementTest.java Mon Apr 29 12:17:12 2013 @@ -20,6 +20,7 @@ package org.apache.derbyTesting.functionTests.tests.jdbc4; +import org.apache.derby.iapi.services.sanity.SanityManager; import org.apache.derby.vti.VTITemplate; import org.apache.derby.impl.jdbc.EmbedResultSet; import org.apache.derby.impl.sql.execute.RowUtil; @@ -368,6 +369,13 @@ public class StatementTest public static void largeUpdate_jdbc4_2( Connection conn ) throws Exception { + // + // This test makes use of a debug entry point which is a NOP + // in an insane production build. + // + if (!SanityManager.DEBUG) { return; } + else { println( "Running largeUpdate_jdbc4_2() on debug code." ); } + conn.prepareStatement ( "create procedure setRowCountBase( newBase bigint )\n" + @@ -394,6 +402,13 @@ public class StatementTest private static void largeUpdateTest( StatementWrapper sw, long rowCountBase ) throws Exception { + // + // This test makes use of a debug entry point which is a NOP + // in an insane production build. + // + if (!SanityManager.DEBUG) { return; } + else { println( "Running largeUpdateTest() on debug code." ); } + // poke the rowCountBase into the engine. all returned row counts will be // increased by this amount setRowCountBase( sw.getWrappedStatement(), false, rowCountBase ); @@ -446,6 +461,12 @@ public class StatementTest private static void largeBatchTest( StatementWrapper sw, long rowCountBase ) throws Exception { + // + // This test makes use of a debug entry point which is a NOP + // in an insane production build. + // + if (!SanityManager.DEBUG) { return; } + println( "Large batch test with rowCountBase = " + rowCountBase ); // poke the rowCountBase into the engine. all returned row counts will be @@ -473,6 +494,12 @@ public class StatementTest private static void largeMaxRowsTest( StatementWrapper sw, long maxRows ) throws Exception { + // + // This test makes use of a debug entry point which is a NOP + // in an insane production build. + // + if (!SanityManager.DEBUG) { return; } + println( "Large max rows test with maxRows = " + maxRows ); long expectedRowCount = 3L; @@ -497,6 +524,12 @@ public class StatementTest private static void largeBatchUpdateExceptionTest( StatementWrapper sw, long rowCountBase ) throws Exception { + // + // This test makes use of a debug entry point which is a NOP + // in an insane production build. + // + if (!SanityManager.DEBUG) { return; } + println( "Large batch update exception test with rowCountBase = " + rowCountBase ); sw.getWrappedStatement().clearBatch(); @@ -540,7 +573,7 @@ public class StatementTest { if ( onClient ) { - ClientStatement.fetchedRowBase = rowCountBase; + ClientStatement.setFetchedRowBase( rowCountBase ); } else { @@ -699,8 +732,8 @@ public class StatementTest /** Set the base which is used for returned row counts and fetched row counters */ public static void setRowCountBase( long newBase ) { - EmbedResultSet.fetchedRowBase = newBase; - RowUtil.rowCountBase = newBase; + EmbedResultSet.setFetchedRowBase( newBase ); + RowUtil.setRowCountBase( newBase ); } } // End class StatementTest