db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Van Couvering <David.Vancouver...@Sun.COM>
Subject Re: [PATCH] Updatable Resultset JDBC api (update and delete for forward only updatable resultsets) support for Network Server
Date Fri, 20 May 2005 21:55:17 GMT
OK, thanks.

David

Mamta Satoor wrote:
> Hi David,
>  
> I have not yet entered JIRA bugs for these differences. Once the patch
> is committed, I can go ahead and make JIRA entries. Also, yes, I hope
> that these differences can be listed in maybe Server and Admin Guide's
> existing section "Differences between running Derby in embedded mode and
> using the network server".
>  
> Mamta
> 
>  
> On 5/19/05, *David Van Couvering* <david@vancouvering.com
> <mailto:david@vancouvering.com>> wrote:
> 
>     Hi Mamta.  These are some pretty significant incompatibilities between
>     DNC and Embedded drivers.  Are all these logged as JIRA bugs?  Are
>     they/will they be called out in the documentation?
> 
>     Thanks,
> 
>     David
> 
>     Mamta Satoor wrote:
> 
>     > Hi,
>     >
>     > Sometime back, I submitted patches for update and delete on
>     forward only
>     > updatable resultsets using JDBC apis for Embedded Derby. With this
>     mail,
>     > I would like to submit similar support for Network Server using Derby
>     > Net Client.
>     >
>     > The functionality for Network Server is similar to what Embedded Derby
>     > supports, with the exception of following differences
>     > 1)DNC requires that the first column in the select list be from the
>     > target table.
>     > eg select 1, c11 from t1 for update of c11 will fail in Network Server
>     > because driver looks at first column to determine the target table
>     for
>     > update/delete. This is not required by embedded driver. There are
>     tests
>     > for this in the attached patch(Positive Test2 in
>     updatableResultSet.java).
>     > 2)Embedded driver allows Statement name change when there is an open
>     > resultset on that statement object. DNC driver does not supported
>     that.
>     > (Positive Test8a and Test8b in updatableResultSet.java )
>     > 3)(Positive Test20) Embedded driver allows updateString on SMALLINT,
>     > INTEGER, BIGINT, DECIMAL datatypes. DNC doesn't.
>     > Embedded driver support updateBytes on CHAR, VARCHAR, LONG VARCHAR
>     > datatypes. DNC doesn't
>     > Embedded driver support updateTime on TIMESTAMP datatypes. DNC
>     doesn't
>     > Embedded driver supports updateObject with null value. DNC doesn't
>     > DNC does not support updateClob and updateBlob
>     >
>     > Following files are changed by this patch
>     > **************svn stat************
>     > M
>     >
>     java\testing\org\apache\derbyTesting\functionTests\tests\lang\updatableResultSet.java
>     > M
>     >
>     java\testing\org\apache\derbyTesting\functionTests\master\DerbyNetClient\updatableResultSet.out
>     >
>     > M
>     >
>     java\testing\org\apache\derbyTesting\functionTests\master\updatableResultSet.out
>     > M
>     >
>     java\testing\org\apache\derbyTesting\functionTests\master\jdk14\updatableResultSet.out
>     > M
>     >
>     java\testing\org\apache\derbyTesting\functionTests\suites\DerbyNet.exclude
>     > M      java\client\org\apache\derby\client\am\ResultSet.java
>     > **********************************
>     >
>     > Following is a brief description of the actual changes that are going
>     > into the patch
>     > 1)After updateRow(provided updateXXX were issued on the row before
>     > updateRow) and deleteRow, position the resultset to right before the
>     > next row. This matches the embedded driver behavior.
>     > 2)If ResultSet is not positioned on a row and user issues
>     updateRow (w/o
>     > prior updateXXX), then throw an exception that it is not a valid
>     > operation. This matches the embedded driver behavior.
>     > 3)Made changes to DNC so that it does not require all the updatable
>     > columns in the sql to be modified with updateXXX prior to updateRow.
>     > This matches the embedded driver behavior.
>     > 4)To preserve case sensitivity and spaces in the names, put quotes
>     > around database object names like table name, column name, cursor
>     name
>     > etc. Similar to embedded driver.(Positive Test31a, Test31b)
>     > 5)For a select sql like, select 2, c11 from t1, Derby has null for
>     table
>     > name and schema name for column 2. DNC needs to check for these
>     nulls to
>     > avoid null pointer exception.
>     >
>     > As always, please review the patch and let me know of any comments,
>     > Mamta
>     >
>     >
>     >
>     >
>     ------------------------------------------------------------------------
> 
>     >
>     > Index:
>     java/testing/org/apache/derbyTesting/functionTests/tests/lang/updatableResultSet.java
>     > ===================================================================
>     > ---
>     java/testing/org/apache/derbyTesting/functionTests/tests/lang/updatableResultSet.java    
>     (revision 170535)
>     > +++
>     java/testing/org/apache/derbyTesting/functionTests/tests/lang/updatableResultSet.java    
>     (working copy)
>     > @@ -253,13 +253,7 @@
>     >                       System.out.println("Negative Testl - request
>     for scroll insensitive updatable resultset will give a read only
>     scroll insensitive resultset");
>     >                       conn.clearWarnings();
>     >                       stmt =
>     conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
>     ResultSet.CONCUR_UPDATABLE);
>     > -                     warnings = conn.getWarnings ();
>     > -                     while (warnings != null)
>     > -                     {
>     > -                            
>     JDBCDisplayUtil.ShowWarnings(System.out, warnings);
>     > -                             warnings = warnings.getNextWarning();
>     > -                     }
>     > -                     conn.clearWarnings();
>     > +                     JDBCDisplayUtil.ShowWarnings(System.out, conn);
>     >                       System.out.println ("requested
>     TYPE_SCROLL_INSENSITIVE, CONCUR_UPDATABLE but that is not supported");
>     >                       System.out.println("Make sure that we got
>     TYPE_SCROLL_INSENSITIVE? " +  (stmt.getResultSetType () ==
>     ResultSet.TYPE_SCROLL_INSENSITIVE));
>     >                       System.out.println("Make sure that we got
>     CONCUR_READ_ONLY? " +  (stmt.getResultSetConcurrency() ==
>     ResultSet.CONCUR_READ_ONLY));
>     > @@ -292,12 +286,7 @@
>     >
>     >                       System.out.println("Negative Test2 - request
>     for scroll sensitive updatable resultset will give a read only
>     scroll insensitive resultset");
>     >                       stmt =
>     conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
>     ResultSet.CONCUR_UPDATABLE);
>     > -                     while (warnings != null)
>     > -                     {
>     > -                             System.out.println ("warnings on
>     connection = " + warnings);
>     > -                             warnings = warnings.getNextWarning();
>     > -                     }
>     > -                     conn.clearWarnings();
>     > +                     JDBCDisplayUtil.ShowWarnings(System.out, conn);
>     >        System.out.println("requested TYPE_SCROLL_SENSITIVE,
>     CONCUR_UPDATABLE but that is not supported");
>     >                       System.out.println("Jira issue Derby-154 :
>     When client connects to Network Server using JCC, it incorrectly
>     shows support for scroll sensitive updatable resultsets");
>     >        System.out.println("Make sure that we got
>     TYPE_SCROLL_INSENSITIVE? " +  (stmt.getResultSetType() ==
>     ResultSet.TYPE_SCROLL_INSENSITIVE));
>     > @@ -377,20 +366,13 @@
>     >                       //have to close the resultset because by
>     default, resultsets are held open over commit
>     >                       rs.close();
>     >
>     > -
>     >                       System.out.println("Negative Test5 - request
>     updatable resultset for sql with no FOR UPDATE clause");
>     >                       stmt =
>     conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
>     ResultSet.CONCUR_UPDATABLE);
>     >                       rs = stmt.executeQuery("select * from
>     t1");//notice that we forgot to give mandatory FOR UPDATE clause for
>     updatable resultset
>     >                       System.out.println("Make sure that we got
>     CONCUR_READ_ONLY? " + (rs.getConcurrency() ==
>     ResultSet.CONCUR_READ_ONLY));
>     >                       System.out.println("Jira issue Derby-159 :
>     Warnings raised by Derby are not getting passed to the Client in
>     Network Server Mode");
>     >                       System.out.println("Will see the warnings in
>     embedded mode only");
>     > -                     warnings = rs.getWarnings();
>     > -                     while (warnings != null)
>     > -                     {
>     > -                             System.out.println("Expected
>     warnings on resultset = " + warnings);
>     > -                             warnings = warnings.getNextWarning ();
>     > -                     }
>     > -                     rs.clearWarnings();
>     > +                     JDBCDisplayUtil.ShowWarnings(System.out, rs);
>     >                       rs.next();
>     >        System.out.println ("Now attempting to send a delete on a
>     sql with no FOR UPDATE clause.");
>     >                       try {
>     > @@ -410,7 +392,6 @@
>     >                               System.out.println("SQL State : " +
>     e.getSQLState());
>     >                               System.out.println("Got expected
>     exception " + e.getMessage());
>     >                       }
>     > -
>     >                       //have to close the resultset because by
>     default, resultsets are held open over commit
>     >                       rs.close();
>     >
>     > @@ -420,13 +401,7 @@
>     >                       System.out.println("Make sure that we got
>     CONCUR_READ_ONLY? " + (rs.getConcurrency() ==
>     ResultSet.CONCUR_READ_ONLY ));
>     >                       System.out.println("Jira issue Derby-159 :
>     Warnings raised by Derby are not getting passed to the Client in
>     Network Server Mode");
>     >                       System.out.println ("Will see the warnings
>     in embedded mode only");
>     > -                     warnings = rs.getWarnings();
>     > -                     while (warnings != null)
>     > -                     {
>     > -                             System.out.println("Expected
>     warnings on resultset = " + warnings);
>     > -                             warnings = warnings.getNextWarning();
>     > -                     }
>     > -                     rs.clearWarnings ();
>     > +                     JDBCDisplayUtil.ShowWarnings(System.out, rs);
>     >                       rs.next();
>     >        System.out.println("Now attempting to send a delete on a
>     sql with FOR READ ONLY clause.");
>     >                       try {
>     > @@ -463,14 +438,12 @@
>     >                               System.out.println("Got expected
>     exception " + e.getMessage());
>     >                       }
>     >         System.out.println("Now attempt a updateRow without first
>     doing next on the resultset.");
>     > -                     System.out.println("In embedded mode,
>     updateRow will check if it is on a row or not even though no changes
>     have been made to the row using updateXXX");
>     > -                     System.out.println("In Network Server mode,
>     if no updateXXX were issued before updateRow, then updateRow is a
>     no-op and doesn't check if it is on a row or not");
>     > +                     System.out.println("updateRow will check if
>     it is on a row or not even " +
>     > +                             "though no changes have been made to
>     the row using updateXXX");
>     >                       try {
>     >                               rs.updateRow();
>     > -                             if (TestUtil.isEmbeddedFramework())
>     > -                                     System.out.println("FAIL!!!
>     In embedded mode, this updateRow should have failed because
>     resultset is not on a row");
>     > -                             else
>     > -                                     System.out.println("PASS!!!
>     In Network Server mode, this updateRow is a no-op because no
>     updateXXX were issued before the updateRow");
>     > +                             System.out.println("FAIL!!!
>     updateRow should have failed because " +
>     > +                                             "resultset is not on
>     a row");
>     >                       }
>     >                       catch (SQLException e) {
>     >                               System.out.println("SQL State : " +
>     e.getSQLState());
>     > @@ -664,12 +637,7 @@
>     >
>     >                       System.out.println("Positive Test1a -
>     request updatable resultset for forward only type resultset");
>     >                       stmt =
>     conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
>     ResultSet.CONCUR_UPDATABLE );
>     > -                     warnings = conn.getWarnings();
>     > -                     while (warnings != null)
>     > -                     {
>     > -                             System.out.println("Unexpected
>     warnings = " + warnings);
>     > -                             warnings = warnings.getNextWarning();
>     > -                     }
>     > +                     JDBCDisplayUtil.ShowWarnings(System.out, conn);
>     >        System.out.println("requested TYPE_FORWARD_ONLY,
>     CONCUR_UPDATABLE");
>     >        System.out.println("got TYPE_FORWARD_ONLY? "
>     +  (stmt.getResultSetType() == ResultSet.TYPE_FORWARD_ONLY));
>     >        System.out.println("got CONCUR_UPDATABLE? "
>     +  (stmt.getResultSetConcurrency () == ResultSet.CONCUR_UPDATABLE));
>     > @@ -679,17 +647,15 @@
>     >        System.out.println("column 1 on this row before deleteRow
>     is " + rs.getInt(1));
>     >        System.out.println("column 2 on this row before deleteRow
>     is " + rs.getString(2));
>     >                       rs.deleteRow();
>     > -      System.out.println("Since after deleteRow(), in embedded
>     mode, ResultSet is positioned before the next row, getXXX will fail");
>     > -       System.out.println("In Network Server mode, the ResultSet
>     stays on the deleted row after deleteRow and hence no error for
>     getXXX");
>     > +      System.out.println("Since after deleteRow(), in embedded
>     mode and Network "+
>     > +                             "Server mode using Derby Net Client,
>     ResultSet is positioned before " +
>     > +                             "the next row, getXXX will fail");
>     >                       try {
>     >                               System.out.println("column 1 on this
>     deleted row is " + rs.getInt(1));
>     >                       }
>     >                       catch (SQLException e) {
>     > -                             if ( TestUtil.isEmbeddedFramework()) {
>     > -                                     System.out.println("SQL
>     State : " + e.getSQLState());
>     > -                                     System.out.println("Got
>     expected exception " + e.getMessage());
>     > -                             } else
>     > -                                     System.out.println("Got
>     unexpected exception " + e.getMessage());
>     > +                             System.out.println("SQL State : " +
>     e.getSQLState());
>     > +                             System.out.println("Got expected
>     exception " + e.getMessage());
>     >                       }
>     >         System.out.println("calling deleteRow again w/o first
>     positioning the ResultSet on the next row will fail");
>     >                       try {
>     > @@ -707,16 +673,10 @@
>     >                       //have to close the resultset because by
>     default, resultsets are held open over commit
>     >                       rs.close();
>     >
>     > -                     if (TestUtil.isEmbeddedFramework()) {
>     >                       System.out.println("Positive Test1b -
>     request updatable resultset for forward only type resultset");
>     >                       reloadData();
>     >                       stmt =
>     conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
>     ResultSet.CONCUR_UPDATABLE);
>     > -                     warnings = conn.getWarnings();
>     > -                     while (warnings != null)
>     > -                     {
>     > -                             System.out.println("Unexpected
>     warnings = " + warnings);
>     > -                             warnings = warnings.getNextWarning();
>     > -                     }
>     > +                     JDBCDisplayUtil.ShowWarnings(System.out, conn);
>     >                       rs = stmt.executeQuery("SELECT * FROM t1 FOR
>     UPDATE");
>     >                       rs.next();
>     >                       System.out.println("column 1 on this row
>     before updateInt is " + rs.getInt(1));
>     > @@ -725,8 +685,9 @@
>     >                       System.out.println ("column 2 on this row
>     before updateString is " + rs.getString(2));
>     >                       System.out.println("now updateRow on the row");
>     >                       rs.updateRow();
>     > -                     System.out.println("Since after updateRow(),
>     in embedded mode, ResultSet is positioned before the next row,
>     getXXX will fail");
>     > -      System.out.println("In Network Server mode, the ResultSet
>     stays on the updated row after updateRow and hence no error for
>     getXXX");
>     > +      System.out.println("Since after updateRow(), in embedded
>     mode and Network "+
>     > +                             "Server mode using Derby Net Client,
>     ResultSet is positioned before " +
>     > +                             "the next row, getXXX will fail");
>     >                       try {
>     >                               System.out.println("column 1 on this
>     updateRow row is " + rs.getInt(1));
>     >                       }
>     > @@ -751,14 +712,33 @@
>     >                       //have to close the resultset because by
>     default, resultsets are held open over commit
>     >                       rs.close();
>     >
>     > -                     System.out.println("Positive Test2 - even if
>     no columns from table specified in the column list, we should be
>     able to get updatable resultset");
>     > +                     System.out.println("Positive Test2 - even if
>     no columns from table " +
>     > +                             "specified in the column list, we
>     should be able to get updatable " +
>     > +                             "resultset");
>     >        reloadData();
>     > +                     System.out.println("Will work in embedded
>     mode because target table is "+
>     > +                             "not derived from the first column
>     in the select list");
>     > +                     System.out.println("Will not work in network
>     server mode because it " +
>     > +                             "derives the target tabke from the
>     first column in the select list");
>     >        System.out.println("total number of rows in T1 ");
>     >        dumpRS(stmt.executeQuery("select count(*) from t1"));
>     >        rs = stmt.executeQuery("SELECT 1, 2 FROM t1 FOR UPDATE");
>     >                       rs.next();
>     >        System.out.println("column 1 on this row is " + rs.getInt(1));
>     > -                     rs.deleteRow();
>     > +                     try {
>     > +                             rs.deleteRow();
>     > +                             if (TestUtil.isNetFramework())
>     > +                                     System.out.println("FAIL!!!
>     should have failed in network server");
>     > +                             else
>     > +                                     System.out.println("PASS!!!
>     passed in embedded mode");
>     > +                     }
>     > +                     catch (SQLException e) {
>     > +                             if ( TestUtil.isNetFramework()) {
>     > +                                     System.out.println("SQL
>     State : " + e.getSQLState());
>     > +                                     System.out.println("Got
>     expected exception " + e.getMessage());
>     > +                             } else
>     > +                                     System.out.println("Got
>     unexpected exception " + e.getMessage());
>     > +                     }
>     >                       //have to close the resultset because by
>     default, resultsets are held open over commit
>     >                       rs.close();
>     >        System.out.println("total number of rows in T1 after one
>     deleteRow is ");
>     > @@ -908,7 +888,7 @@
>     >        System.out.println("deletesAreDetected(
>     ResultSet.TYPE_FORWARD_ONLY)? " +
>     dbmt.deletesAreDetected(ResultSet.TYPE_FORWARD_ONLY));
>     >        reloadData();
>     >                       stmt =
>     conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
>     ResultSet.CONCUR_UPDATABLE );
>     > -      rs = stmt.executeQuery("SELECT 1, 2 FROM t1 FOR UPDATE of c1");
>     > +      rs = stmt.executeQuery("SELECT * FROM t1 FOR UPDATE of c1");
>     >                       rs.next();
>     >        System.out.println("The JDBC program should look at
>     rowDeleted only if deletesAreDetected returns true");
>     >        System.out.println("Since Derby returns false for
>     detlesAreDetected for FORWARD_ONLY updatable resultset,the program
>     should not rely on rs.rowDeleted() for FORWARD_ONLY updatable
>     resultsets");
>     > @@ -971,21 +951,46 @@
>     >                       rs.close();
>     >                       stmt.executeUpdate("DROP TABLE SESSION.t3");
>     >
>     > -                     System.out.println("Positive Test8a - change
>     the name of the resultset and see if deleteRow still works");
>     > +                     System.out.println("Positive Test8a - change
>     the name of the statement " +
>     > +                             "when the resultset is open and see
>     if deleteRow still works");
>     > +                     System.out.println("This test works in
>     embedded mode since Derby can " +
>     > +                             "handle the change in the name of
>     the statement with an open resultset");
>     > +                     System.out.println("But it fails under
>     Network Server mode because JCC " +
>     > +                             "and Derby Net Client do not allow
>     statement name change when there " +
>     > +                             "an open resultset against it");
>     >        reloadData();
>     >                       stmt =
>     conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
>     ResultSet.CONCUR_UPDATABLE);
>     >        System.out.println("change the cursor name(case sensitive
>     name) with setCursorName and then try to deleteRow");
>     >                      
>     stmt.setCursorName("CURSORNOUPDATe");//notice this name is case
>     sensitive
>     > -      rs = stmt.executeQuery("SELECT 1, 2 FROM t1 FOR UPDATE of c1");
>     > +      rs = stmt.executeQuery("SELECT * FROM t1 FOR UPDATE of c1");
>     >                       rs.next();
>     >                       rs.deleteRow();
>     >        System.out.println("change the cursor name one more time
>     with setCursorName and then try to deleteRow");
>     > -                     stmt.setCursorName("CURSORNOUPDATE1");
>     > -                     rs.next();
>     > -                     rs.deleteRow();
>     > +                     try {
>     > +                             stmt.setCursorName("CURSORNOUPDATE1");
>     > +                             rs.next();
>     > +                             rs.deleteRow();
>     > +                             if (TestUtil.isNetFramework())
>     > +                                     System.out.println("FAIL!!!
>     should have failed in network server");
>     > +                             else
>     > +                                     System.out.println ("PASS!!!
>     passed in embedded mode");
>     > +                     }
>     > +                     catch (SQLException e) {
>     > +                             if (TestUtil.isNetFramework()) {
>     > +                                     System.out.println("SQL
>     State : " + e.getSQLState());
>     > +                                     System.out.println("Got
>     expected exception " + e.getMessage());
>     > +                             } else
>     > +                                     System.out.println("Got
>     unexpected exception " + e.getMessage());
>     > +                     }
>     >                       rs.close();
>     >
>     > -                     System.out.println("Positive Test8b - change
>     the name of the resultset and see if updateRow still works");
>     > +                     System.out.println("Positive Test8b - change
>     the name of the statement " +
>     > +                             "when the resultset is open and see
>     if updateRow still works");
>     > +                     System.out.println("This test works in
>     embedded mode since Derby can " +
>     > +                             "handle the change in the name of
>     the statement with an open resultset");
>     > +                     System.out.println("But it fails under
>     Network Server mode because JCC " +
>     > +                             "and Derby Net Client do not allow
>     statement name change when there " +
>     > +                             "an open resultset against it");
>     >        reloadData();
>     >                       System.out.println("change the cursor name
>     one more time with setCursorName and then try to updateRow");
>     >                       stmt =
>     conn.createStatement(ResultSet.TYPE_FORWARD_ONLY ,
>     ResultSet.CONCUR_UPDATABLE);
>     > @@ -994,21 +999,53 @@
>     >                       rs = stmt.executeQuery("SELECT * FROM t1 FOR
>     UPDATE of c1");
>     >                       rs.next();
>     >                       rs.updateLong(1,123);
>     > -                     stmt.setCursorName("CURSORNOUPDATE1");
>     > -                     rs.updateRow();
>     > +                     try {
>     > +                             stmt.setCursorName("CURSORNOUPDATE1");
>     > +                             rs.updateRow();
>     > +                             if (TestUtil.isNetFramework())
>     > +                                     System.out.println ("FAIL!!!
>     should have failed in network server");
>     > +                             else
>     > +                                     System.out.println("PASS!!!
>     passed in embedded mode");
>     > +                     }
>     > +                     catch (SQLException e) {
>     > +                             if (TestUtil.isNetFramework()) {
>     > +                                     System.out.println("SQL
>     State : " + e.getSQLState ());
>     > +                                     System.out.println("Got
>     expected exception " + e.getMessage());
>     > +                             } else
>     > +                                     System.out.println ("Got
>     unexpected exception " + e.getMessage());
>     > +                     }
>     >                       rs.close();
>     >
>     > -                     System.out.println("Positive Test9a - using
>     correlation name for the table in the select sql is not a problem");
>     > +                     System.out.println("Positive Test9a - using
>     correlation name for the " +
>     > +                             "table in the select sql works in
>     embedded mode and Network Server " +
>     > +                             "using Derby Net Client driver");
>     > +                     System.out.println("Correlation name for
>     table does not work in Network "+
>     > +                             "Server mode (using JCC) because the
>     drivers construct the delete sql "+
>     > +                             "with the correlation name rather
>     than the base table name");
>     >                       reloadData();
>     >                       stmt =
>     conn.createStatement(ResultSet.TYPE_FORWARD_ONLY ,
>     ResultSet.CONCUR_UPDATABLE);
>     > -      rs = stmt.executeQuery("SELECT 1, 2 FROM t1 abcde FOR
>     UPDATE of c1");
>     > +      rs = stmt.executeQuery("SELECT * FROM t1 abcde FOR UPDATE
>     of c1");
>     >                       rs.next();
>     >        System.out.println("column 1 on this row is " + rs.getInt(1));
>     >        System.out.println("now try to deleteRow");
>     > -                     rs.deleteRow();
>     > +                     try {
>     > +                             rs.deleteRow();
>     > +                             if (TestUtil.isJCCFramework())
>     > +                                     System.out.println("FAIL!!!
>     should have failed in network server");
>     > +                             else
>     > +                                     System.out.println("PASS!!!
>     passed in embedded mode");
>     > +                     }
>     > +                     catch (SQLException e) {
>     > +                             if (TestUtil.isJCCFramework()) {
>     > +                                     System.out.println ("SQL
>     State : " + e.getSQLState());
>     > +                                     System.out.println("Got
>     expected exception " + e.getMessage());
>     > +                             } else
>     > +                                     System.out.println("Got
>     unexpected exception " + e.getMessage());
>     > +                     }
>     >                       rs.close();
>     > -
>     > -                     System.out.println("Positive Test9b - using
>     correlation name for updatable column name is not allowed");
>     > +
>     > +                     System.out.println("Positive Test9b - using
>     correlation name for " +
>     > +                             "updatable columns is not allowed.");
>     >                       reloadData();
>     >                       stmt =
>     conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
>     ResultSet.CONCUR_UPDATABLE);
>     >                       System.out.println("Table t1 has following
>     rows");
>     > @@ -1055,22 +1092,6 @@
>     >                       System.out.println("Table t1 after updateRow
>     has following rows");
>     >                       dumpRS(stmt.executeQuery("select * from t1"));
>     >
>     > -                     System.out.println("Positive Test9c - try to
>     updateXXX on a readonly column. Should get error");
>     > -                     reloadData();
>     > -                     rs = stmt.executeQuery("SELECT c1, c2 FROM
>     t1 abcde FOR UPDATE of c1");
>     > -                     rs.next();
>     > -                     try {
>     > -                             rs.updateString(2,"bbbb");
>     > -                             System.out.println("FAIL!!!
>     updateString on readonly column should have failed");
>     > -                     }
>     > -                     catch (SQLException e) {
>     > -                             System.out.println("SQL State : " +
>     e.getSQLState());
>     > -                             System.out.println("Got expected
>     exception " + e.getMessage());
>     > -                     }
>     > -                     rs.close();
>     > -                     System.out.println("Table t1 has following
>     rows");
>     > -                     dumpRS(stmt.executeQuery("select * from t1"));
>     > -
>     >                       System.out.println("Positive Test9d - try to
>     updateXXX on a readonly column with correlation name. Should get
>     error");
>     >                       reloadData();
>     >                       rs = stmt.executeQuery("SELECT c1, c2 as
>     col2 FROM t1 abcde FOR UPDATE of c1");
>     > @@ -1092,9 +1113,9 @@
>     >        reloadData();
>     >                       stmt =
>     conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
>     ResultSet.CONCUR_UPDATABLE);
>     >                       stmt1 =
>     conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
>     ResultSet.CONCUR_UPDATABLE );
>     > -      rs = stmt.executeQuery("SELECT 1, 2 FROM t1 FOR UPDATE");
>     > +      rs = stmt.executeQuery("SELECT * FROM t1 FOR UPDATE");
>     >                       rs.next();
>     > -                     rs1 = stmt1.executeQuery("SELECT 1, 2 FROM
>     t1 FOR UPDATE");
>     > +                     rs1 = stmt1.executeQuery("SELECT * FROM t1
>     FOR UPDATE");
>     >                       rs1.next();
>     >                       System.out.println("delete using first
>     resultset");
>     >                       rs.deleteRow();
>     > @@ -1119,7 +1140,7 @@
>     >                       stmt =
>     conn.createStatement(ResultSet.TYPE_FORWARD_ONLY ,
>     ResultSet.CONCUR_UPDATABLE);
>     >                       stmt.executeUpdate("call
>     SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1)");
>     >                       stmt.setFetchSize(200);
>     > -      rs = stmt.executeQuery ("SELECT 1, 2 FROM t1 FOR UPDATE of
>     c1");
>     > +      rs = stmt.executeQuery("SELECT * FROM t1 FOR UPDATE of c1");
>     >                       System.out.println("Notice the Fetch Size in
>     run time statistics output.");
>     >        showScanStatistics(rs, conn);
>     >                       System.out.println("statement's fetch size
>     is " + stmt.getFetchSize());
>     > @@ -1205,6 +1226,7 @@
>     >                       dumpRS( stmt.executeQuery("select * from
>     table2WithTriggers"));
>     >                       //have to close the resultset because by
>     default, resultsets are held open over commit
>     >                       rs.close ();
>     > +                     conn.rollback();
>     >
>     >                       System.out.println("Positive Test14a - make
>     sure self referential delete cascade works when deleteRow is issued");
>     >                       dumpRS( stmt.executeQuery("select * from
>     selfReferencingT1"));
>     > @@ -1252,7 +1274,7 @@
>     >        reloadData();
>     >        conn.setAutoCommit(false);
>     >                       stmt = conn.createStatement
>     (ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
>     > -      rs = stmt.executeQuery("SELECT 1, 2 FROM t1 FOR UPDATE");
>     > +      rs = stmt.executeQuery("SELECT * FROM t1 FOR UPDATE");
>     >                       rs.next();
>     >                       System.out.println("Opened an updatable
>     resultset. Now trying to drop that table through another Statement");
>     >                       stmt1 = conn.createStatement();
>     > @@ -1503,13 +1525,15 @@
>     >                                       }
>     >                               }
>     >                       }
>     > +                     conn.rollback();
>     >                       conn.setAutoCommit(true);
>     >
>     >                       System.out.println("Positive Test21 - Test
>     all updateXXX(excluding updateObject) methods on all the supported
>     sql datatypes");
>     >                       conn.setAutoCommit(false);
>     > -                     stmt =
>     conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
>     ResultSet.CONCUR_UPDATABLE);
>     > -                     stmt1 = conn.createStatement ();
>     > +                     PreparedStatement pstmt =
>     conn.prepareStatement("SELECT * FROM AllDataTypesForTestingTable FOR
>     UPDATE", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
>     > +                     PreparedStatement pstmt1 =
>     conn.prepareStatement("SELECT * FROM AllDataTypesNewValuesData");
>     >                       for (int sqlType = 1, checkAgainstColumn =
>     1; sqlType <= allSQLTypes.length; sqlType++ ) {
>     > +                             conn.rollback();
>     >                               System.out.println("Next datatype to
>     test is " + allSQLTypes[sqlType-1]);
>     >                               for (int updateXXXName =
>     1;  updateXXXName <= allUpdateXXXNames.length; updateXXXName++) {
>     >                                       checkAgainstColumn =
>     updateXXXName;
>     > @@ -1519,9 +1543,9 @@
>     >                                                      
>     System.out.println ("    Using column position as first parameter to
>     " + allUpdateXXXNames[updateXXXName-1]);
>     >                                               else
>     >                                                      
>     System.out.println("    Using column name as first parameter to " +
>     allUpdateXXXNames[updateXXXName-1]);
>     > -                                             rs =
>     stmt.executeQuery("SELECT * FROM AllDataTypesForTestingTable FOR
>     UPDATE");
>     > +                                             rs =
>     pstmt.executeQuery();
>     >                                               rs.next();
>     > -                                             rs1 =
>     stmt1.executeQuery ("SELECT * FROM AllDataTypesNewValuesData");
>     > +                                             rs1 =
>     pstmt1.executeQuery();
>     >                                               rs1.next();
>     >                                               try {
>     >                                                       if
>     (updateXXXName == 1) {//update column with updateShort methods
>     > @@ -1642,7 +1666,8 @@
>     >                                                                      
>     rs.updateRef(ColumnNames[sqlType-1], null);
>     >                }
>     >                                                       rs.updateRow();
>     > -                                                     if
>     (updateXXXRulesTableForEmbedded[sqlType-1][updateXXXName-1].equals("ERROR"))
>     {
>     > +                                                     if
>     ((TestUtil.isNetFramework() &&
>     updateXXXRulesTableForNetworkServer[sqlType-1][updateXXXName-1].equals("ERROR"))
>     ||
>     > +                                                             (
>     TestUtil.isEmbeddedFramework() &&
>     updateXXXRulesTableForEmbedded[sqlType-1][updateXXXName-1].equals("ERROR")))
>     {
>     >                                                              
>     System.out.println("FAILURE : We shouldn't reach here. The test
>     should have failed earlier on updateXXX or updateRow call");
>     >                                                               return;
>     >                                                       }
>     > @@ -1652,7 +1677,8 @@
>     >                                                               return;
>     >                                                       }
>     >                                               } catch (Throwable e) {
>     > -                                                     if
>     (updateXXXRulesTableForEmbedded[sqlType-1][updateXXXName-1].equals("ERROR"))
> 
>     > +                                                     if
>     ((TestUtil.isNetFramework() &&
>     updateXXXRulesTableForNetworkServer[sqlType-1][updateXXXName-1].equals("ERROR"))
>     ||
>     > +                                                             (
>     TestUtil.isEmbeddedFramework() &&
>     updateXXXRulesTableForEmbedded[sqlType-1][updateXXXName-1].equals("ERROR")))
>     >                                                              
>     System.out.println("      Got expected exception : " + e.getMessage());
>     >                                                       else {
>     >                                                               if
>     ((sqlType == 14 || sqlType == 15 || sqlType == 16) && //we are
>     dealing with DATE/TIME/TIMESTAMP column types
>     > @@ -1669,14 +1695,14 @@
>     >                                       rs1.close();
>     >                               }
>     >                       }
>     > +                     conn.rollback();
>     >                       conn.setAutoCommit(true);
>     >
>     >                       System.out.println("Positive Test22 - Test
>     updateObject method");
>     >                       conn.setAutoCommit(false);
>     > -                     stmt =
>     conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
>     ResultSet.CONCUR_UPDATABLE);
>     > -                     stmt1 = conn.createStatement();
>     >                       String displayString;
>     >                       for (int sqlType = 1; sqlType <=
>     allSQLTypes.length; sqlType++ ) {
>     > +                             conn.rollback();
>     >                               System.out.println("Next datatype to
>     test is " + allSQLTypes[sqlType-1]);
>     >                               for (int updateXXXName =
>     1;  updateXXXName <= allUpdateXXXNames.length; updateXXXName++) {
>     >                                       for (int indexOrName = 1;
>     indexOrName <= 2; indexOrName++) {
>     > @@ -1684,9 +1710,9 @@
>     >                                                      
>     displayString = "  updateObject with column position &";
>     >                                               else
>     >                                                      
>     displayString = "  updateObject with column name &";
>     > -                                             rs =
>     stmt.executeQuery("SELECT * FROM AllDataTypesForTestingTable FOR
>     UPDATE");
>     > +                                             rs =
>     pstmt.executeQuery();
>     >                                               rs.next ();
>     > -                                             rs1 =
>     stmt1.executeQuery("SELECT * FROM AllDataTypesNewValuesData");
>     > +                                             rs1 =
>     pstmt1.executeQuery();
>     >                                               rs1.next();
>     >                                               try {
>     >                                                       if
>     (updateXXXName == 1){ //updateObject using Short object
>     > @@ -1787,15 +1813,34 @@
>     >                                                                      
>     rs.updateObject(ColumnNames[sqlType-1], new Boolean(rs1.getBoolean(1)));
>     >                                                       } else if
>     (updateXXXName == 19){ //update column with updateNull methods
>     >                                                              
>     System.out.println(displayString + " null as parameters");
>     > +                                                             try {
>     >                                                               if
>     (indexOrName == 1) //test by passing column position
>     >                                                                      
>     rs.updateObject(sqlType, null);
>     >                                                               else
>     //test by passing column name
>     >                                                                      
>     rs.updateObject(ColumnNames[sqlType-1], null);
>     > +                                                             }
>     catch (Throwable e) {
>     > +                                                             if
>     (TestUtil.isNetFramework ()) {
>     >
>     +                                                                    
>     System.out.println("   Got expected exception:" + e.getMessage());
>     >
>     +                                                                    
>     continue;
>     > +                                                             } else {
>     >
>     +                                                                    
>     System.out.println("   Got UNexpected exception:" + e.getMessage ());
>     >
>     +                                                                    
>     return;
>     > +                                                             }
>     > +                                                             }
>     >                                                       } else if
>     (updateXXXName == 20 || updateXXXName == 21) //since Derby does not
>     support Array, Ref datatype, this is a no-op
>     >                                                                      
>     continue;
>     >
>     >                                                              
>     rs.updateRow();
>     > -                                                             if
>     (updateXXXRulesTableForEmbedded[sqlType-1][updateXXXName-1].equals("ERROR"))
>     {
>     > +                                                             if
>     (TestUtil.isNetFramework() && updateXXXName == 13 &&
>     >
>     +                                                                    
>     (sqlType==7 || sqlType==8 || sqlType==9 || sqlType==13))
>     > +                                                            
>     //updateObject with clob allowed on char, varchar, longvarchar & clob
>     >
>     +                                                                    
>     System.out.print("");
>     > +                                                             else
>     if (TestUtil.isNetFramework() && updateXXXName == 17 &&
>     >
>     +                                                                    
>     (sqlType==12 || sqlType==17))
>     > +                                                            
>     //updateObject with blob allowed on longvarchar for bit & blob
>     >
>     +                                                                    
>     System.out.print ("");
>     > +                                                             else
>     if ((TestUtil.isNetFramework() &&
>     updateXXXRulesTableForNetworkServer[sqlType-1][updateXXXName-1].equals("ERROR"))
>     ||
>     >
>     +                                                                    
>     (TestUtil.isEmbeddedFramework() &&
>     updateXXXRulesTableForEmbedded[sqlType-1][updateXXXName-1].equals("ERROR")))
>     {
>     >                                                                      
>     System.out.println("FAILURE : We shouldn't reach here. The test
>     should have failed earlier on updateXXX or updateRow call");
>     >                                                                      
>     return;
>     >                                                               }
>     > @@ -1805,7 +1850,8 @@
>     >                                                                      
>     return;
>     >                                                               }
>     >                                               } catch (Throwable e) {
>     > -                                                             if
>     (updateXXXRulesTableForEmbedded[sqlType-1][updateXXXName-1].equals("ERROR"))
> 
>     > +                                                     if
>     ((TestUtil.isNetFramework() &&
>     updateXXXRulesTableForNetworkServer[sqlType-1][updateXXXName-1].equals("ERROR"))
>     ||
>     > +                                                             (
>     TestUtil.isEmbeddedFramework() &&
>     updateXXXRulesTableForEmbedded[sqlType-1][updateXXXName-1].equals("ERROR")))
>     >                                                                      
>     System.out.println ("    Got expected exception : " + e.getMessage());
>     >                                                               else {
>     >                                                                      
>     if ((sqlType == 14 || sqlType == 15 || sqlType == 16) && //we are
>     dealing with DATE/TIME/TIMESTAMP column types
>     > @@ -1821,6 +1867,7 @@
>     >                                       }
>     >                               }
>     >                       }
>     > +                     conn.rollback();
>     >                       conn.setAutoCommit(true);
>     >
>     >                       System.out.println("Positive Test23 - Test
>     cancelRowUpdates after updateXXX methods on all the supported sql
>     datatypes");
>     > @@ -1866,7 +1913,7 @@
>     >                      
>     if(rs.getBigDecimal(4).compareTo(rs1.getBigDecimal(4)) != 0)
>     >                               return;
>     >                       rs.cancelRowUpdates();
>     > -                     if( rs.getBigDecimal(4) != bd)
>     > +                     if(rs.getBigDecimal(4).compareTo(bd) != 0)
>     >                               return;
>     >
>     >                       System.out.println("  updateFloat and then
>     cancelRowUpdates");
>     > @@ -1968,7 +2015,9 @@
>     >                      
>     if(!rs.getTimestamp(16).toString().equals(timeStamp.toString()))
>     >                               return;
>     >
>     > -                     if (JVMInfo.JDK_ID != 2){ //Don't test this
>     method when running JDK1.3 because jdk1.3 does not support the method
>     > +                     //Don't test this when running JDK1.3/in
>     Network Server because they both
>     > +                     //do not support updateClob and updateBlob
>     > +                     if (JVMInfo.JDK_ID != 2 &&
>     TestUtil.isEmbeddedFramework()){
>     >                               System.out.println("  updateClob and
>     then cancelRowUpdates");
>     >                               String clb1 = rs.getString(13);
>     >                               rs.updateClob(13,rs1.getClob(13));
>     > @@ -2121,9 +2170,9 @@
>     >                       System.out.println("Positive Test30 - call
>     updateXXX methods on only columns that correspond to a column in the
>     table");
>     >                       dumpRS(stmt.executeQuery("select * from t1"));
>     >                       stmt =
>     conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
>     ResultSet.CONCUR_UPDATABLE);
>     > -                     rs = stmt.executeQuery("SELECT 1, 2, c1, c2
>     FROM t1 FOR UPDATE");
>     > +                     rs = stmt.executeQuery("SELECT c2, 1, 2, c1
>     FROM t1 FOR UPDATE");
>     >                       rs.next();
>     > -                     rs.updateInt(3,22);
>     > +                     rs.updateInt(4,22);
>     >                       rs.updateRow();
>     >                       rs.close();
>     >                       System.out.println ("  Make sure that
>     changes made it to the database correctly");
>     > @@ -2166,12 +2215,25 @@
>     >                       rs.next();
>     >                       try {
>     >                               rs.updateInt(2,22);
>     > -                             System.out.println("FAIL!!!
>     updateInt should have failed because c12 is not the FOR UPDATE
>     columns list.");
>     > +                             if (TestUtil.isEmbeddedFramework ())
>     > +                             System.out.println("PASS!!! Embedded
>     throws exception for updateRow");
>     > +                             else
>     > +                             System.out.println ("FAIL!!! Network
>     Server should throw exception for updateXXX");
>     >                       }
>     >                       catch (SQLException e) {
>     >                               System.out.println("SQL State : " +
>     e.getSQLState());
>     >                               System.out.println("Got expected
>     exception " + e.getMessage());
>     >                       }
>     > +                     try {
>     > +                             rs.updateRow();
>     > +                             System.out.println("updateRow passed");
>     > +                     }
>     > +                     catch (SQLException e) {
>     > +                             if ( TestUtil.isNetFramework())
>     > +                             System.out.println("FAIL!!!
>     updateRow w/o updateXXX is no-op in Network Server");
>     > +                             else
>     > +                             System.out.println("FAIL!!!
>     exception is " + e.getMessage());
>     > +                     }
>     >                       rs.close();
>     >                       System.out.println("  Make sure the contents
>     of table are unchanged");
>     >                       dumpRS(stmt.executeQuery("select * from t1"));
>     > @@ -2201,7 +2263,6 @@
>     >                       dumpRS(stmt.executeQuery("select * from
>     s2.t1"));
>     >
>     >                       teardown();
>     > -                     }
>     >
>     >                       conn.close();
>     >
>     > @@ -2214,11 +2275,11 @@
>     >       }
>     >
>     >       static boolean verifyData(int sqlType, int updateXXXName,
>     String checkAgainstTheTable) throws SQLException {
>     > -             Statement stmt1 = conn.createStatement();
>     > -             ResultSet rs1 = stmt1.executeQuery("select * from "
>     + checkAgainstTheTable);
>     > +             PreparedStatement pstmt1 =
>     conn.prepareStatement("select * from " + checkAgainstTheTable);
>     > +             ResultSet rs1 = pstmt1.executeQuery();
>     >               rs1.next();
>     > -             Statement stmt = conn.createStatement ();
>     > -             ResultSet rs = stmt.executeQuery("select * from
>     AllDataTypesForTestingTable");
>     > +             PreparedStatement pstmt =
>     conn.prepareStatement("select * from AllDataTypesForTestingTable");
>     > +             ResultSet rs = pstmt.executeQuery();
>     >               rs.next();
>     >
>     >               if (updateXXXName == 18){ //verifying updateBoolean
>     > @@ -2235,13 +2296,13 @@
>     >                               return(false);
>     >               }
>     >
>     > -             if (sqlType == 1) //verify update made to SMALLINT
>     column with updateXXX methods
>     > +             if (sqlType == 1) {//verify update made to SMALLINT
>     column with updateXXX methods
>     >                       if(rs.getShort(sqlType) !=
>     rs1.getShort(updateXXXName)) {
>     >                               return(false); }
>     > -             else if (sqlType == 2)  //verify update made to
>     INTEGER column with updateXXX methods
>     > +             } else if (sqlType == 2) {  //verify update made to
>     INTEGER column with updateXXX methods
>     >                       if(rs.getInt(sqlType) !=
>     rs1.getInt(updateXXXName)) {
>     >                               return(false); }
>     > -             else if (sqlType ==  3)  //verify update made to
>     BIGINT column with updateXXX methods
>     > +             } else if (sqlType ==  3)  //verify update made to
>     BIGINT column with updateXXX methods
>     >                       if(rs.getLong(sqlType) !=
>     rs1.getLong(updateXXXName)) {
>     >                               return(false); }
>     >               else if (sqlType == 4)  //verify update made to
>     DECIMAL column with updateXXX methods
>     > @@ -2265,16 +2326,22 @@
>     >               else if (sqlType == 14)  //verify update made to
>     DATE column with updateXXX methods
>     >                       if(rs.getDate(sqlType) !=
>     rs1.getDate(updateXXXName)) {
>     >                               return(false); }
>     > -             else if (sqlType == 15)  //verify update made to
>     TIME column with updateXXX methods
>     > +             else if (sqlType == 15) { //verify update made to
>     TIME column with updateXXX methods
>     >                       if(rs.getTime(sqlType) !=
>     rs1.getTime(updateXXXName)) {
>     >                               return(false); }
>     > -             else if (sqlType == 16)  //verify update made to
>     TIMESTAMP column with updateXXX methods
>     > -                     if(rs.getTimestamp(sqlType) !=
>     rs1.getTimestamp(updateXXXName)) {
>     > +             } else if (sqlType == 16) { //verify update made to
>     TIMESTAMP column with updateXXX methods
>     > +//                   if( rs.getTimestamp(sqlType) !=
>     rs1.getTimestamp(updateXXXName)) {
>     > +                    
>     if(!rs.getTimestamp(sqlType).equals(rs1.getTimestamp(updateXXXName))) {
>     >                               return(false); }
>     > -             else if (sqlType == 17 && JVMInfo.JDK_ID !=
>     2)  //verify update made to BLOB column with updateXXX methods
>     > +             } else if (sqlType == 17 && JVMInfo.JDK_ID !=
>     2)  //verify update made to BLOB column with updateXXX methods
>     >                       if(rs.getBlob(sqlType).getBytes(1,4) !=
>     rs1.getBlob(updateXXXName).getBytes(1,4)) {
>     >                               return(false); }
>     >
>     > +             rs.close();
>     > +             rs1.close();
>     > +             pstmt.close();
>     > +             pstmt1.close();
>     > +             Statement stmt = conn.createStatement();
>     >               stmt.executeUpdate("delete from
>     AllDataTypesForTestingTable");
>     >               StringBuffer insertSQL = new StringBuffer("insert
>     into AllDataTypesForTestingTable values(");
>     >               for (int type = 0; type < allSQLTypes.length - 1;
>     type++)
>     > Index:
>     java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/updatableResultSet.out
> 
>     > ===================================================================
>     > ---
>     java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/updatableResultSet.out  
>     (revision 170535)
>     > +++
>     java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/updatableResultSet.out  
>     (working copy)
>     > @@ -13,6 +13,8 @@
>     >  SQL State : null
>     >  Got expected exception This method cannot be invoked while the
>     cursor is on the insert row or if the concurrency of this ResultSet
>     object is CONCUR_READ_ONLY.
>     >  Negative Test2 - request for scroll sensitive updatable resultset
>     will give a read only scroll insensitive resultset
>     > +WARNING (no SQLState): Scroll sensitive result sets are not
>     supported by server; remapping to forward-only cursor
>     > +WARNING (no SQLState): Insensitive updatable result sets are not
>     supported by server; remapping to insensitive read-only cursor
>     >  requested TYPE_SCROLL_SENSITIVE, CONCUR_UPDATABLE but that is not
>     supported
>     >  Jira issue Derby-154 : When client connects to Network Server
>     using JCC, it incorrectly shows support for scroll sensitive
>     updatable resultsets
>     >  Make sure that we got TYPE_SCROLL_INSENSITIVE? true
>     > @@ -64,9 +66,9 @@
>     >  SQL State : XCL08
>     >  Got expected exception Cursor 'SQL_CURLH000C8' is not on a row.
>     >  Now attempt a updateRow without first doing next on the resultset.
>     > -In embedded mode, updateRow will check if it is on a row or not
>     even though no changes have been made to the row using updateXXX
>     > -In Network Server mode, if no updateXXX were issued before
>     updateRow, then updateRow is a no-op and doesn't check if it is on a
>     row or not
>     > -PASS!!! In Network Server mode, this updateRow is a no-op because
>     no updateXXX were issued before the updateRow
>     > +updateRow will check if it is on a row or not even though no
>     changes have been made to the row using updateXXX
>     > +SQL State : null
>     > +Got expected exception Invalid operation to update at current
>     cursor position
>     >  ResultSet is positioned after the last row. attempt to deleteRow
>     at this point should fail!
>     >  SQL State : null
>     >  Got expected exception Invalid operation: result set closed
>     > @@ -123,12 +125,3020 @@
>     >  JDBC 2.0 updatable resultset apis on this ResultSet object will
>     pass because this is an updatable resultset
>     >  column 1 on this row before deleteRow is 1
>     >  column 2 on this row before deleteRow is aa
>     > -Since after deleteRow(), in embedded mode, ResultSet is
>     positioned before the next row, getXXX will fail
>     > -In Network Server mode, the ResultSet stays on the deleted row
>     after deleteRow and hence no error for getXXX
>     > -column 1 on this deleted row is 0
>     > +Since after deleteRow(), in embedded mode and Network Server mode
>     using Derby Net Client, ResultSet is positioned before the next row,
>     getXXX will fail
>     > +SQL State : null
>     > +Got expected exception Invalid operation to read at current
>     cursor position.
>     >  calling deleteRow again w/o first positioning the ResultSet on
>     the next row will fail
>     >  SQL State : 24000
>     >  Got expected exception Invalid cursor state - no current row.
>     >  Position the ResultSet with next()
>     >  Should be able to deletRow() on the current row now
>     > +Positive Test1b - request updatable resultset for forward only
>     type resultset
>     > +column 1 on this row before updateInt is 1
>     > +column 1 on this row after updateInt is 234
>     > +column 2 on this row before updateString is aa
>     > +now updateRow on the row
>     > +Since after updateRow(), in embedded mode and Network Server mode
>     using Derby Net Client, ResultSet is positioned before the next row,
>     getXXX will fail
>     > +SQL State : null
>     > +Got expected exception Invalid operation to read at current
>     cursor position.
>     > +calling updateRow again w/o first positioning the ResultSet on
>     the next row will fail
>     > +SQL State : null
>     > +Got expected exception Invalid operation to update at current
>     cursor position
>     > +Position the ResultSet with next()
>     > +Should be able to updateRow() on the current row now
>     > +Positive Test2 - even if no columns from table specified in the
>     column list, we should be able to get updatable resultset
>     > +Will work in embedded mode because target table is not derived
>     from the first column in the select list
>     > +Will not work in network server mode because it derives the
>     target tabke from the first column in the select list
>     > +total number of rows in T1
>     > +      1
>     > +      -
>     > +     {3}
>     > +column 1 on this row is 1
>     > +SQL State : 42X01
>     > +Got expected exception Syntax error: Encountered "WHERE" at line
>     1, column 14.
>     > +total number of rows in T1 after one deleteRow is
>     > +      1
>     > +      -
>     > +     {3}
>     > +Positive Test3a - use prepared statement with concur updatable
>     status to test deleteRow
>     > +requested TYPE_FORWARD_ONLY, CONCUR_UPDATABLE
>     > +got TYPE_FORWARD_ONLY? true
>     > +got CONCUR_UPDATABLE? true
>     > +column 1 on this row is 1
>     > +Since after deleteRow(), ResultSet is positioned before the next
>     row, getXXX will fail
>     > +SQL State : null
>     > +Got expected exception Invalid operation to read at current
>     cursor position.
>     > +calling deleteRow again w/o first positioning the ResultSet on
>     the next row will fail
>     > +SQL State : 24000
>     > +Got expected exception Invalid cursor state - no current row.
>     > +Position the ResultSet with next()
>     > +Should be able to deletRow() on the current row now
>     > +Positive Test3b - use prepared statement with concur updatable
>     status to test updateXXX
>     > +requested TYPE_FORWARD_ONLY, CONCUR_UPDATABLE
>     > +got TYPE_FORWARD_ONLY? true
>     > +got CONCUR_UPDATABLE? true
>     > +column 1 on this row is 1
>     > +column 1 on this row after updateInt is 5
>     > +Since after updateRow(), ResultSet is positioned before the next
>     row, getXXX will fail
>     > +SQL State : null
>     > +Got expected exception Invalid operation to read at current
>     cursor position.
>     > +calling updateRow/updateXXX again w/o first positioning the
>     ResultSet on the next row will fail
>     > +SQL State : null
>     > +Got expected exception Invalid operation to update at current
>     cursor position
>     > +SQL State : null
>     > +Got expected exception Invalid operation to update at current
>     cursor position
>     > +SQL State : null
>     > +Got expected exception Invalid operation at current cursor position.
>     > +Position the ResultSet with next()
>     > +Should be able to cancelRowUpdates() on the current row now
>     > +Positive Test4 - use callable statement with concur updatable status
>     > +requested TYPE_FORWARD_ONLY, CONCUR_UPDATABLE
>     > +got TYPE_FORWARD_ONLY? true
>     > +got CONCUR_UPDATABLE? true
>     > +column 1 on this row is 1
>     > +Since after deleteRow(), ResultSet is positioned before the next
>     row, getXXX will fail
>     > +SQL State : null
>     > +Got expected exception Invalid operation to read at current
>     cursor position.
>     > +calling deleteRow again w/o first positioning the ResultSet on
>     the next row will fail
>     > +SQL State : 24000
>     > +Got expected exception Invalid cursor state - no current row.
>     > +Position the ResultSet with next()
>     > +Should be able to deletRow() on the current row now
>     > +Positive Test5 - donot have to select primary key to get an
>     updatable resultset
>     > +column 1 on this row is 1
>     > +now try to delete row when primary key is not selected for that row
>     > +Positive Test6a - For Forward Only resultsets, DatabaseMetaData
>     will return false for ownDeletesAreVisible and deletesAreDetected
>     > +This is because, after deleteRow, we position the ResultSet
>     before the next row. We don't make a hole for the deleted row and
>     then stay on that deleted hole
>     > +ownDeletesAreVisible(ResultSet.TYPE_FORWARD_ONLY )? false
>     > +othersDeletesAreVisible(ResultSet.TYPE_FORWARD_ONLY)? true
>     > +deletesAreDetected(ResultSet.TYPE_FORWARD_ONLY)? false
>     > +The JDBC program should look at rowDeleted only if
>     deletesAreDetected returns true
>     > +Since Derby returns false for detlesAreDetected for FORWARD_ONLY
>     updatable resultset,the program should not rely on rs.rowDeleted()
>     for FORWARD_ONLY updatable resultsets
>     > +Have this call to rs.rowDeleted() just to make sure the method
>     does always return false? false
>     > +Have this call to rs.rowDeleted() just to make sure the method
>     does always return false? false
>     > +Positive Test6b - For Forward Only resultsets, DatabaseMetaData
>     will return false for ownUpdatesAreVisible and updatesAreDetected
>     > +This is because, after updateRow, we position the ResultSet
>     before the next row
>     > +ownUpdatesAreVisible(ResultSet.TYPE_FORWARD_ONLY)? false
>     > +othersUpdatesAreVisible(ResultSet.TYPE_FORWARD_ONLY)? true
>     > +updatesAreDetected(ResultSet.TYPE_FORWARD_ONLY)? false
>     > +The JDBC program should look at rowUpdated only if
>     updatesAreDetected returns true
>     > +Since Derby returns false for updatesAreDetected for FORWARD_ONLY
>     updatable resultset,the program should not rely on rs.rowUpdated()
>     for FORWARD_ONLY updatable resultsets
>     > +Have this call to rs.rowUpdated() just to make sure the method
>     does always return false? false
>     > +Have this call to rs.rowUpdated() just to make sure the method
>     does always return false? false
>     > +Positive Test7a - delete using updatable resultset api from a
>     temporary table
>     > +following rows in temp table before deleteRow
>     > +      C21,C22
>     > +      --- ---
>     > +     {21,1}
>     > +     {22,1}
>     > +As expected, no rows in temp table after deleteRow
>     > +      C21,C22
>     > +      --- ---
>     > +Positive Test7b - update using updatable resultset api from a
>     temporary table
>     > +following rows in temp table before deleteRow
>     > +      C31,C32
>     > +      --- ---
>     > +     {21,1}
>     > +     {22,1}
>     > +As expected, updated rows in temp table after updateRow
>     > +      C31,C32
>     > +      --- ---
>     > +     {123,1}
>     > +     {123,1}
>     > +Positive Test8a - change the name of the statement when the
>     resultset is open and see if deleteRow still works
>     > +This test works in embedded mode since Derby can handle the
>     change in the name of the statement with an open resultset
>     > +But it fails under Network Server mode because JCC and Derby Net
>     Client do not allow statement name change when there an open
>     resultset against it
>     > +change the cursor name(case sensitive name) with setCursorName
>     and then try to deleteRow
>     > +change the cursor name one more time with setCursorName and then
>     try to deleteRow
>     > +SQL State : null
>     > +Got expected exception Invalid operation: setCursorName() called
>     when there are open ResultSet's on the Statement.
>     > +Positive Test8b - change the name of the statement when the
>     resultset is open and see if updateRow still works
>     > +This test works in embedded mode since Derby can handle the
>     change in the name of the statement with an open resultset
>     > +But it fails under Network Server mode because JCC and Derby Net
>     Client do not allow statement name change when there an open
>     resultset against it
>     > +change the cursor name one more time with setCursorName and then
>     try to updateRow
>     > +change the cursor name(case sensitive name) with setCursorName
>     and then try to updateRow
>     > +SQL State : null
>     > +Got expected exception Invalid operation: setCursorName() called
>     when there are open ResultSet's on the Statement.
>     > +Positive Test9a - using correlation name for the table in the
>     select sql works in embedded mode and Network Server using Derby Net
>     Client driver
>     > +Correlation name for table does not work in Network Server mode
>     (using JCC) because the drivers construct the delete sql with the
>     correlation name rather than the base table name
>     > +column 1 on this row is 1
>     > +now try to deleteRow
>     > +PASS!!! passed in embedded mode
>     > +Positive Test9b - using correlation name for updatable columns is
>     not allowed.
>     > +Table t1 has following rows
>     > +      C1,C2
>     > +      -- --
>     > +     {1,aa                  }
>     > +     {2,bb                  }
>     > +     {3,cc                  }
>     > +attempt to get an updatable resultset using correlation name for
>     an updatable column
>     > +The sql is SELECT c1 as col1, c2 as col2 FROM t1 abcde FOR UPDATE
>     of c1
>     > +SQL State : 42X42
>     > +Got expected exception Correlation name not allowed for column
>     'C1' because it is part of the FOR UPDATE list.
>     > +attempt to get an updatable resultset using correlation name for
>     an readonly column. It should work
>     > +The sql is SELECT c1, c2 as col2 FROM t1 abcde FOR UPDATE of c1
>     > +Table t1 after updateRow has following rows
>     > +      C1,C2
>     > +      -- --
>     > +     {11,aa                  }
>     > +     {2,bb                  }
>     > +     {3,cc                  }
>     > +Positive Test9c - try to updateXXX on a readonly column. Should
>     get error
>     > +SQL State : null
>     > +Got expected exception Column not updatable
>     > +attempt to get an updatable resultset using correlation name for
>     an readonly column. It should work
>     > +The sql is SELECT c1, c2 as col2 FROM t1 abcde FOR UPDATE of c1
>     > +Table t1 after updateRow has following rows
>     > +      C1,C2
>     > +      -- --
>     > +     {11,aa                  }
>     > +     {2,bb                  }
>     > +     {3,cc                  }
>     > +Positive Test9d - try to updateXXX on a readonly column with
>     correlation name. Should get error
>     > +SQL State : null
>     > +Got expected exception Column not updatable
>     > +Table t1 has following rows
>     > +      C1,C2
>     > +      -- --
>     > +     {1,aa                  }
>     > +     {2,bb                  }
>     > +     {3,cc                  }
>     > +Positive Test10 - 2 updatable resultsets going against the same
>     table, will they conflict?
>     > +delete using first resultset
>     > +attempt to send deleteRow on the same row through a different
>     resultset should throw an exception
>     > +SQL State : XCL08
>     > +Got expected exception Cursor 'SQL_CURLH000C51' is not on a row.
>     > +Move to next row in the 2nd resultset and then delete using the
>     second resultset
>     > +Positive Test11 - setting the fetch size to > 1 will be ignored
>     by updatable resultset. Same as updatable cursors
>     > +Notice the Fetch Size in run time statistics output.
>     > +1
> 
>     > +-----
>     > +Statement Name:
>     > +     SQL_CURLH000C54
>     > +Statement Text:
>     > +     SELECT * FROM t1 FOR UPDATE of c1
>     > +Parse Time: 0
>     > +Bind Time: 0
>     > +Optimize Time: 0
>     > +Generate Time: 0
>     > +Compile Time: 0
>     > +Execute Time: 0
>     > +Begin Compilation Timestamp : null
>     > +End Compilation Timestamp : null
>     > +Begin Execution Timestamp : null
>     > +End Execution Timestamp : null
>     > +Statement Execution Plan Text:
>     > +Table Scan ResultSet for T1 at read committed isolation level
>     using exclusive row locking chosen by the optimizer
>     > +Number of opens = 1
>     > +Rows seen = 0
>     > +Rows filtered = 0
>     > +Fetch Size = 1
>     > +     constructor time (milliseconds) = 0
>     > +     open time (milliseconds) = 0
>     > +     next time (milliseconds) = 0
>     > +     close time (milliseconds) = 0
>     > +scan information:
>     > +     Bit set of columns fetched=All
>     > +     Number of columns fetched=2
>     > +     Number of pages visited=0
>     > +     Number of rows qualified=0
>     > +     Number of rows visited=0
>     > +     Scan type=heap
>     > +     start position:
>     > +null stop position:
>     > +null qualifiers:
>     > +None
>     > +statement's fetch size is 200
>     > +Positive Test12a - make sure delete trigger gets fired when
>     deleteRow is issued
>     > +Verify that before delete trigger got fired, row count is 0 in
>     deleteTriggerInsertIntoThisTable
>     > +      1
>     > +      -
>     > +     {0}
>     > +column 1 on this row is 1
>     > +now try to delete row and make sure that trigger got fired
>     > +Verify that delete trigger got fired by verifying the row count
>     to be 1 in deleteTriggerInsertIntoThisTable
>     > +      1
>     > +      -
>     > +     {1}
>     > +Positive Test12b - make sure update trigger gets fired when
>     updateRow is issued
>     > +Verify that before update trigger got fired, row count is 0 in
>     updateTriggerInsertIntoThisTable
>     > +      1
>     > +      -
>     > +     {0}
>     > +column 1 on this row is 1
>     > +now try to update row and make sure that trigger got fired
>     > +Verify that update trigger got fired by verifying the row count
>     to be 1 in updateTriggerInsertIntoThisTable
>     > +      1
>     > +      -
>     > +     {1}
>     > +Positive Test13a - Another test case for delete trigger
>     > +column 1 on this row is 1
>     > +this delete row will fire the delete trigger which will delete
>     all the rows from the table and from the resultset
>     > +SQL State : null
>     > +Got expected exception Invalid operation: result set closed
>     > +Verify that delete trigger got fired by verifying the row count
>     to be 0 in table1WithTriggers
>     > +      1
>     > +      -
>     > +     {0}
>     > +Positive Test13b - Another test case for update trigger
>     > +Look at the current contents of table2WithTriggers
>     > +      C1,C2
>     > +      -- --
>     > +     {1,1}
>     > +     {2,2}
>     > +     {3,3}
>     > +     {4,4}
>     > +column 1 on this row is 2
>     > +this update row will fire the update trigger which will update
>     all the rows in the table to have c1=1 and hence no more rows will
>     qualify for the resultset
>     > +SQL State : null
>     > +Got expected exception Invalid operation: result set closed
>     > +Verify that update trigger got fired by verifying that all column
>     c1s have value 1 in table2WithTriggers
>     > +      C1,C2
>     > +      -- --
>     > +     {1,1}
>     > +     {1,2}
>     > +     {1,3}
>     > +     {1,4}
>     > +Positive Test14a - make sure self referential delete cascade
>     works when deleteRow is issued
>     > +      C1,C2
>     > +      -- --
>     > +     {e1,null}
>     > +     {e2,e1}
>     > +     {e3,e2}
>     > +     {e4,e3}
>     > +column 1 on this row is e1
>     > +this delete row will cause the delete cascade constraint to
>     delete all the rows from the table and from the resultset
>     > +SQL State : null
>     > +Got expected exception Invalid operation: result set closed
>     > +Verify that delete trigger got fired by verifying the row count
>     to be 0 in selfReferencingT1
>     > +      1
>     > +      -
>     > +     {0}
>     > +Positive Test14b - make sure self referential update restrict
>     works when updateRow is issued
>     > +      C1,C2
>     > +      -- --
>     > +     {e1,null}
>     > +     {e2,e1}
>     > +     {e3,e2}
>     > +     {e4,e3}
>     > +column 1 on this row is e1
>     > +update row should fail because cascade constraint is update restrict
>     > +SQL State : 23503
>     > +Got expected exception UPDATE on table 'SELFREFERENCINGT2' caused
>     a violation of foreign key constraint 'MANAGES2' for key (e1).  The
>     statement has been rolled back.
>     > +Positive Test15 - With autocommit off, attempt to drop a table
>     when there is an open updatable resultset on it
>     > +Opened an updatable resultset. Now trying to drop that table
>     through another Statement
>     > +SQL State : X0X95
>     > +Got expected exception Operation 'DROP TABLE' cannot be performed
>     on object 'T1' because there is an open ResultSet dependent on that
>     object.
>     > +Since autocommit is off, the drop table exception will NOT result
>     in a runtime rollback and hence updatable resultset object is still
>     open
>     > +Positive Test16a - Do deleteRow within a transaction and then
>     rollback the transaction
>     > +Verify that before delete trigger got fired, row count is 0 in
>     deleteTriggerInsertIntoThisTable
>     > +      1
>     > +      -
>     > +     {0}
>     > +Verify that before deleteRow, row count is 4 in table0WithTriggers
>     > +      1
>     > +      -
>     > +     {4}
>     > +column 1 on this row is 1
>     > +now try to delete row and make sure that trigger got fired
>     > +Verify that delete trigger got fired by verifying the row count
>     to be 1 in deleteTriggerInsertIntoThisTable
>     > +      1
>     > +      -
>     > +     {1}
>     > +Verify that deleteRow in transaction, row count is 3 in
>     table0WithTriggers
>     > +      1
>     > +      -
>     > +     {3}
>     > +Verify that after rollback, row count is back to 0 in
>     deleteTriggerInsertIntoThisTable
>     > +      1
>     > +      -
>     > +     {0}
>     > +Verify that after rollback, row count is back to 4 in
>     table0WithTriggers
>     > +      1
>     > +      -
>     > +     {4}
>     > +Positive Test16b - Do updateRow within a transaction and then
>     rollback the transaction
>     > +Verify that before update trigger got fired, row count is 0 in
>     updateTriggerInsertIntoThisTable
>     > +      1
>     > +      -
>     > +     {0}
>     > +Look at the data in table0WithTriggers before trigger gets fired
>     > +      C1,C2
>     > +      -- --
>     > +     {1,1}
>     > +     {2,2}
>     > +     {3,3}
>     > +     {4,4}
>     > +column 1 on this row is 1
>     > +now try to update row and make sure that trigger got fired
>     > +Verify that update trigger got fired by verifying the row count
>     to be 1 in updateTriggerInsertIntoThisTable
>     > +      1
>     > +      -
>     > +     {1}
>     > +Verify that new data in table0WithTriggers
>     > +      C1,C2
>     > +      -- --
>     > +     {123,1}
>     > +     {2,2}
>     > +     {3,3}
>     > +     {4,4}
>     > +Verify that after rollback, row count is back to 0 in
>     updateTriggerInsertIntoThisTable
>     > +      1
>     > +      -
>     > +     {0}
>     > +Verify that after rollback, table0WithTriggers is back to its
>     original contents
>     > +      C1,C2
>     > +      -- --
>     > +     {1,1}
>     > +     {2,2}
>     > +     {3,3}
>     > +     {4,4}
>     > +Positive Test17 - After deleteRow, resultset is positioned before
>     the next row
>     > +getXXX right after deleteRow will fail because resultset is not
>     positioned on a row, instead it is right before the next row
>     > +SQL State : null
>     > +Got expected exception Invalid operation to read at current
>     cursor position.
>     > +Positive Test18 - Test cancelRowUpdates method as the first
>     updatable ResultSet api on a read-only resultset
>     > +SQL State : null
>     > +Got expected exception This method cannot be invoked while the
>     cursor is on the insert row or if this ResultSet object has a
>     concurrency of CONCUR_READ_ONLY.
>     > +Positive Test19 - Test updateRow method as the first updatable
>     ResultSet api on a read-only resultset
>     > +  Got expected exception : This method cannot be invoked while
>     the cursor is on the insert row or if the concurrency of this
>     ResultSet object is CONCUR_READ_ONLY.
>     > +Positive Test20 - Test updateXXX methods as the first updatable
>     ResultSet api on a read-only resultset
>     > +  Test updateShort on a readonly resultset
>     > +  Using column position as first parameter to updateShort
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Using column name as first parameter to updateShort
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Test updateInt on a readonly resultset
>     > +  Using column position as first parameter to updateInt
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Using column name as first parameter to updateInt
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Test updateLong on a readonly resultset
>     > +  Using column position as first parameter to updateLong
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Using column name as first parameter to updateLong
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Test updateBigDecimal on a readonly resultset
>     > +  Using column position as first parameter to updateBigDecimal
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Using column name as first parameter to updateBigDecimal
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Test updateFloat on a readonly resultset
>     > +  Using column position as first parameter to updateFloat
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Using column name as first parameter to updateFloat
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Test updateDouble on a readonly resultset
>     > +  Using column position as first parameter to updateDouble
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Using column name as first parameter to updateDouble
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Test updateString on a readonly resultset
>     > +  Using column position as first parameter to updateString
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Using column name as first parameter to updateString
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Test updateAsciiStream on a readonly resultset
>     > +  Using column position as first parameter to updateAsciiStream
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Using column name as first parameter to updateAsciiStream
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Test updateCharacterStream on a readonly resultset
>     > +  Using column position as first parameter to updateCharacterStream
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Using column name as first parameter to updateCharacterStream
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Test updateByte on a readonly resultset
>     > +  Using column position as first parameter to updateByte
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Using column name as first parameter to updateByte
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Test updateBytes on a readonly resultset
>     > +  Using column position as first parameter to updateBytes
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Using column name as first parameter to updateBytes
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Test updateBinaryStream on a readonly resultset
>     > +  Using column position as first parameter to updateBinaryStream
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Using column name as first parameter to updateBinaryStream
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Test updateClob on a readonly resultset
>     > +  Using column position as first parameter to updateClob
>     > +  Got expected exception : JDBC 3 method called - not yet supported
>     > +  Using column name as first parameter to updateClob
>     > +  Got expected exception : JDBC 3 method called - not yet supported
>     > +  Test updateDate on a readonly resultset
>     > +  Using column position as first parameter to updateDate
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Using column name as first parameter to updateDate
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Test updateTime on a readonly resultset
>     > +  Using column position as first parameter to updateTime
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Using column name as first parameter to updateTime
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Test updateTimestamp on a readonly resultset
>     > +  Using column position as first parameter to updateTimestamp
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Using column name as first parameter to updateTimestamp
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Test updateBlob on a readonly resultset
>     > +  Using column position as first parameter to updateBlob
>     > +  Got expected exception : JDBC 3 method called - not yet supported
>     > +  Using column name as first parameter to updateBlob
>     > +  Got expected exception : JDBC 3 method called - not yet supported
>     > +  Test updateBoolean on a readonly resultset
>     > +  Using column position as first parameter to updateBoolean
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Using column name as first parameter to updateBoolean
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Test updateNull on a readonly resultset
>     > +  Using column position as first parameter to updateNull
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Using column name as first parameter to updateNull
>     > +  Got expected exception : ResultSet is not updatable.
>     > +  Test updateArray on a readonly resultset
>     > +  Using column position as first parameter to updateArray
>     > +  Got expected exception : JDBC 3 method called - not yet supported
>     > +  Using column name as first parameter to updateArray
>     > +  Got expected exception : JDBC 3 method called - not yet supported
>     > +  Test updateRef on a readonly resultset
>     > +  Using column position as first parameter to updateRef
>     > +  Got expected exception : JDBC 3 method called - not yet supported
>     > +  Using column name as first parameter to updateRef
>     > +  Got expected exception : JDBC 3 method called - not yet supported
>     > +Positive Test21 - Test all updateXXX(excluding updateObject)
>     methods on all the supported sql datatypes
>     > +Next datatype to test is SMALLINT
>     > +  Testing updateShort on SQL type SMALLINT
>     > +    Using column position as first parameter to updateShort
>     > +    Using column name as first parameter to updateShort
>     > +  Testing updateInt on SQL type SMALLINT
>     > +    Using column position as first parameter to updateInt
>     > +    Using column name as first parameter to updateInt
>     > +  Testing updateLong on SQL type SMALLINT
>     > +    Using column position as first parameter to updateLong
>     > +    Using column name as first parameter to updateLong
>     > +  Testing updateBigDecimal on SQL type SMALLINT
>     > +    Using column position as first parameter to updateBigDecimal
>     > +    Using column name as first parameter to updateBigDecimal
>     > +  Testing updateFloat on SQL type SMALLINT
>     > +    Using column position as first parameter to updateFloat
>     > +    Using column name as first parameter to updateFloat
>     > +  Testing updateDouble on SQL type SMALLINT
>     > +    Using column position as first parameter to updateDouble
>     > +    Using column name as first parameter to updateDouble
>     > +  Testing updateString on SQL type SMALLINT
>     > +    Using column position as first parameter to updateString
>     > +      Got expected exception : Invalid data conversion: Parameter
>     instance
>     1992                                                         is
>     invalid for requested conversion.
>     > +    Using column name as first parameter to updateString
>     > +      Got expected exception : Invalid data conversion: Parameter
>     instance
>     1992                                                         is
>     invalid for requested conversion.
>     > +  Testing updateAsciiStream on SQL type SMALLINT
>     > +    Using column position as first parameter to updateAsciiStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateAsciiStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateCharacterStream on SQL type SMALLINT
>     > +    Using column position as first parameter to updateCharacterStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateCharacterStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateByte on SQL type SMALLINT
>     > +    Using column position as first parameter to updateByte
>     > +    Using column name as first parameter to updateByte
>     > +  Testing updateBytes on SQL type SMALLINT
>     > +    Using column position as first parameter to updateBytes
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateBytes
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateBinaryStream on SQL type SMALLINT
>     > +    Using column position as first parameter to updateBinaryStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateBinaryStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateClob on SQL type SMALLINT
>     > +    Using column position as first parameter to updateClob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateClob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateDate on SQL type SMALLINT
>     > +    Using column position as first parameter to updateDate
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateDate
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateTime on SQL type SMALLINT
>     > +    Using column position as first parameter to updateTime
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateTime
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateTimestamp on SQL type SMALLINT
>     > +    Using column position as first parameter to updateTimestamp
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateTimestamp
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateBlob on SQL type SMALLINT
>     > +    Using column position as first parameter to updateBlob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateBlob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateBoolean on SQL type SMALLINT
>     > +    Using column position as first parameter to updateBoolean
>     > +    Using column name as first parameter to updateBoolean
>     > +  Testing updateNull on SQL type SMALLINT
>     > +    Using column position as first parameter to updateNull
>     > +    Using column name as first parameter to updateNull
>     > +  Testing updateArray on SQL type SMALLINT
>     > +    Using column position as first parameter to updateArray
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateArray
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateRef on SQL type SMALLINT
>     > +    Using column position as first parameter to updateRef
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateRef
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +Next datatype to test is INTEGER
>     > +  Testing updateShort on SQL type INTEGER
>     > +    Using column position as first parameter to updateShort
>     > +    Using column name as first parameter to updateShort
>     > +  Testing updateInt on SQL type INTEGER
>     > +    Using column position as first parameter to updateInt
>     > +    Using column name as first parameter to updateInt
>     > +  Testing updateLong on SQL type INTEGER
>     > +    Using column position as first parameter to updateLong
>     > +    Using column name as first parameter to updateLong
>     > +  Testing updateBigDecimal on SQL type INTEGER
>     > +    Using column position as first parameter to updateBigDecimal
>     > +    Using column name as first parameter to updateBigDecimal
>     > +  Testing updateFloat on SQL type INTEGER
>     > +    Using column position as first parameter to updateFloat
>     > +    Using column name as first parameter to updateFloat
>     > +  Testing updateDouble on SQL type INTEGER
>     > +    Using column position as first parameter to updateDouble
>     > +    Using column name as first parameter to updateDouble
>     > +  Testing updateString on SQL type INTEGER
>     > +    Using column position as first parameter to updateString
>     > +      Got expected exception : Invalid data conversion: Parameter
>     instance
>     1992                                                         is
>     invalid for requested conversion.
>     > +    Using column name as first parameter to updateString
>     > +      Got expected exception : Invalid data conversion: Parameter
>     instance
>     1992                                                         is
>     invalid for requested conversion.
>     > +  Testing updateAsciiStream on SQL type INTEGER
>     > +    Using column position as first parameter to updateAsciiStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateAsciiStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateCharacterStream on SQL type INTEGER
>     > +    Using column position as first parameter to updateCharacterStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateCharacterStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateByte on SQL type INTEGER
>     > +    Using column position as first parameter to updateByte
>     > +    Using column name as first parameter to updateByte
>     > +  Testing updateBytes on SQL type INTEGER
>     > +    Using column position as first parameter to updateBytes
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateBytes
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateBinaryStream on SQL type INTEGER
>     > +    Using column position as first parameter to updateBinaryStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateBinaryStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateClob on SQL type INTEGER
>     > +    Using column position as first parameter to updateClob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateClob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateDate on SQL type INTEGER
>     > +    Using column position as first parameter to updateDate
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateDate
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateTime on SQL type INTEGER
>     > +    Using column position as first parameter to updateTime
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateTime
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateTimestamp on SQL type INTEGER
>     > +    Using column position as first parameter to updateTimestamp
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateTimestamp
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateBlob on SQL type INTEGER
>     > +    Using column position as first parameter to updateBlob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateBlob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateBoolean on SQL type INTEGER
>     > +    Using column position as first parameter to updateBoolean
>     > +    Using column name as first parameter to updateBoolean
>     > +  Testing updateNull on SQL type INTEGER
>     > +    Using column position as first parameter to updateNull
>     > +    Using column name as first parameter to updateNull
>     > +  Testing updateArray on SQL type INTEGER
>     > +    Using column position as first parameter to updateArray
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateArray
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateRef on SQL type INTEGER
>     > +    Using column position as first parameter to updateRef
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateRef
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +Next datatype to test is BIGINT
>     > +  Testing updateShort on SQL type BIGINT
>     > +    Using column position as first parameter to updateShort
>     > +    Using column name as first parameter to updateShort
>     > +  Testing updateInt on SQL type BIGINT
>     > +    Using column position as first parameter to updateInt
>     > +    Using column name as first parameter to updateInt
>     > +  Testing updateLong on SQL type BIGINT
>     > +    Using column position as first parameter to updateLong
>     > +    Using column name as first parameter to updateLong
>     > +  Testing updateBigDecimal on SQL type BIGINT
>     > +    Using column position as first parameter to updateBigDecimal
>     > +    Using column name as first parameter to updateBigDecimal
>     > +  Testing updateFloat on SQL type BIGINT
>     > +    Using column position as first parameter to updateFloat
>     > +    Using column name as first parameter to updateFloat
>     > +  Testing updateDouble on SQL type BIGINT
>     > +    Using column position as first parameter to updateDouble
>     > +    Using column name as first parameter to updateDouble
>     > +  Testing updateString on SQL type BIGINT
>     > +    Using column position as first parameter to updateString
>     > +      Got expected exception : Invalid data conversion: Parameter
>     instance
>     1992                                                         is
>     invalid for requested conversion.
>     > +    Using column name as first parameter to updateString
>     > +      Got expected exception : Invalid data conversion: Parameter
>     instance
>     1992                                                         is
>     invalid for requested conversion.
>     > +  Testing updateAsciiStream on SQL type BIGINT
>     > +    Using column position as first parameter to updateAsciiStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateAsciiStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateCharacterStream on SQL type BIGINT
>     > +    Using column position as first parameter to updateCharacterStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateCharacterStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateByte on SQL type BIGINT
>     > +    Using column position as first parameter to updateByte
>     > +    Using column name as first parameter to updateByte
>     > +  Testing updateBytes on SQL type BIGINT
>     > +    Using column position as first parameter to updateBytes
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateBytes
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateBinaryStream on SQL type BIGINT
>     > +    Using column position as first parameter to updateBinaryStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateBinaryStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateClob on SQL type BIGINT
>     > +    Using column position as first parameter to updateClob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateClob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateDate on SQL type BIGINT
>     > +    Using column position as first parameter to updateDate
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateDate
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateTime on SQL type BIGINT
>     > +    Using column position as first parameter to updateTime
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateTime
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateTimestamp on SQL type BIGINT
>     > +    Using column position as first parameter to updateTimestamp
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateTimestamp
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateBlob on SQL type BIGINT
>     > +    Using column position as first parameter to updateBlob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateBlob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateBoolean on SQL type BIGINT
>     > +    Using column position as first parameter to updateBoolean
>     > +    Using column name as first parameter to updateBoolean
>     > +  Testing updateNull on SQL type BIGINT
>     > +    Using column position as first parameter to updateNull
>     > +    Using column name as first parameter to updateNull
>     > +  Testing updateArray on SQL type BIGINT
>     > +    Using column position as first parameter to updateArray
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateArray
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateRef on SQL type BIGINT
>     > +    Using column position as first parameter to updateRef
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateRef
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +Next datatype to test is DECIMAL(10,5)
>     > +  Testing updateShort on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateShort
>     > +    Using column name as first parameter to updateShort
>     > +  Testing updateInt on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateInt
>     > +    Using column name as first parameter to updateInt
>     > +  Testing updateLong on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateLong
>     > +    Using column name as first parameter to updateLong
>     > +  Testing updateBigDecimal on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateBigDecimal
>     > +    Using column name as first parameter to updateBigDecimal
>     > +  Testing updateFloat on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateFloat
>     > +    Using column name as first parameter to updateFloat
>     > +  Testing updateDouble on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateDouble
>     > +    Using column name as first parameter to updateDouble
>     > +  Testing updateString on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateString
>     > +      Got expected exception : Invalid data conversion: Parameter
>     instance
>     1992                                                         is
>     invalid for requested conversion.
>     > +    Using column name as first parameter to updateString
>     > +      Got expected exception : Invalid data conversion: Parameter
>     instance
>     1992                                                         is
>     invalid for requested conversion.
>     > +  Testing updateAsciiStream on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateAsciiStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateAsciiStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateCharacterStream on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateCharacterStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateCharacterStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateByte on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateByte
>     > +    Using column name as first parameter to updateByte
>     > +  Testing updateBytes on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateBytes
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateBytes
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateBinaryStream on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateBinaryStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateBinaryStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateClob on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateClob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateClob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateDate on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateDate
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateDate
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateTime on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateTime
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateTime
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateTimestamp on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateTimestamp
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateTimestamp
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateBlob on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateBlob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateBlob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateBoolean on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateBoolean
>     > +    Using column name as first parameter to updateBoolean
>     > +  Testing updateNull on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateNull
>     > +    Using column name as first parameter to updateNull
>     > +  Testing updateArray on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateArray
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateArray
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateRef on SQL type DECIMAL(10,5)
>     > +    Using column position as first parameter to updateRef
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateRef
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +Next datatype to test is REAL
>     > +  Testing updateShort on SQL type REAL
>     > +    Using column position as first parameter to updateShort
>     > +    Using column name as first parameter to updateShort
>     > +  Testing updateInt on SQL type REAL
>     > +    Using column position as first parameter to updateInt
>     > +    Using column name as first parameter to updateInt
>     > +  Testing updateLong on SQL type REAL
>     > +    Using column position as first parameter to updateLong
>     > +    Using column name as first parameter to updateLong
>     > +  Testing updateBigDecimal on SQL type REAL
>     > +    Using column position as first parameter to updateBigDecimal
>     > +    Using column name as first parameter to updateBigDecimal
>     > +  Testing updateFloat on SQL type REAL
>     > +    Using column position as first parameter to updateFloat
>     > +    Using column name as first parameter to updateFloat
>     > +  Testing updateDouble on SQL type REAL
>     > +    Using column position as first parameter to updateDouble
>     > +    Using column name as first parameter to updateDouble
>     > +  Testing updateString on SQL type REAL
>     > +    Using column position as first parameter to updateString
>     > +    Using column name as first parameter to updateString
>     > +  Testing updateAsciiStream on SQL type REAL
>     > +    Using column position as first parameter to updateAsciiStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateAsciiStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateCharacterStream on SQL type REAL
>     > +    Using column position as first parameter to updateCharacterStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateCharacterStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateByte on SQL type REAL
>     > +    Using column position as first parameter to updateByte
>     > +    Using column name as first parameter to updateByte
>     > +  Testing updateBytes on SQL type REAL
>     > +    Using column position as first parameter to updateBytes
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateBytes
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateBinaryStream on SQL type REAL
>     > +    Using column position as first parameter to updateBinaryStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateBinaryStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateClob on SQL type REAL
>     > +    Using column position as first parameter to updateClob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateClob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateDate on SQL type REAL
>     > +    Using column position as first parameter to updateDate
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateDate
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateTime on SQL type REAL
>     > +    Using column position as first parameter to updateTime
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateTime
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateTimestamp on SQL type REAL
>     > +    Using column position as first parameter to updateTimestamp
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateTimestamp
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateBlob on SQL type REAL
>     > +    Using column position as first parameter to updateBlob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateBlob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateBoolean on SQL type REAL
>     > +    Using column position as first parameter to updateBoolean
>     > +    Using column name as first parameter to updateBoolean
>     > +  Testing updateNull on SQL type REAL
>     > +    Using column position as first parameter to updateNull
>     > +    Using column name as first parameter to updateNull
>     > +  Testing updateArray on SQL type REAL
>     > +    Using column position as first parameter to updateArray
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateArray
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateRef on SQL type REAL
>     > +    Using column position as first parameter to updateRef
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateRef
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +Next datatype to test is DOUBLE
>     > +  Testing updateShort on SQL type DOUBLE
>     > +    Using column position as first parameter to updateShort
>     > +    Using column name as first parameter to updateShort
>     > +  Testing updateInt on SQL type DOUBLE
>     > +    Using column position as first parameter to updateInt
>     > +    Using column name as first parameter to updateInt
>     > +  Testing updateLong on SQL type DOUBLE
>     > +    Using column position as first parameter to updateLong
>     > +    Using column name as first parameter to updateLong
>     > +  Testing updateBigDecimal on SQL type DOUBLE
>     > +    Using column position as first parameter to updateBigDecimal
>     > +    Using column name as first parameter to updateBigDecimal
>     > +  Testing updateFloat on SQL type DOUBLE
>     > +    Using column position as first parameter to updateFloat
>     > +    Using column name as first parameter to updateFloat
>     > +  Testing updateDouble on SQL type DOUBLE
>     > +    Using column position as first parameter to updateDouble
>     > +    Using column name as first parameter to updateDouble
>     > +  Testing updateString on SQL type DOUBLE
>     > +    Using column position as first parameter to updateString
>     > +    Using column name as first parameter to updateString
>     > +  Testing updateAsciiStream on SQL type DOUBLE
>     > +    Using column position as first parameter to updateAsciiStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateAsciiStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateCharacterStream on SQL type DOUBLE
>     > +    Using column position as first parameter to updateCharacterStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateCharacterStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateByte on SQL type DOUBLE
>     > +    Using column position as first parameter to updateByte
>     > +    Using column name as first parameter to updateByte
>     > +  Testing updateBytes on SQL type DOUBLE
>     > +    Using column position as first parameter to updateBytes
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateBytes
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateBinaryStream on SQL type DOUBLE
>     > +    Using column position as first parameter to updateBinaryStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateBinaryStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateClob on SQL type DOUBLE
>     > +    Using column position as first parameter to updateClob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateClob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateDate on SQL type DOUBLE
>     > +    Using column position as first parameter to updateDate
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateDate
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateTime on SQL type DOUBLE
>     > +    Using column position as first parameter to updateTime
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateTime
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateTimestamp on SQL type DOUBLE
>     > +    Using column position as first parameter to updateTimestamp
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateTimestamp
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateBlob on SQL type DOUBLE
>     > +    Using column position as first parameter to updateBlob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateBlob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateBoolean on SQL type DOUBLE
>     > +    Using column position as first parameter to updateBoolean
>     > +    Using column name as first parameter to updateBoolean
>     > +  Testing updateNull on SQL type DOUBLE
>     > +    Using column position as first parameter to updateNull
>     > +    Using column name as first parameter to updateNull
>     > +  Testing updateArray on SQL type DOUBLE
>     > +    Using column position as first parameter to updateArray
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateArray
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateRef on SQL type DOUBLE
>     > +    Using column position as first parameter to updateRef
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateRef
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +Next datatype to test is CHAR(60)
>     > +  Testing updateShort on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateShort
>     > +    Using column name as first parameter to updateShort
>     > +  Testing updateInt on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateInt
>     > +    Using column name as first parameter to updateInt
>     > +  Testing updateLong on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateLong
>     > +    Using column name as first parameter to updateLong
>     > +  Testing updateBigDecimal on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateBigDecimal
>     > +    Using column name as first parameter to updateBigDecimal
>     > +  Testing updateFloat on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateFloat
>     > +    Using column name as first parameter to updateFloat
>     > +  Testing updateDouble on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateDouble
>     > +    Using column name as first parameter to updateDouble
>     > +  Testing updateString on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateString
>     > +    Using column name as first parameter to updateString
>     > +  Testing updateAsciiStream on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateAsciiStream
>     > +    Using column name as first parameter to updateAsciiStream
>     > +  Testing updateCharacterStream on SQL type CHAR(60)
>     > +    Using column position as first parameter to
>     updateCharacterStream
>     > +    Using column name as first parameter to updateCharacterStream
>     > +  Testing updateByte on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateByte
>     > +    Using column name as first parameter to updateByte
>     > +  Testing updateBytes on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateBytes
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateBytes
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateBinaryStream on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateBinaryStream
>     > +      Got expected exception : Illegal Conversion
>     > +    Using column name as first parameter to updateBinaryStream
>     > +      Got expected exception : Illegal Conversion
>     > +  Testing updateClob on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateClob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateClob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateDate on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateDate
>     > +    Using column name as first parameter to updateDate
>     > +  Testing updateTime on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateTime
>     > +    Using column name as first parameter to updateTime
>     > +  Testing updateTimestamp on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateTimestamp
>     > +    Using column name as first parameter to updateTimestamp
>     > +  Testing updateBlob on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateBlob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +    Using column name as first parameter to updateBlob
>     > +      Got expected exception : JDBC 3 method called - not yet
>     supported
>     > +  Testing updateBoolean on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateBoolean
>     > +    Using column name as first parameter to updateBoolean
>     > +  Testing updateNull on SQL type CHAR(60)
>     > +    Using column position as first parameter to updateNull
>     > +    Using column name as first parameter to updateNull
>     > +  Testing updateArray on SQL type CHAR(60)
>     > +    Using col...
> 
>     [Message clipped]
> 
> 


Mime
View raw message