db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Satheesh Bandaram <sathe...@Sourcery.Org>
Subject Re: [PATCH] Updatable Resultset JDBC api (update and delete for forward only updatable resultsets) support for Network Server
Date Mon, 23 May 2005 21:18:25 GMT
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
This patch is committed. Mamta, could you add the known differences to
embedded driver to Derby-310? Thanks for relaxing the first
difference.. by looking at subsequent columns if the first column is
not from a base table.<br>
<br>
Sending&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java\client\org\apache\derby\client\am\ResultSet.java<br>
Sending&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
java\testing\org\apache\derbyTesting\functionTests\master\DerbyNetClient\updatableResultSet.out<br>
Sending&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
java\testing\org\apache\derbyTesting\functionTests\master\jdk14\updatableResultSet.out<br>
Sending&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
java\testing\org\apache\derbyTesting\functionTests\master\updatableResultSet.out<br>
Sending&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
java\testing\org\apache\derbyTesting\functionTests\suites\DerbyNet.exclude<br>
Sending&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
java\testing\org\apache\derbyTesting\functionTests\tests\lang\updatableResultSet.java<br>
Transmitting file data ......<br>
Committed revision 178006.<br>
<br>
Some minor comments... Use them if they apply....<br>
<br>
<ol>
  <li>Not sure if resultSetMetaData_.sqlxRdbnam_[baseTableColumn] is
ever set, so no need to check for that.</li>
  <li>Use sqlxBasename_ instead of sqlxSchema_ when looking for a valid
base table. While both may work, it may be more readable.</li>
</ol>
Satheesh<br>
<br>
Mamta Satoor wrote:<br>
<blockquote cite="midd9619e4a05052102445330a565@mail.gmail.com"
 type="cite">
  <div>Hi,</div>
  <div>&nbsp;</div>
  <div>Please find attached another patch for updatable resultset
support under Network Server. What changed in this patch compared to
the first patch is Derby Net Client while constructing update/delete
sql&nbsp;goes through all the columns(rather than just the first column)&nbsp;in
the select list to determine the target table. There is still a problem
when the select list does not include any base table columns at all.
Embedded Derby does not face the problem because it does not rely on
the select column's metadata to determine the target table, rather it
looks at the language layer's activation directly. </div>
  <div>&nbsp;</div>
  <div>So, the functionality for Network Server is similar to what
Embedded Derby supports, with the exception of following updated list
of&nbsp;differences</div>
  <div>1)DNC requires that there be at least&nbsp;one column in the select
list&nbsp;from the target table.<br>
eg select 1,&nbsp;2 from t1 for update of c11 will fail in Network Server
because driver looks at both&nbsp;the columns in the select list and it
can't&nbsp;determine the target table for update/delete looking at those
columns' metadata. This is not required by embedded driver. There is
test for this in the attached patch(Positive Test2 in
updatableResultSet.java).<br>
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 )<br>
3)(Positive Test20) Embedded driver allows updateString on SMALLINT,
INTEGER, BIGINT, DECIMAL datatypes. DNC doesn't.<br>
Embedded driver support updateBytes on CHAR, VARCHAR, LONG VARCHAR
datatypes. DNC doesn't<br>
Embedded driver support updateTime on TIMESTAMP datatypes. DNC doesn't <br>
Embedded driver supports updateObject with null value. DNC doesn't<br>
DNC does not support updateClob and updateBlob<br>
&nbsp;</div>
  <div>Also, I am running the derbyall suite to confirm nothing has
broken. The updatable resultset test runs fine.</div>
  <div>&nbsp;</div>
  <div>thanks,</div>
  <div>Mamta<br>
&nbsp;</div>
  <div><span class="gmail_quote">On 5/20/05, <b
 class="gmail_sendername">Mamta Satoor</b> &lt;<a
 href="mailto:msatoor@gmail.com">msatoor@gmail.com</a>&gt; wrote:</span>
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0px 0px 0px 0.8ex; padding-left: 1ex;">
    <div>Hi,</div>
    <div>&nbsp;</div>
    <div>For the first difference (related to updatable resultset) that
I mentioned earlier between embedded and network server(copied below
for easy reference)</div>
    <span class="q">
    <div>1)DNC requires that the first column in the select list&nbsp;be
from the target table.<br>
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).<br>
&nbsp;</div>
    </span>
    <div>I am thinking of changing the Derby Net Client driver to see
if it can look at the subsequent columns to determine the target table
for update/delete rather than give up after trying to get that
information from the first column in the select list. Unless somone has
objection to this approach, I will look into implementing that so we
can bring down the differences between embedded and network server
behavior. </div>
    <div>&nbsp;</div>
    <div>Mamta<br>
    <br>
&nbsp;</div>
    <div>
    <div><span class="e" id="q_103fd5ad4da4ef77_3"><span
 class="gmail_quote">On 5/20/05, <b class="gmail_sendername">Mamta
Satoor</b> &lt;<a onclick="return top.js.OpenExtLink(window,event,this)"
 href="mailto:msatoor@gmail.com" target="_blank">
msatoor@gmail.com</a>&gt; wrote:</span> </span></div>
    <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0px 0px 0px 0.8ex; padding-left: 1ex;">
      <div><span class="e" id="q_103fd5ad4da4ef77_5">
      <div>Hi David,</div>
      <div>&nbsp;</div>
      <div>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". </div>
      <div>&nbsp;</div>
      <div>Mamta<br>
      <br>
&nbsp;</div>
      </span></div>
      <div>
      <div><span class="e" id="q_103fd5ad4da4ef77_7">
      <div><span><span class="gmail_quote">On 5/19/05, <b
 class="gmail_sendername">David Van Couvering</b> &lt;<a
 onclick="return top.js.OpenExtLink(window,event,this)"
 href="mailto:david@vancouvering.com" target="_blank">
david@vancouvering.com
      </a>&gt; wrote:</span> </span></div>
      </span></div>
      <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0px 0px 0px 0.8ex; padding-left: 1ex;">
        <div><span>
        <div><span class="e" id="q_103fd5ad4da4ef77_9">Hi Mamta.&nbsp;&nbsp;These
are some pretty significant incompatibilities between<br>
DNC and Embedded drivers.&nbsp;&nbsp;Are all these logged as JIRA bugs?&nbsp;&nbsp;Are <br>
they/will they be called out in the documentation? <br>
        <br>
Thanks,<br>
        <br>
David<br>
        <br>
Mamta Satoor wrote:<br>
        <br>
&gt; Hi,<br>
&gt;<br>
&gt; Sometime back, I submitted patches for update and delete on
forward only<br>
&gt; updatable resultsets using JDBC apis for Embedded Derby. With this
mail, <br>
&gt; I would like to submit similar support for Network Server using
Derby<br>
&gt; Net Client.<br>
&gt;<br>
&gt; The functionality for Network Server is similar to what Embedded
Derby<br>
&gt; supports, with the exception of following differences <br>
&gt; 1)DNC requires that the first column in the select list be from the<br>
&gt; target table.<br>
&gt; eg select 1, c11 from t1 for update of c11 will fail in Network
Server<br>
&gt; because driver looks at first column to determine the target table
for <br>
&gt; update/delete. This is not required by embedded driver. There are
tests<br>
&gt; for this in the attached patch(Positive Test2 in
updatableResultSet.java).<br>
&gt; 2)Embedded driver allows Statement name change when there is an
open <br>
&gt; resultset on that statement object. DNC driver does not supported
that.<br>
&gt; (Positive Test8a and Test8b in updatableResultSet.java )<br>
&gt; 3)(Positive Test20) Embedded driver allows updateString on
SMALLINT, <br>
&gt; INTEGER, BIGINT, DECIMAL datatypes. DNC doesn't.<br>
&gt; Embedded driver support updateBytes on CHAR, VARCHAR, LONG VARCHAR<br>
&gt; datatypes. DNC doesn't<br>
&gt; Embedded driver support updateTime on TIMESTAMP datatypes. DNC
doesn't <br>
&gt; Embedded driver supports updateObject with null value. DNC doesn't<br>
&gt; DNC does not support updateClob and updateBlob<br>
&gt;<br>
&gt; Following files are changed by this patch<br>
&gt; **************svn stat************ <br>
&gt; M<br>
&gt;
java\testing\org\apache\derbyTesting\functionTests\tests\lang\updatableResultSet.java<br>
&gt; M<br>
&gt;
java\testing\org\apache\derbyTesting\functionTests\master\DerbyNetClient\updatableResultSet.out<br>
&gt;<br>
&gt; M<br>
&gt;
java\testing\org\apache\derbyTesting\functionTests\master\updatableResultSet.out<br>
&gt; M<br>
&gt;
java\testing\org\apache\derbyTesting\functionTests\master\jdk14\updatableResultSet.out<br>
&gt; M<br>
&gt;
java\testing\org\apache\derbyTesting\functionTests\suites\DerbyNet.exclude<br>
&gt; M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java\client\org\apache\derby\client\am\ResultSet.java<br>
&gt; **********************************<br>
&gt;<br>
&gt; Following is a brief description of the actual changes that are
going <br>
&gt; into the patch<br>
&gt; 1)After updateRow(provided updateXXX were issued on the row before<br>
&gt; updateRow) and deleteRow, position the resultset to right before
the<br>
&gt; next row. This matches the embedded driver behavior. <br>
&gt; 2)If ResultSet is not positioned on a row and user issues
updateRow (w/o<br>
&gt; prior updateXXX), then throw an exception that it is not a valid<br>
&gt; operation. This matches the embedded driver behavior.<br>
&gt; 3)Made changes to DNC so that it does not require all the
updatable <br>
&gt; columns in the sql to be modified with updateXXX prior to
updateRow.<br>
&gt; This matches the embedded driver behavior.<br>
&gt; 4)To preserve case sensitivity and spaces in the names, put quotes<br>
&gt; around database object names like table name, column name, cursor
name <br>
&gt; etc. Similar to embedded driver.(Positive Test31a, Test31b)<br>
&gt; 5)For a select sql like, select 2, c11 from t1, Derby has null for
table<br>
&gt; name and schema name for column 2. DNC needs to check for these
nulls to <br>
&gt; avoid null pointer exception.<br>
&gt;<br>
&gt; As always, please review the patch and let me know of any comments,<br>
&gt; Mamta<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;
------------------------------------------------------------------------
        <br>
&gt;<br>
&gt; Index:
java/testing/org/apache/derbyTesting/functionTests/tests/lang/updatableResultSet.java<br>
&gt; ===================================================================<br>
&gt; ---
java/testing/org/apache/derbyTesting/functionTests/tests/lang/updatableResultSet.java&nbsp;&nbsp;&nbsp;&nbsp;
(revision 170535) <br>
&gt; +++
java/testing/org/apache/derbyTesting/functionTests/tests/lang/updatableResultSet.java&nbsp;&nbsp;&nbsp;&nbsp;
(working copy)<br>
&gt; @@ -253,13 +253,7 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Negative Testl - request
for scroll insensitive updatable resultset will give a read only scroll
insensitive resultset"); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.clearWarnings();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt =
conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; warnings = conn.getWarnings ();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (warnings != null)<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
JDBCDisplayUtil.ShowWarnings(System.out, warnings);<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; warnings = warnings.getNextWarning();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.clearWarnings();<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDBCDisplayUtil.ShowWarnings(System.out,
conn);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println ("requested
TYPE_SCROLL_INSENSITIVE, CONCUR_UPDATABLE but that is not supported");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Make sure that we got
TYPE_SCROLL_INSENSITIVE? " +&nbsp;&nbsp;(stmt.getResultSetType () ==
ResultSet.TYPE_SCROLL_INSENSITIVE));<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Make sure that we got
CONCUR_READ_ONLY? " +&nbsp;&nbsp;(stmt.getResultSetConcurrency() ==
ResultSet.CONCUR_READ_ONLY));<br>
&gt; @@ -292,12 +286,7 @@ <br>
&gt;<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Negative Test2 - request
for scroll sensitive updatable resultset will give a read only scroll
insensitive resultset");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt =
conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (warnings != null)<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println ("warnings on
connection = " + warnings);<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; warnings = warnings.getNextWarning();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.clearWarnings();<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDBCDisplayUtil.ShowWarnings(System.out,
conn);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("requested TYPE_SCROLL_SENSITIVE,
CONCUR_UPDATABLE but that is not supported");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Jira issue Derby-154 :
When client connects to Network Server using JCC, it incorrectly shows
support for scroll sensitive updatable resultsets"); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Make sure that we got
TYPE_SCROLL_INSENSITIVE? " +&nbsp;&nbsp;(stmt.getResultSetType() ==
ResultSet.TYPE_SCROLL_INSENSITIVE));<br>
&gt; @@ -377,20 +366,13 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //have to close the resultset because by
default, resultsets are held open over commit <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close();<br>
&gt;<br>
&gt; -<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Negative Test5 - request
updatable resultset for sql with no FOR UPDATE clause");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt =
conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs = stmt.executeQuery("select * from
t1");//notice that we forgot to give mandatory FOR UPDATE clause for
updatable resultset <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Make sure that we got
CONCUR_READ_ONLY? " + (rs.getConcurrency() ==
ResultSet.CONCUR_READ_ONLY));<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Jira issue Derby-159 :
Warnings raised by Derby are not getting passed to the Client in
Network Server Mode"); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Will see the warnings in
embedded mode only");<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; warnings = rs.getWarnings();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (warnings != null) <br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Expected
warnings on resultset = " + warnings);<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; warnings = warnings.getNextWarning
();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.clearWarnings();<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDBCDisplayUtil.ShowWarnings(System.out, rs);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.next();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println ("Now attempting to send a delete on a
sql with no FOR UPDATE clause.");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>
&gt; @@ -410,7 +392,6 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("SQL State : " +
e.getSQLState());<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Got expected
exception " + e.getMessage());<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; -<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //have to close the resultset because by
default, resultsets are held open over commit <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close();<br>
&gt;<br>
&gt; @@ -420,13 +401,7 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Make sure that we got
CONCUR_READ_ONLY? " + (rs.getConcurrency() ==
ResultSet.CONCUR_READ_ONLY ));<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Jira issue Derby-159 :
Warnings raised by Derby are not getting passed to the Client in
Network Server Mode");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println ("Will see the warnings
in embedded mode only");<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; warnings = rs.getWarnings();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (warnings != null)<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Expected
warnings on resultset = " + warnings);<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; warnings = warnings.getNextWarning();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.clearWarnings ();<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDBCDisplayUtil.ShowWarnings(System.out, rs);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.next();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Now attempting to send a delete on a
sql with FOR READ ONLY clause."); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>
&gt; @@ -463,14 +438,12 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Got expected
exception " + e.getMessage());<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Now attempt a updateRow without first
doing next on the resultset.");<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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"); <br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("updateRow will check if
it is on a row or not even " +<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "though no changes have been made to
the row using updateXXX");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try { <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.updateRow();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (TestUtil.isEmbeddedFramework())<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("FAIL!!!
In embedded mode, this updateRow should have failed because resultset
is not on a row"); <br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("PASS!!!
In Network Server mode, this updateRow is a no-op because no updateXXX
were issued before the updateRow"); <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("FAIL!!!
updateRow should have failed because " +<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "resultset is not on
a row");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (SQLException e) {<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("SQL State : " +
e.getSQLState());<br>
&gt; @@ -664,12 +637,7 @@<br>
&gt;<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Positive Test1a -
request updatable resultset for forward only type resultset");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt =
conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE );<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; warnings = conn.getWarnings();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (warnings != null)<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Unexpected
warnings = " + warnings); <br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; warnings = warnings.getNextWarning();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDBCDisplayUtil.ShowWarnings(System.out,
conn);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("requested TYPE_FORWARD_ONLY,
CONCUR_UPDATABLE"); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("got TYPE_FORWARD_ONLY? "
+&nbsp;&nbsp;(stmt.getResultSetType() == ResultSet.TYPE_FORWARD_ONLY));<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("got CONCUR_UPDATABLE? "
+&nbsp;&nbsp;(stmt.getResultSetConcurrency () == ResultSet.CONCUR_UPDATABLE));<br>
&gt; @@ -679,17 +647,15 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("column 1 on this row before deleteRow
is " + rs.getInt(1));<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("column 2 on this row before deleteRow
is " + rs.getString(2));<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.deleteRow();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Since after deleteRow(), in embedded
mode, ResultSet is positioned before the next row, getXXX will fail");<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("In Network Server mode, the ResultSet
stays on the deleted row after deleteRow and hence no error for
getXXX");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Since after deleteRow(), in embedded
mode and Network "+ <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Server mode using Derby Net Client,
ResultSet is positioned before " +<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "the next row, getXXX will fail");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try { <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("column 1 on this
deleted row is " + rs.getInt(1));<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (SQLException e) {<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( TestUtil.isEmbeddedFramework())
{<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("SQL
State : " + e.getSQLState());<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Got
expected exception " + e.getMessage());<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Got
unexpected exception " + e.getMessage());<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("SQL State : " +
e.getSQLState());<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Got expected
exception " + e.getMessage());<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("calling deleteRow again w/o first
positioning the ResultSet on the next row will fail");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>
&gt; @@ -707,16 +673,10 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //have to close the resultset because by
default, resultsets are held open over commit <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close();<br>
&gt;<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (TestUtil.isEmbeddedFramework()) {<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Positive Test1b -
request updatable resultset for forward only type resultset"); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reloadData();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt =
conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; warnings = conn.getWarnings(); <br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (warnings != null)<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Unexpected
warnings = " + warnings);<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; warnings = warnings.getNextWarning();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDBCDisplayUtil.ShowWarnings(System.out,
conn);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs = stmt.executeQuery("SELECT * FROM t1 FOR
UPDATE"); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.next();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("column 1 on this row
before updateInt is " + rs.getInt(1));<br>
&gt; @@ -725,8 +685,9 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println ("column 2 on this row
before updateString is " + rs.getString(2));<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("now updateRow on the
row");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.updateRow();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Since after updateRow(),
in embedded mode, ResultSet is positioned before the next row, getXXX
will fail");<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In Network Server mode, the ResultSet
stays on the updated row after updateRow and hence no error for
getXXX"); <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Since after updateRow(), in embedded
mode and Network "+<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Server mode using Derby Net Client,
ResultSet is positioned before " + <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "the next row, getXXX will fail");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("column 1 on this
updateRow row is " + rs.getInt(1));<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; @@ -751,14 +712,33 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //have to close the resultset because by
default, resultsets are held open over commit<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close();<br>
&gt;<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Positive Test2 - even if
no columns from table specified in the column list, we should be able
to get updatable resultset");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Positive Test2 - even if
no columns from table " +<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "specified in the column list, we
should be able to get updatable " +<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "resultset"); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reloadData();<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Will work in embedded
mode because target table is "+<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "not derived from the first column
in the select list"); <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Will not work in network
server mode because it " +<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "derives the target tabke from the
first column in the select list"); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("total number of rows in T1 ");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dumpRS(stmt.executeQuery("select count(*) from t1"));<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs = stmt.executeQuery("SELECT 1, 2 FROM t1 FOR UPDATE"); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.next();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("column 1 on this row is " +
rs.getInt(1));<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.deleteRow();<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.deleteRow();<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (TestUtil.isNetFramework())<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("FAIL!!!
should have failed in network server");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("PASS!!!
passed in embedded mode");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (SQLException e) {<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( TestUtil.isNetFramework()) {<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("SQL
State : " + e.getSQLState());<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Got
expected exception " + e.getMessage());<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Got
unexpected exception " + e.getMessage());<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //have to close the resultset because by
default, resultsets are held open over commit <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("total number of rows in T1 after one
deleteRow is ");<br>
&gt; @@ -908,7 +888,7 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("deletesAreDetected(
ResultSet.TYPE_FORWARD_ONLY)? " +
dbmt.deletesAreDetected(ResultSet.TYPE_FORWARD_ONLY));<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reloadData();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt =
conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE );<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs = stmt.executeQuery("SELECT 1, 2 FROM t1 FOR UPDATE of
c1");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs = stmt.executeQuery("SELECT * FROM t1 FOR UPDATE of c1");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.next();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("The JDBC program should look at
rowDeleted only if deletesAreDetected returns true");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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");<br>
&gt; @@ -971,21 +951,46 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt.executeUpdate("DROP TABLE SESSION.t3");<br>
&gt;<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Positive Test8a - change
the name of the resultset and see if deleteRow still works");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Positive Test8a - change
the name of the statement " + <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "when the resultset is open and see
if deleteRow still works");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("This test works in
embedded mode since Derby can " + <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "handle the change in the name of
the statement with an open resultset");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("But it fails under
Network Server mode because JCC " + <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "and Derby Net Client do not allow
statement name change when there " +<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "an open resultset against it");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reloadData(); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt =
conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("change the cursor name(case sensitive
name) with setCursorName and then try to deleteRow"); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
stmt.setCursorName("CURSORNOUPDATe");//notice this name is case
sensitive<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs = stmt.executeQuery("SELECT 1, 2 FROM t1 FOR UPDATE of
c1");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs = stmt.executeQuery("SELECT * FROM t1 FOR UPDATE of c1");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.next();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.deleteRow();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("change the cursor name one more time
with setCursorName and then try to deleteRow"); <br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt.setCursorName("CURSORNOUPDATE1");<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.next();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.deleteRow();<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
stmt.setCursorName("CURSORNOUPDATE1");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.next();<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.deleteRow();<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (TestUtil.isNetFramework())<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("FAIL!!!
should have failed in network server");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println ("PASS!!!
passed in embedded mode");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (SQLException e) {<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (TestUtil.isNetFramework()) {<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("SQL
State : " + e.getSQLState());<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Got
expected exception " + e.getMessage());<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Got
unexpected exception " + e.getMessage());<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close();<br>
&gt;<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Positive Test8b - change
the name of the resultset and see if updateRow still works");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Positive Test8b - change
the name of the statement " + <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "when the resultset is open and see
if updateRow still works");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("This test works in
embedded mode since Derby can " + <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "handle the change in the name of
the statement with an open resultset");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("But it fails under
Network Server mode because JCC " + <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "and Derby Net Client do not allow
statement name change when there " +<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "an open resultset against it");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reloadData(); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("change the cursor name
one more time with setCursorName and then try to updateRow");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt =
conn.createStatement(ResultSet.TYPE_FORWARD_ONLY ,
ResultSet.CONCUR_UPDATABLE);<br>
&gt; @@ -994,21 +999,53 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs = stmt.executeQuery("SELECT * FROM t1 FOR
UPDATE of c1");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.next();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.updateLong(1,123);<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt.setCursorName("CURSORNOUPDATE1");<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.updateRow();<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
stmt.setCursorName("CURSORNOUPDATE1");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.updateRow();<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (TestUtil.isNetFramework())<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println ("FAIL!!!
should have failed in network server");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("PASS!!!
passed in embedded mode");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (SQLException e) {<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (TestUtil.isNetFramework()) {<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("SQL
State : " + e.getSQLState ());<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Got
expected exception " + e.getMessage());<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println ("Got
unexpected exception " + e.getMessage());<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close();<br>
&gt;<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Positive Test9a - using
correlation name for the table in the select sql is not a problem"); <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Positive Test9a - using
correlation name for the " +<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "table in the select sql works in
embedded mode and Network Server " + <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "using Derby Net Client driver");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Correlation name for
table does not work in Network "+<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Server mode (using JCC) because the
drivers construct the delete sql "+ <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "with the correlation name rather
than the base table name");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reloadData();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt =
conn.createStatement(ResultSet.TYPE_FORWARD_ONLY ,
ResultSet.CONCUR_UPDATABLE);<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs = stmt.executeQuery("SELECT 1, 2 FROM t1 abcde FOR
UPDATE of c1");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs = stmt.executeQuery("SELECT * FROM t1 abcde FOR UPDATE
of c1");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.next();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("column 1 on this row is " +
rs.getInt(1));<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("now try to deleteRow");<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.deleteRow();<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.deleteRow();<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (TestUtil.isJCCFramework())<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("FAIL!!!
should have failed in network server");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("PASS!!!
passed in embedded mode"); <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (SQLException e) {<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (TestUtil.isJCCFramework()) {<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println ("SQL
State : " + e.getSQLState());<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Got
expected exception " + e.getMessage());<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Got
unexpected exception " + e.getMessage());<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close();<br>
&gt; -<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Positive Test9b - using
correlation name for updatable column name is not allowed"); <br>
&gt; +<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Positive Test9b - using
correlation name for " +<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "updatable columns is not allowed.");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reloadData(); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt =
conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Table t1 has following
rows");<br>
&gt; @@ -1055,22 +1092,6 @@ <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Table t1 after updateRow
has following rows");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dumpRS(stmt.executeQuery("select * from
t1"));<br>
&gt;<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Positive Test9c - try to
updateXXX on a readonly column. Should get error");<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reloadData();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs = stmt.executeQuery("SELECT c1, c2 FROM
t1 abcde FOR UPDATE of c1"); <br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.next();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.updateString(2,"bbbb");<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("FAIL!!!
updateString on readonly column should have failed"); <br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (SQLException e) {<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("SQL State : " +
e.getSQLState());<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Got expected
exception " + e.getMessage());<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Table t1 has following
rows"); <br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dumpRS(stmt.executeQuery("select * from
t1"));<br>
&gt; -<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Positive Test9d - try to
updateXXX on a readonly column with correlation name. Should get
error"); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reloadData();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs = stmt.executeQuery("SELECT c1, c2 as
col2 FROM t1 abcde FOR UPDATE of c1");<br>
&gt; @@ -1092,9 +1113,9 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reloadData(); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt =
conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt1 =
conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE );<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs = stmt.executeQuery("SELECT 1, 2 FROM t1 FOR UPDATE");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs = stmt.executeQuery("SELECT * FROM t1 FOR UPDATE");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.next();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs1 = stmt1.executeQuery("SELECT 1, 2 FROM
t1 FOR UPDATE");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs1 = stmt1.executeQuery("SELECT * FROM t1
FOR UPDATE");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs1.next();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("delete using first
resultset");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.deleteRow();<br>
&gt; @@ -1119,7 +1140,7 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt =
conn.createStatement(ResultSet.TYPE_FORWARD_ONLY ,
ResultSet.CONCUR_UPDATABLE);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt.executeUpdate("call
SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1)");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt.setFetchSize(200);<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs = stmt.executeQuery ("SELECT 1, 2 FROM t1 FOR UPDATE of
c1");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs = stmt.executeQuery("SELECT * FROM t1 FOR UPDATE of c1");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Notice the Fetch Size in
run time statistics output."); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;showScanStatistics(rs, conn);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("statement's fetch size
is " + stmt.getFetchSize());<br>
&gt; @@ -1205,6 +1226,7 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dumpRS( stmt.executeQuery("select * from
table2WithTriggers"));<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //have to close the resultset because by
default, resultsets are held open over commit<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close ();<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.rollback();<br>
&gt;<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Positive Test14a - make
sure self referential delete cascade works when deleteRow is issued");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dumpRS( stmt.executeQuery("select * from
selfReferencingT1"));<br>
&gt; @@ -1252,7 +1274,7 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reloadData();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.setAutoCommit(false);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt = conn.createStatement
(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs = stmt.executeQuery("SELECT 1, 2 FROM t1 FOR UPDATE");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs = stmt.executeQuery("SELECT * FROM t1 FOR UPDATE"); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.next();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Opened an updatable
resultset. Now trying to drop that table through another Statement");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt1 = conn.createStatement();<br>
&gt; @@ -1503,13 +1525,15 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.rollback(); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.setAutoCommit(true);<br>
&gt;<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Positive Test21 - Test
all updateXXX(excluding updateObject) methods on all the supported sql
datatypes"); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.setAutoCommit(false);<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt =
conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt1 = conn.createStatement ();<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PreparedStatement pstmt =
conn.prepareStatement("SELECT * FROM AllDataTypesForTestingTable FOR
UPDATE", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PreparedStatement pstmt1 =
conn.prepareStatement("SELECT * FROM AllDataTypesNewValuesData");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int sqlType = 1, checkAgainstColumn =
1; sqlType &lt;= allSQLTypes.length; sqlType++ ) {<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.rollback();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Next datatype to
test is " + allSQLTypes[sqlType-1]);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int updateXXXName =
1;&nbsp;&nbsp;updateXXXName &lt;= allUpdateXXXNames.length; updateXXXName++) {<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; checkAgainstColumn =
updateXXXName;<br>
&gt; @@ -1519,9 +1543,9 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.out.println ("&nbsp;&nbsp;&nbsp;&nbsp;Using column position as first parameter to "
+ allUpdateXXXNames[updateXXXName-1]);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.out.println("&nbsp;&nbsp;&nbsp;&nbsp;Using column name as first parameter to " +
allUpdateXXXNames[updateXXXName-1]);<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs =
stmt.executeQuery("SELECT * FROM AllDataTypesForTestingTable FOR
UPDATE"); <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs =
pstmt.executeQuery();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.next();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs1 =
stmt1.executeQuery ("SELECT * FROM AllDataTypesNewValuesData");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs1 =
pstmt1.executeQuery();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs1.next();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try { <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
(updateXXXName == 1) {//update column with updateShort methods<br>
&gt; @@ -1642,7 +1666,8 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
rs.updateRef(ColumnNames[sqlType-1], null);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
rs.updateRow();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
(updateXXXRulesTableForEmbedded[sqlType-1][updateXXXName-1].equals("ERROR"))
{ <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
((TestUtil.isNetFramework() &amp;&amp;
updateXXXRulesTableForNetworkServer[sqlType-1][updateXXXName-1].equals("ERROR"))
||<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (
TestUtil.isEmbeddedFramework() &amp;&amp;
updateXXXRulesTableForEmbedded[sqlType-1][updateXXXName-1].equals("ERROR")))
{<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.out.println("FAILURE : We shouldn't reach here. The test should
have failed earlier on updateXXX or updateRow call"); <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return;<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; @@ -1652,7 +1677,8 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return; <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Throwable
e) {<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
(updateXXXRulesTableForEmbedded[sqlType-1][updateXXXName-1].equals("ERROR"))
        <br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
((TestUtil.isNetFramework() &amp;&amp;
updateXXXRulesTableForNetworkServer[sqlType-1][updateXXXName-1].equals("ERROR"))
||<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (
TestUtil.isEmbeddedFramework() &amp;&amp;
updateXXXRulesTableForEmbedded[sqlType-1][updateXXXName-1].equals("ERROR")))<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.out.println("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Got expected exception : " + e.getMessage());<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
((sqlType == 14 || sqlType == 15 || sqlType == 16) &amp;&amp; //we are
dealing with DATE/TIME/TIMESTAMP column types <br>
&gt; @@ -1669,14 +1695,14 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs1.close();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.rollback();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.setAutoCommit(true);<br>
&gt;<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Positive Test22 - Test
updateObject method");<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.setAutoCommit(false);<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt =
conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt1 = conn.createStatement();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String displayString;<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int sqlType = 1; sqlType &lt;=
allSQLTypes.length; sqlType++ ) {<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.rollback();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Next datatype to
test is " + allSQLTypes[sqlType-1]);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int updateXXXName =
1;&nbsp;&nbsp;updateXXXName &lt;= allUpdateXXXNames.length; updateXXXName++) {<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int indexOrName = 1;
indexOrName &lt;= 2; indexOrName++) {<br>
&gt; @@ -1684,9 +1710,9 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
displayString = "&nbsp;&nbsp;updateObject with column position &amp;"; <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
displayString = "&nbsp;&nbsp;updateObject with column name &amp;";<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs =
stmt.executeQuery("SELECT * FROM AllDataTypesForTestingTable FOR
UPDATE");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs =
pstmt.executeQuery();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.next ();<br>
&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs1 =
stmt1.executeQuery("SELECT * FROM AllDataTypesNewValuesData");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs1 =
pstmt1.executeQuery();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs1.next();<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
(updateXXXName == 1){ //updateObject using Short object <br>
&gt; @@ -1787,15 +1813,34 @@<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
rs.updateObject(ColumnNames[sqlType-1], new Boolean(rs1.getBoolean(1)));<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if
(updateXXXName == 19){ //update column with updateNull methods <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.out.println(displayString + " null as parameters");<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
(indexOrName == 1) //test by passing column position <br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
rs.updateObject(sqlType, null);<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else
//test by passing column name<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
rs.updateObject(ColumnNames[sqlType-1], null);<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
catch (Throwable e) {<br>
&gt; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
(TestUtil.isNetFramework ()) {<br>
&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.out.println("&nbsp;&nbsp; Got expected exception:" + e.getMessage());<br>
        </span></div>
&gt;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;nb
        </span></div>
      </blockquote>
      </div>
    </blockquote>
    </div>
...<br>
    <br>
[Message clipped]</blockquote>
  </div>
  <br>
  <pre wrap="">
<hr size="4" width="90%">
Index: java/testing/org/apache/derbyTesting/functionTests/tests/lang/updatableResultSet.java
===================================================================
--- java/testing/org/apache/derbyTesting/functionTests/tests/lang/updatableResultSet.java	(revision 171201)
+++ 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 columns in the select list");
+			System.out.println("Will not work in network server mode because it " +
+				"derives the target table from the columns 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 &lt;= allSQLTypes.length; sqlType++ ) {
+				conn.rollback();
 				System.out.println("Next datatype to test is " + allSQLTypes[sqlType-1]);
 				for (int updateXXXName = 1;  updateXXXName &lt;= 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() &amp;&amp; updateXXXRulesTableForNetworkServer[sqlType-1][updateXXXName-1].equals("ERROR")) ||
+								(TestUtil.isEmbeddedFramework() &amp;&amp; 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() &amp;&amp; updateXXXRulesTableForNetworkServer[sqlType-1][updateXXXName-1].equals("ERROR")) ||
+								(TestUtil.isEmbeddedFramework() &amp;&amp; updateXXXRulesTableForEmbedded[sqlType-1][updateXXXName-1].equals("ERROR")))
 								System.out.println("      Got expected exception : " + e.getMessage());
 							else {
 								if ((sqlType == 14 || sqlType == 15 || sqlType == 16) &amp;&amp; //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 &lt;= allSQLTypes.length; sqlType++ ) {
+				conn.rollback();
 				System.out.println("Next datatype to test is " + allSQLTypes[sqlType-1]);
 				for (int updateXXXName = 1;  updateXXXName &lt;= allUpdateXXXNames.length; updateXXXName++) {
 					for (int indexOrName = 1; indexOrName &lt;= 2; indexOrName++) {
@@ -1684,9 +1710,9 @@
 							displayString = "  updateObject with column position &amp;";
 						else
 							displayString = "  updateObject with column name &amp;";
-						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() &amp;&amp; updateXXXName == 13 &amp;&amp;
+									(sqlType==7 || sqlType==8 || sqlType==9 || sqlType==13)) 
+								//updateObject with clob allowed on char, varchar, longvarchar &amp; clob
+									System.out.print("");
+								else if (TestUtil.isNetFramework() &amp;&amp; updateXXXName == 17 &amp;&amp;
+									(sqlType==12 || sqlType==17)) 
+								//updateObject with blob allowed on longvarchar for bit &amp; blob
+									System.out.print("");
+								else if ((TestUtil.isNetFramework() &amp;&amp; updateXXXRulesTableForNetworkServer[sqlType-1][updateXXXName-1].equals("ERROR")) ||
+									(TestUtil.isEmbeddedFramework() &amp;&amp; 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() &amp;&amp; updateXXXRulesTableForNetworkServer[sqlType-1][updateXXXName-1].equals("ERROR")) ||
+								(TestUtil.isEmbeddedFramework() &amp;&amp; updateXXXRulesTableForEmbedded[sqlType-1][updateXXXName-1].equals("ERROR")))
 									System.out.println("    Got expected exception : " + e.getMessage());
 								else {
 									if ((sqlType == 14 || sqlType == 15 || sqlType == 16) &amp;&amp; //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 &amp;&amp; TestUtil.isEmbeddedFramework()){ 
 				System.out.println("  updateClob and then cancelRowUpdates<a class="moz-txt-link-rfc2396E" href="mailto:);Stringclb1=rs.getString(13);rs.updateClob(13,rs1.getClob(13));@@-2166,12+2215,25@@rs.next();try{rs.updateInt(2,22);-System.out.println(">");
 				String clb1 = rs.getString(13);
 				rs.updateClob(13,rs1.getClob(13));
@@ -2166,12 +2215,25 @@
 			rs.next();
 			try {
 				rs.updateInt(2,22);
-				System.out.println("</a>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 &amp;&amp; JVMInfo.JDK_ID != 2)  //verify update made to BLOB column with updateXXX methods
+		} else if (sqlType == 17 &amp;&amp; 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 &lt; 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 171201)
+++ 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 columns in the select list
+Will not work in network server mode because it derives the target table from the columns 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 &gt; 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 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 CHAR(60)
+    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 VARCHAR(60)
+  Testing updateShort on SQL type VARCHAR(60)
+    Using column position as first parameter to updateShort
+    Using column name as first parameter to updateShort
+  Testing updateInt on SQL type VARCHAR(60)
+    Using column position as first parameter to updateInt
+    Using column name as first parameter to updateInt
+  Testing updateLong on SQL type VARCHAR(60)
+    Using column position as first parameter to updateLong
+    Using column name as first parameter to updateLong
+  Testing updateBigDecimal on SQL type VARCHAR(60)
+    Using column position as first parameter to updateBigDecimal
+    Using column name as first parameter to updateBigDecimal
+  Testing updateFloat on SQL type VARCHAR(60)
+    Using column position as first parameter to updateFloat
+    Using column name as first parameter to updateFloat
+  Testing updateDouble on SQL type VARCHAR(60)
+    Using column position as first parameter to updateDouble
+    Using column name as first parameter to updateDouble
+  Testing updateString on SQL type VARCHAR(60)
+    Using column position as first parameter to updateString
+    Using column name as first parameter to updateString
+  Testing updateAsciiStream on SQL type VARCHAR(60)
+    Using column position as first parameter to updateAsciiStream
+    Using column name as first parameter to updateAsciiStream
+  Testing updateCharacterStream on SQL type VARCHAR(60)
+    Using column position as first parameter to updateCharacterStream
+    Using column name as first parameter to updateCharacterStream
+  Testing updateByte on SQL type VARCHAR(60)
+    Using column position as first parameter to updateByte
+    Using column name as first parameter to updateByte
+  Testing updateBytes on SQL type VARCHAR(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 VARCHAR(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 VARCHAR(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 VARCHAR(60)
+    Using column position as first parameter to updateDate
+    Using column name as first parameter to updateDate
+  Testing updateTime on SQL type VARCHAR(60)
+    Using column position as first parameter to updateTime
+    Using column name as first parameter to updateTime
+  Testing updateTimestamp on SQL type VARCHAR(60)
+    Using column position as first parameter to updateTimestamp
+    Using column name as first parameter to updateTimestamp
+  Testing updateBlob on SQL type VARCHAR(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 VARCHAR(60)
+    Using column position as first parameter to updateBoolean
+    Using column name as first parameter to updateBoolean
+  Testing updateNull on SQL type VARCHAR(60)
+    Using column position as first parameter to updateNull
+    Using column name as first parameter to updateNull
+  Testing updateArray on SQL type VARCHAR(60)
+    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 VARCHAR(60)
+    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 LONG VARCHAR
+  Testing updateShort on SQL type LONG VARCHAR
+    Using column position as first parameter to updateShort
+    Using column name as first parameter to updateShort
+  Testing updateInt on SQL type LONG VARCHAR
+    Using column position as first parameter to updateInt
+    Using column name as first parameter to updateInt
+  Testing updateLong on SQL type LONG VARCHAR
+    Using column position as first parameter to updateLong
+    Using column name as first parameter to updateLong
+  Testing updateBigDecimal on SQL type LONG VARCHAR
+    Using column position as first parameter to updateBigDecimal
+    Using column name as first parameter to updateBigDecimal
+  Testing updateFloat on SQL type LONG VARCHAR
+    Using column position as first parameter to updateFloat
+    Using column name as first parameter to updateFloat
+  Testing updateDouble on SQL type LONG VARCHAR
+    Using column position as first parameter to updateDouble
+    Using column name as first parameter to updateDouble
+  Testing updateString on SQL type LONG VARCHAR
+    Using column position as first parameter to updateString
+    Using column name as first parameter to updateString
+  Testing updateAsciiStream on SQL type LONG VARCHAR
+    Using column position as first parameter to updateAsciiStream
+    Using column name as first parameter to updateAsciiStream
+  Testing updateCharacterStream on SQL type LONG VARCHAR
+    Using column position as first parameter to updateCharacterStream
+    Using column name as first parameter to updateCharacterStream
+  Testing updateByte on SQL type LONG VARCHAR
+    Using column position as first parameter to updateByte
+    Using column name as first parameter to updateByte
+  Testing updateBytes on SQL type LONG VARCHAR
+    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 LONG VARCHAR
+    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 LONG VARCHAR
+    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 LONG VARCHAR
+    Using column position as first parameter to updateDate
+    Using column name as first parameter to updateDate
+  Testing updateTime on SQL type LONG VARCHAR
+    Using column position as first parameter to updateTime
+    Using column name as first parameter to updateTime
+  Testing updateTimestamp on SQL type LONG VARCHAR
+    Using column position as first parameter to updateTimestamp
+    Using column name as first parameter to updateTimestamp
+  Testing updateBlob on SQL type LONG VARCHAR
+    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 LONG VARCHAR
+    Using column position as first parameter to updateBoolean
+    Using column name as first parameter to updateBoolean
+  Testing updateNull on SQL type LONG VARCHAR
+    Using column position as first parameter to updateNull
+    Using column name as first parameter to updateNull
+  Testing updateArray on SQL type LONG VARCHAR
+    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 LONG VARCHAR
+    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(2) FOR BIT DATA
+  Testing updateShort on SQL type CHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateShort
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateShort
+      Got expected exception : Illegal Conversion
+  Testing updateInt on SQL type CHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateInt
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateInt
+      Got expected exception : Illegal Conversion
+  Testing updateLong on SQL type CHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateLong
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateLong
+      Got expected exception : Illegal Conversion
+  Testing updateBigDecimal on SQL type CHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateBigDecimal
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateBigDecimal
+      Got expected exception : Illegal Conversion
+  Testing updateFloat on SQL type CHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateFloat
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateFloat
+      Got expected exception : Illegal Conversion
+  Testing updateDouble on SQL type CHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateDouble
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateDouble
+      Got expected exception : Illegal Conversion
+  Testing updateString on SQL type CHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateString
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateString
+      Got expected exception : Illegal Conversion
+  Testing updateAsciiStream on SQL type CHAR(2) FOR BIT DATA
+    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 CHAR(2) FOR BIT DATA
+    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 CHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateByte
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateByte
+      Got expected exception : Illegal Conversion
+  Testing updateBytes on SQL type CHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateBytes
+    Using column name as first parameter to updateBytes
+  Testing updateBinaryStream on SQL type CHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateBinaryStream
+    Using column name as first parameter to updateBinaryStream
+  Testing updateClob on SQL type CHAR(2) FOR BIT DATA
+    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(2) FOR BIT DATA
+    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 CHAR(2) FOR BIT DATA
+    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 CHAR(2) FOR BIT DATA
+    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 CHAR(2) FOR BIT DATA
+    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(2) FOR BIT DATA
+    Using column position as first parameter to updateBoolean
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateBoolean
+      Got expected exception : Illegal Conversion
+  Testing updateNull on SQL type CHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateNull
+    Using column name as first parameter to updateNull
+  Testing updateArray on SQL type CHAR(2) FOR BIT DATA
+    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 CHAR(2) FOR BIT DATA
+    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 VARCHAR(2) FOR BIT DATA
+  Testing updateShort on SQL type VARCHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateShort
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateShort
+      Got expected exception : Illegal Conversion
+  Testing updateInt on SQL type VARCHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateInt
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateInt
+      Got expected exception : Illegal Conversion
+  Testing updateLong on SQL type VARCHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateLong
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateLong
+      Got expected exception : Illegal Conversion
+  Testing updateBigDecimal on SQL type VARCHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateBigDecimal
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateBigDecimal
+      Got expected exception : Illegal Conversion
+  Testing updateFloat on SQL type VARCHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateFloat
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateFloat
+      Got expected exception : Illegal Conversion
+  Testing updateDouble on SQL type VARCHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateDouble
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateDouble
+      Got expected exception : Illegal Conversion
+  Testing updateString on SQL type VARCHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateString
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateString
+      Got expected exception : Illegal Conversion
+  Testing updateAsciiStream on SQL type VARCHAR(2) FOR BIT DATA
+    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 VARCHAR(2) FOR BIT DATA
+    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 VARCHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateByte
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateByte
+      Got expected exception : Illegal Conversion
+  Testing updateBytes on SQL type VARCHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateBytes
+    Using column name as first parameter to updateBytes
+  Testing updateBinaryStream on SQL type VARCHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateBinaryStream
+    Using column name as first parameter to updateBinaryStream
+  Testing updateClob on SQL type VARCHAR(2) FOR BIT DATA
+    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 VARCHAR(2) FOR BIT DATA
+    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 VARCHAR(2) FOR BIT DATA
+    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 VARCHAR(2) FOR BIT DATA
+    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 VARCHAR(2) FOR BIT DATA
+    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 VARCHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateBoolean
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateBoolean
+      Got expected exception : Illegal Conversion
+  Testing updateNull on SQL type VARCHAR(2) FOR BIT DATA
+    Using column position as first parameter to updateNull
+    Using column name as first parameter to updateNull
+  Testing updateArray on SQL type VARCHAR(2) FOR BIT DATA
+    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 VARCHAR(2) FOR BIT DATA
+    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 LONG VARCHAR FOR BIT DATA
+  Testing updateShort on SQL type LONG VARCHAR FOR BIT DATA
+    Using column position as first parameter to updateShort
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateShort
+      Got expected exception : Illegal Conversion
+  Testing updateInt on SQL type LONG VARCHAR FOR BIT DATA
+    Using column position as first parameter to updateInt
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateInt
+      Got expected exception : Illegal Conversion
+  Testing updateLong on SQL type LONG VARCHAR FOR BIT DATA
+    Using column position as first parameter to updateLong
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateLong
+      Got expected exception : Illegal Conversion
+  Testing updateBigDecimal on SQL type LONG VARCHAR FOR BIT DATA
+    Using column position as first parameter to updateBigDecimal
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateBigDecimal
+      Got expected exception : Illegal Conversion
+  Testing updateFloat on SQL type LONG VARCHAR FOR BIT DATA
+    Using column position as first parameter to updateFloat
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateFloat
+      Got expected exception : Illegal Conversion
+  Testing updateDouble on SQL type LONG VARCHAR FOR BIT DATA
+    Using column position as first parameter to updateDouble
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateDouble
+      Got expected exception : Illegal Conversion
+  Testing updateString on SQL type LONG VARCHAR FOR BIT DATA
+    Using column position as first parameter to updateString
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateString
+      Got expected exception : Illegal Conversion
+  Testing updateAsciiStream on SQL type LONG VARCHAR FOR BIT DATA
+    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 LONG VARCHAR FOR BIT DATA
+    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 LONG VARCHAR FOR BIT DATA
+    Using column position as first parameter to updateByte
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateByte
+      Got expected exception : Illegal Conversion
+  Testing updateBytes on SQL type LONG VARCHAR FOR BIT DATA
+    Using column position as first parameter to updateBytes
+    Using column name as first parameter to updateBytes
+  Testing updateBinaryStream on SQL type LONG VARCHAR FOR BIT DATA
+    Using column position as first parameter to updateBinaryStream
+    Using column name as first parameter to updateBinaryStream
+  Testing updateClob on SQL type LONG VARCHAR FOR BIT DATA
+    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 LONG VARCHAR FOR BIT DATA
+    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 LONG VARCHAR FOR BIT DATA
+    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 LONG VARCHAR FOR BIT DATA
+    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 LONG VARCHAR FOR BIT DATA
+    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 LONG VARCHAR FOR BIT DATA
+    Using column position as first parameter to updateBoolean
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateBoolean
+      Got expected exception : Illegal Conversion
+  Testing updateNull on SQL type LONG VARCHAR FOR BIT DATA
+    Using column position as first parameter to updateNull
+    Using column name as first parameter to updateNull
+  Testing updateArray on SQL type LONG VARCHAR FOR BIT DATA
+    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 LONG VARCHAR FOR BIT DATA
+    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 CLOB(1k)
+  Testing updateShort on SQL type CLOB(1k)
+    Using column position as first parameter to updateShort
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateShort
+      Got expected exception : Illegal Conversion
+  Testing updateInt on SQL type CLOB(1k)
+    Using column position as first parameter to updateInt
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateInt
+      Got expected exception : Illegal Conversion
+  Testing updateLong on SQL type CLOB(1k)
+    Using column position as first parameter to updateLong
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateLong
+      Got expected exception : Illegal Conversion
+  Testing updateBigDecimal on SQL type CLOB(1k)
+    Using column position as first parameter to updateBigDecimal
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateBigDecimal
+      Got expected exception : Illegal Conversion
+  Testing updateFloat on SQL type CLOB(1k)
+    Using column position as first parameter to updateFloat
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateFloat
+      Got expected exception : Illegal Conversion
+  Testing updateDouble on SQL type CLOB(1k)
+    Using column position as first parameter to updateDouble
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateDouble
+      Got expected exception : Illegal Conversion
+  Testing updateString on SQL type CLOB(1k)
+    Using column position as first parameter to updateString
+    Using column name as first parameter to updateString
+  Testing updateAsciiStream on SQL type CLOB(1k)
+    Using column position as first parameter to updateAsciiStream
+    Using column name as first parameter to updateAsciiStream
+  Testing updateCharacterStream on SQL type CLOB(1k)
+    Using column position as first parameter to updateCharacterStream
+    Using column name as first parameter to updateCharacterStream
+  Testing updateByte on SQL type CLOB(1k)
+    Using column position as first parameter to updateByte
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateByte
+      Got expected exception : Illegal Conversion
+  Testing updateBytes on SQL type CLOB(1k)
+    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 CLOB(1k)
+    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 CLOB(1k)
+    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 CLOB(1k)
+    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 CLOB(1k)
+    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 CLOB(1k)
+    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 CLOB(1k)
+    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 CLOB(1k)
+    Using column position as first parameter to updateBoolean
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateBoolean
+      Got expected exception : Illegal Conversion
+  Testing updateNull on SQL type CLOB(1k)
+    Using column position as first parameter to updateNull
+    Using column name as first parameter to updateNull
+  Testing updateArray on SQL type CLOB(1k)
+    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 CLOB(1k)
+    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 DATE
+  Testing updateShort on SQL type DATE
+    Using column position as first parameter to updateShort
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateShort
+      Got expected exception : Illegal Conversion
+  Testing updateInt on SQL type DATE
+    Using column position as first parameter to updateInt
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateInt
+      Got expected exception : Illegal Conversion
+  Testing updateLong on SQL type DATE
+    Using column position as first parameter to updateLong
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateLong
+      Got expected exception : Illegal Conversion
+  Testing updateBigDecimal on SQL type DATE
+    Using column position as first parameter to updateBigDecimal
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateBigDecimal
+      Got expected exception : Illegal Conversion
+  Testing updateFloat on SQL type DATE
+    Using column position as first parameter to updateFloat
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateFloat
+      Got expected exception : Illegal Conversion
+  Testing updateDouble on SQL type DATE
+    Using column position as first parameter to updateDouble
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateDouble
+      Got expected exception : Illegal Conversion
+  Testing updateString on SQL type DATE
+    Using column position as first parameter to updateString
+      Got expected exception : null
+    Using column name as first parameter to updateString
+      Got expected exception : null
+  Testing updateAsciiStream on SQL type DATE
+    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 DATE
+    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 DATE
+    Using column position as first parameter to updateByte
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateByte
+      Got expected exception : Illegal Conversion
+  Testing updateBytes on SQL type DATE
+    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 DATE
+    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 DATE
+    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 DATE
+    Using column position as first parameter to updateDate
+    Using column name as first parameter to updateDate
+  Testing updateTime on SQL type DATE
+    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 DATE
+    Using column position as first parameter to updateTimestamp
+    Using column name as first parameter to updateTimestamp
+  Testing updateBlob on SQL type DATE
+    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 DATE
+    Using column position as first parameter to updateBoolean
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateBoolean
+      Got expected exception : Illegal Conversion
+  Testing updateNull on SQL type DATE
+    Using column position as first parameter to updateNull
+    Using column name as first parameter to updateNull
+  Testing updateArray on SQL type DATE
+    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 DATE
+    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 TIME
+  Testing updateShort on SQL type TIME
+    Using column position as first parameter to updateShort
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateShort
+      Got expected exception : Illegal Conversion
+  Testing updateInt on SQL type TIME
+    Using column position as first parameter to updateInt
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateInt
+      Got expected exception : Illegal Conversion
+  Testing updateLong on SQL type TIME
+    Using column position as first parameter to updateLong
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateLong
+      Got expected exception : Illegal Conversion
+  Testing updateBigDecimal on SQL type TIME
+    Using column position as first parameter to updateBigDecimal
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateBigDecimal
+      Got expected exception : Illegal Conversion
+  Testing updateFloat on SQL type TIME
+    Using column position as first parameter to updateFloat
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateFloat
+      Got expected exception : Illegal Conversion
+  Testing updateDouble on SQL type TIME
+    Using column position as first parameter to updateDouble
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateDouble
+      Got expected exception : Illegal Conversion
+  Testing updateString on SQL type TIME
+    Using column position as first parameter to updateString
+      Got expected exception : null
+    Using column name as first parameter to updateString
+      Got expected exception : null
+  Testing updateAsciiStream on SQL type TIME
+    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 TIME
+    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 TIME
+    Using column position as first parameter to updateByte
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateByte
+      Got expected exception : Illegal Conversion
+  Testing updateBytes on SQL type TIME
+    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 TIME
+    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 TIME
+    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 TIME
+    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 TIME
+    Using column position as first parameter to updateTime
+    Using column name as first parameter to updateTime
+  Testing updateTimestamp on SQL type TIME
+    Using column position as first parameter to updateTimestamp
+    Using column name as first parameter to updateTimestamp
+  Testing updateBlob on SQL type TIME
+    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 TIME
+    Using column position as first parameter to updateBoolean
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateBoolean
+      Got expected exception : Illegal Conversion
+  Testing updateNull on SQL type TIME
+    Using column position as first parameter to updateNull
+    Using column name as first parameter to updateNull
+  Testing updateArray on SQL type TIME
+    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 TIME
+    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 TIMESTAMP
+  Testing updateShort on SQL type TIMESTAMP
+    Using column position as first parameter to updateShort
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateShort
+      Got expected exception : Illegal Conversion
+  Testing updateInt on SQL type TIMESTAMP
+    Using column position as first parameter to updateInt
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateInt
+      Got expected exception : Illegal Conversion
+  Testing updateLong on SQL type TIMESTAMP
+    Using column position as first parameter to updateLong
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateLong
+      Got expected exception : Illegal Conversion
+  Testing updateBigDecimal on SQL type TIMESTAMP
+    Using column position as first parameter to updateBigDecimal
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateBigDecimal
+      Got expected exception : Illegal Conversion
+  Testing updateFloat on SQL type TIMESTAMP
+    Using column position as first parameter to updateFloat
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateFloat
+      Got expected exception : Illegal Conversion
+  Testing updateDouble on SQL type TIMESTAMP
+    Using column position as first parameter to updateDouble
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateDouble
+      Got expected exception : Illegal Conversion
+  Testing updateString on SQL type TIMESTAMP
+    Using column position as first parameter to updateString
+      Got expected exception : Timestamp format must be yyyy-mm-dd hh:mm:ss.fffffffff
+    Using column name as first parameter to updateString
+      Got expected exception : Timestamp format must be yyyy-mm-dd hh:mm:ss.fffffffff
+  Testing updateAsciiStream on SQL type TIMESTAMP
+    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 TIMESTAMP
+    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 TIMESTAMP
+    Using column position as first parameter to updateByte
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateByte
+      Got expected exception : Illegal Conversion
+  Testing updateBytes on SQL type TIMESTAMP
+    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 TIMESTAMP
+    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 TIMESTAMP
+    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 TIMESTAMP
+    Using column position as first parameter to updateDate
+    Using column name as first parameter to updateDate
+  Testing updateTime on SQL type TIMESTAMP
+    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 TIMESTAMP
+    Using column position as first parameter to updateTimestamp
+    Using column name as first parameter to updateTimestamp
+  Testing updateBlob on SQL type TIMESTAMP
+    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 TIMESTAMP
+    Using column position as first parameter to updateBoolean
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateBoolean
+      Got expected exception : Illegal Conversion
+  Testing updateNull on SQL type TIMESTAMP
+    Using column position as first parameter to updateNull
+    Using column name as first parameter to updateNull
+  Testing updateArray on SQL type TIMESTAMP
+    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 TIMESTAMP
+    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 BLOB(1k)
+  Testing updateShort on SQL type BLOB(1k)
+    Using column position as first parameter to updateShort
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateShort
+      Got expected exception : Illegal Conversion
+  Testing updateInt on SQL type BLOB(1k)
+    Using column position as first parameter to updateInt
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateInt
+      Got expected exception : Illegal Conversion
+  Testing updateLong on SQL type BLOB(1k)
+    Using column position as first parameter to updateLong
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateLong
+      Got expected exception : Illegal Conversion
+  Testing updateBigDecimal on SQL type BLOB(1k)
+    Using column position as first parameter to updateBigDecimal
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateBigDecimal
+      Got expected exception : Illegal Conversion
+  Testing updateFloat on SQL type BLOB(1k)
+    Using column position as first parameter to updateFloat
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateFloat
+      Got expected exception : Illegal Conversion
+  Testing updateDouble on SQL type BLOB(1k)
+    Using column position as first parameter to updateDouble
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateDouble
+      Got expected exception : Illegal Conversion
+  Testing updateString on SQL type BLOB(1k)
+    Using column position as first parameter to updateString
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateString
+      Got expected exception : Illegal Conversion
+  Testing updateAsciiStream on SQL type BLOB(1k)
+    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 BLOB(1k)
+    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 BLOB(1k)
+    Using column position as first parameter to updateByte
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateByte
+      Got expected exception : Illegal Conversion
+  Testing updateBytes on SQL type BLOB(1k)
+    Using column position as first parameter to updateBytes
+    Using column name as first parameter to updateBytes
+  Testing updateBinaryStream on SQL type BLOB(1k)
+    Using column position as first parameter to updateBinaryStream
+    Using column name as first parameter to updateBinaryStream
+  Testing updateClob on SQL type BLOB(1k)
+    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 BLOB(1k)
+    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 BLOB(1k)
+    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 BLOB(1k)
+    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 BLOB(1k)
+    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 BLOB(1k)
+    Using column position as first parameter to updateBoolean
+      Got expected exception : Illegal Conversion
+    Using column name as first parameter to updateBoolean
+      Got expected exception : Illegal Conversion
+  Testing updateNull on SQL type BLOB(1k)
+    Using column position as first parameter to updateNull
+    Using column name as first parameter to updateNull
+  Testing updateArray on SQL type BLOB(1k)
+    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 BLOB(1k)
+    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 Test22 - Test updateObject method
+Next datatype to test is SMALLINT
+  updateObject with column position &amp; Short object as parameters
+  updateObject with column name &amp; Short object as parameters
+  updateObject with column position &amp; Integer object as parameters
+  updateObject with column name &amp; Integer object as parameters
+  updateObject with column position &amp; Long object as parameters
+  updateObject with column name &amp; Long object as parameters
+  updateObject with column position &amp; BigDecimal object as parameters
+  updateObject with column name &amp; BigDecimal object as parameters
+  updateObject with column position &amp; Float object as parameters
+  updateObject with column name &amp; Float object as parameters
+  updateObject with column position &amp; Double object as parameters
+  updateObject with column name &amp; Double object as parameters
+  updateObject with column position &amp; String object as parameters
+    Got expected exception : Invalid data conversion: Parameter instance 1992                                                         is invalid for requested conversion.
+  updateObject with column name &amp; String object as parameters
+    Got expected exception : Invalid data conversion: Parameter instance 1992                                                         is invalid for requested conversion.
+  updateObject with column position &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Boolean object as parameters
+  updateObject with column name &amp; Boolean object as parameters
+  updateObject with column position &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+  updateObject with column name &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+Next datatype to test is INTEGER
+  updateObject with column position &amp; Short object as parameters
+  updateObject with column name &amp; Short object as parameters
+  updateObject with column position &amp; Integer object as parameters
+  updateObject with column name &amp; Integer object as parameters
+  updateObject with column position &amp; Long object as parameters
+  updateObject with column name &amp; Long object as parameters
+  updateObject with column position &amp; BigDecimal object as parameters
+  updateObject with column name &amp; BigDecimal object as parameters
+  updateObject with column position &amp; Float object as parameters
+  updateObject with column name &amp; Float object as parameters
+  updateObject with column position &amp; Double object as parameters
+  updateObject with column name &amp; Double object as parameters
+  updateObject with column position &amp; String object as parameters
+    Got expected exception : Invalid data conversion: Parameter instance 1992                                                         is invalid for requested conversion.
+  updateObject with column name &amp; String object as parameters
+    Got expected exception : Invalid data conversion: Parameter instance 1992                                                         is invalid for requested conversion.
+  updateObject with column position &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Boolean object as parameters
+  updateObject with column name &amp; Boolean object as parameters
+  updateObject with column position &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+  updateObject with column name &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+Next datatype to test is BIGINT
+  updateObject with column position &amp; Short object as parameters
+  updateObject with column name &amp; Short object as parameters
+  updateObject with column position &amp; Integer object as parameters
+  updateObject with column name &amp; Integer object as parameters
+  updateObject with column position &amp; Long object as parameters
+  updateObject with column name &amp; Long object as parameters
+  updateObject with column position &amp; BigDecimal object as parameters
+  updateObject with column name &amp; BigDecimal object as parameters
+  updateObject with column position &amp; Float object as parameters
+  updateObject with column name &amp; Float object as parameters
+  updateObject with column position &amp; Double object as parameters
+  updateObject with column name &amp; Double object as parameters
+  updateObject with column position &amp; String object as parameters
+    Got expected exception : Invalid data conversion: Parameter instance 1992                                                         is invalid for requested conversion.
+  updateObject with column name &amp; String object as parameters
+    Got expected exception : Invalid data conversion: Parameter instance 1992                                                         is invalid for requested conversion.
+  updateObject with column position &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Boolean object as parameters
+  updateObject with column name &amp; Boolean object as parameters
+  updateObject with column position &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+  updateObject with column name &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+Next datatype to test is DECIMAL(10,5)
+  updateObject with column position &amp; Short object as parameters
+  updateObject with column name &amp; Short object as parameters
+  updateObject with column position &amp; Integer object as parameters
+  updateObject with column name &amp; Integer object as parameters
+  updateObject with column position &amp; Long object as parameters
+  updateObject with column name &amp; Long object as parameters
+  updateObject with column position &amp; BigDecimal object as parameters
+  updateObject with column name &amp; BigDecimal object as parameters
+  updateObject with column position &amp; Float object as parameters
+  updateObject with column name &amp; Float object as parameters
+  updateObject with column position &amp; Double object as parameters
+  updateObject with column name &amp; Double object as parameters
+  updateObject with column position &amp; String object as parameters
+    Got expected exception : Invalid data conversion: Parameter instance 1992                                                         is invalid for requested conversion.
+  updateObject with column name &amp; String object as parameters
+    Got expected exception : Invalid data conversion: Parameter instance 1992                                                         is invalid for requested conversion.
+  updateObject with column position &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Boolean object as parameters
+  updateObject with column name &amp; Boolean object as parameters
+  updateObject with column position &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+  updateObject with column name &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+Next datatype to test is REAL
+  updateObject with column position &amp; Short object as parameters
+  updateObject with column name &amp; Short object as parameters
+  updateObject with column position &amp; Integer object as parameters
+  updateObject with column name &amp; Integer object as parameters
+  updateObject with column position &amp; Long object as parameters
+  updateObject with column name &amp; Long object as parameters
+  updateObject with column position &amp; BigDecimal object as parameters
+  updateObject with column name &amp; BigDecimal object as parameters
+  updateObject with column position &amp; Float object as parameters
+  updateObject with column name &amp; Float object as parameters
+  updateObject with column position &amp; Double object as parameters
+  updateObject with column name &amp; Double object as parameters
+  updateObject with column position &amp; String object as parameters
+  updateObject with column name &amp; String object as parameters
+  updateObject with column position &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Boolean object as parameters
+  updateObject with column name &amp; Boolean object as parameters
+  updateObject with column position &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+  updateObject with column name &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+Next datatype to test is DOUBLE
+  updateObject with column position &amp; Short object as parameters
+  updateObject with column name &amp; Short object as parameters
+  updateObject with column position &amp; Integer object as parameters
+  updateObject with column name &amp; Integer object as parameters
+  updateObject with column position &amp; Long object as parameters
+  updateObject with column name &amp; Long object as parameters
+  updateObject with column position &amp; BigDecimal object as parameters
+  updateObject with column name &amp; BigDecimal object as parameters
+  updateObject with column position &amp; Float object as parameters
+  updateObject with column name &amp; Float object as parameters
+  updateObject with column position &amp; Double object as parameters
+  updateObject with column name &amp; Double object as parameters
+  updateObject with column position &amp; String object as parameters
+  updateObject with column name &amp; String object as parameters
+  updateObject with column position &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Boolean object as parameters
+  updateObject with column name &amp; Boolean object as parameters
+  updateObject with column position &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+  updateObject with column name &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+Next datatype to test is CHAR(60)
+  updateObject with column position &amp; Short object as parameters
+  updateObject with column name &amp; Short object as parameters
+  updateObject with column position &amp; Integer object as parameters
+  updateObject with column name &amp; Integer object as parameters
+  updateObject with column position &amp; Long object as parameters
+  updateObject with column name &amp; Long object as parameters
+  updateObject with column position &amp; BigDecimal object as parameters
+  updateObject with column name &amp; BigDecimal object as parameters
+  updateObject with column position &amp; Float object as parameters
+  updateObject with column name &amp; Float object as parameters
+  updateObject with column position &amp; Double object as parameters
+  updateObject with column name &amp; Double object as parameters
+  updateObject with column position &amp; String object as parameters
+  updateObject with column name &amp; String object as parameters
+  updateObject with column position &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Clob object as parameters
+  updateObject with column name &amp; Clob object as parameters
+  updateObject with column position &amp; Date object as parameters
+  updateObject with column name &amp; Date object as parameters
+  updateObject with column position &amp; Time object as parameters
+  updateObject with column name &amp; Time object as parameters
+  updateObject with column position &amp; TimeStamp object as parameters
+  updateObject with column name &amp; TimeStamp object as parameters
+  updateObject with column position &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Boolean object as parameters
+  updateObject with column name &amp; Boolean object as parameters
+  updateObject with column position &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+  updateObject with column name &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+Next datatype to test is VARCHAR(60)
+  updateObject with column position &amp; Short object as parameters
+  updateObject with column name &amp; Short object as parameters
+  updateObject with column position &amp; Integer object as parameters
+  updateObject with column name &amp; Integer object as parameters
+  updateObject with column position &amp; Long object as parameters
+  updateObject with column name &amp; Long object as parameters
+  updateObject with column position &amp; BigDecimal object as parameters
+  updateObject with column name &amp; BigDecimal object as parameters
+  updateObject with column position &amp; Float object as parameters
+  updateObject with column name &amp; Float object as parameters
+  updateObject with column position &amp; Double object as parameters
+  updateObject with column name &amp; Double object as parameters
+  updateObject with column position &amp; String object as parameters
+  updateObject with column name &amp; String object as parameters
+  updateObject with column position &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Clob object as parameters
+  updateObject with column name &amp; Clob object as parameters
+  updateObject with column position &amp; Date object as parameters
+  updateObject with column name &amp; Date object as parameters
+  updateObject with column position &amp; Time object as parameters
+  updateObject with column name &amp; Time object as parameters
+  updateObject with column position &amp; TimeStamp object as parameters
+  updateObject with column name &amp; TimeStamp object as parameters
+  updateObject with column position &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Boolean object as parameters
+  updateObject with column name &amp; Boolean object as parameters
+  updateObject with column position &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+  updateObject with column name &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+Next datatype to test is LONG VARCHAR
+  updateObject with column position &amp; Short object as parameters
+  updateObject with column name &amp; Short object as parameters
+  updateObject with column position &amp; Integer object as parameters
+  updateObject with column name &amp; Integer object as parameters
+  updateObject with column position &amp; Long object as parameters
+  updateObject with column name &amp; Long object as parameters
+  updateObject with column position &amp; BigDecimal object as parameters
+  updateObject with column name &amp; BigDecimal object as parameters
+  updateObject with column position &amp; Float object as parameters
+  updateObject with column name &amp; Float object as parameters
+  updateObject with column position &amp; Double object as parameters
+  updateObject with column name &amp; Double object as parameters
+  updateObject with column position &amp; String object as parameters
+  updateObject with column name &amp; String object as parameters
+  updateObject with column position &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Clob object as parameters
+  updateObject with column name &amp; Clob object as parameters
+  updateObject with column position &amp; Date object as parameters
+  updateObject with column name &amp; Date object as parameters
+  updateObject with column position &amp; Time object as parameters
+  updateObject with column name &amp; Time object as parameters
+  updateObject with column position &amp; TimeStamp object as parameters
+  updateObject with column name &amp; TimeStamp object as parameters
+  updateObject with column position &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Boolean object as parameters
+  updateObject with column name &amp; Boolean object as parameters
+  updateObject with column position &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+  updateObject with column name &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+Next datatype to test is CHAR(2) FOR BIT DATA
+  updateObject with column position &amp; Short object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Short object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Integer object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Integer object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Long object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Long object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; BigDecimal object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; BigDecimal object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Float object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Float object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Double object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Double object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; String object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; String object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; bytes[] array as parameters
+  updateObject with column name &amp; bytes[] array as parameters
+  updateObject with column position &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Blob object as parameters
+    Got expected exception : A truncation error was encountered trying to shrink CHAR () FOR BIT DATA 'XX-RESOLVE-XX' to length 2.
+  updateObject with column name &amp; Blob object as parameters
+    Got expected exception : A truncation error was encountered trying to shrink CHAR () FOR BIT DATA 'XX-RESOLVE-XX' to length 2.
+  updateObject with column position &amp; Boolean object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Boolean object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+  updateObject with column name &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+Next datatype to test is VARCHAR(2) FOR BIT DATA
+  updateObject with column position &amp; Short object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Short object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Integer object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Integer object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Long object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Long object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; BigDecimal object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; BigDecimal object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Float object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Float object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Double object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Double object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; String object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; String object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; bytes[] array as parameters
+  updateObject with column name &amp; bytes[] array as parameters
+  updateObject with column position &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Blob object as parameters
+    Got expected exception : A truncation error was encountered trying to shrink VARCHAR () FOR BIT DATA 'XX-RESOLVE-XX' to length 2.
+  updateObject with column name &amp; Blob object as parameters
+    Got expected exception : A truncation error was encountered trying to shrink VARCHAR () FOR BIT DATA 'XX-RESOLVE-XX' to length 2.
+  updateObject with column position &amp; Boolean object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Boolean object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+  updateObject with column name &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+Next datatype to test is LONG VARCHAR FOR BIT DATA
+  updateObject with column position &amp; Short object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Short object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Integer object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Integer object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Long object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Long object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; BigDecimal object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; BigDecimal object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Float object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Float object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Double object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Double object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; String object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; String object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; bytes[] array as parameters
+  updateObject with column name &amp; bytes[] array as parameters
+  updateObject with column position &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Blob object as parameters
+  updateObject with column name &amp; Blob object as parameters
+  updateObject with column position &amp; Boolean object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Boolean object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+  updateObject with column name &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+Next datatype to test is CLOB(1k)
+  updateObject with column position &amp; Short object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Short object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Integer object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Integer object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Long object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Long object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; BigDecimal object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; BigDecimal object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Float object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Float object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Double object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Double object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; String object as parameters
+  updateObject with column name &amp; String object as parameters
+  updateObject with column position &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Clob object as parameters
+  updateObject with column name &amp; Clob object as parameters
+  updateObject with column position &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Boolean object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Boolean object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+  updateObject with column name &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+Next datatype to test is DATE
+  updateObject with column position &amp; Short object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Short object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Integer object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Integer object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Long object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Long object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; BigDecimal object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; BigDecimal object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Float object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Float object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Double object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Double object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; String object as parameters
+    Got expected exception : null
+  updateObject with column name &amp; String object as parameters
+    Got expected exception : null
+  updateObject with column position &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Date object as parameters
+  updateObject with column name &amp; Date object as parameters
+  updateObject with column position &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; TimeStamp object as parameters
+  updateObject with column name &amp; TimeStamp object as parameters
+  updateObject with column position &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Boolean object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Boolean object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+  updateObject with column name &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+Next datatype to test is TIME
+  updateObject with column position &amp; Short object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Short object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Integer object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Integer object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Long object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Long object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; BigDecimal object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; BigDecimal object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Float object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Float object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Double object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Double object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; String object as parameters
+    Got expected exception : null
+  updateObject with column name &amp; String object as parameters
+    Got expected exception : null
+  updateObject with column position &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Time object as parameters
+  updateObject with column name &amp; Time object as parameters
+  updateObject with column position &amp; TimeStamp object as parameters
+  updateObject with column name &amp; TimeStamp object as parameters
+  updateObject with column position &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Boolean object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Boolean object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+  updateObject with column name &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+Next datatype to test is TIMESTAMP
+  updateObject with column position &amp; Short object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Short object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Integer object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Integer object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Long object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Long object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; BigDecimal object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; BigDecimal object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Float object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Float object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Double object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Double object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; String object as parameters
+    Got expected exception : Timestamp format must be yyyy-mm-dd hh:mm:ss.fffffffff
+  updateObject with column name &amp; String object as parameters
+    Got expected exception : Timestamp format must be yyyy-mm-dd hh:mm:ss.fffffffff
+  updateObject with column position &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; bytes[] array as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Date object as parameters
+  updateObject with column name &amp; Date object as parameters
+  updateObject with column position &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; TimeStamp object as parameters
+  updateObject with column name &amp; TimeStamp object as parameters
+  updateObject with column position &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Blob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Boolean object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Boolean object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+  updateObject with column name &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+Next datatype to test is BLOB(1k)
+  updateObject with column position &amp; Short object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Short object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Integer object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Integer object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Long object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Long object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; BigDecimal object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; BigDecimal object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Float object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Float object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Double object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Double object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; String object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; String object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; bytes[] array as parameters
+  updateObject with column name &amp; bytes[] array as parameters
+  updateObject with column position &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Clob object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Date object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Time object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; TimeStamp object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; Blob object as parameters
+  updateObject with column name &amp; Blob object as parameters
+  updateObject with column position &amp; Boolean object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column name &amp; Boolean object as parameters
+    Got expected exception : Illegal Conversion
+  updateObject with column position &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+  updateObject with column name &amp; null as parameters
+   Got expected exception:Invalid data conversion: Parameter instance null is invalid for requested conversion.
+Positive Test23 - Test cancelRowUpdates after updateXXX methods on all the supported sql datatypes
+  updateShort and then cancelRowUpdates
+  updateInt and then cancelRowUpdates
+  updateLong and then cancelRowUpdates
+  updateBigDecimal and then cancelRowUpdates
+  updateFloat and then cancelRowUpdates
+  updateDouble and then cancelRowUpdates
+  updateString and then cancelRowUpdates
+  updateAsciiStream and then cancelRowUpdates
+  updateCharacterStream and then cancelRowUpdates
+  updateByte and then cancelRowUpdates
+  updateBytes and then cancelRowUpdates
+  updateBinaryStream and then cancelRowUpdates
+  updateDate and then cancelRowUpdates
+  updateTime and then cancelRowUpdates
+  updateTimestamp and then cancelRowUpdates
+Positive Test24a - after updateXXX, try cancelRowUpdates and then deleteRow
+column 1 on this row before updateInt is 1
+column 1 on this row after updateInt is 234
+now cancelRowUpdates on the row
+Since after cancelRowUpdates(), ResultSet is positioned on the same row, getXXX will pass
+column 1 on this row after cancelRowUpdates is 1
+Since after cancelRowUpdates(), ResultSet is positioned on the same row, a deleteRow at this point will pass
+PASS : deleteRow passed as expected
+calling updateRow after deleteRow 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 Test25 - issue cancelRowUpdates without any updateXXX
+Positive Test26 - issue updateRow without any updateXXX will not move the resultset position
+Positive Test27 - issue updateXXX and then deleteRow
+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 to read at current cursor position.
+Positive Test28 - issue updateXXXs and then move off the row, the changes should be ignored
+	 C1,C2
+	 -- --
+	{1,aa                  }
+	{2,bb                  }
+	{3,cc                  }
+  column 1 on this row before updateInt is 1
+  Issue updateInt to change the column's value to 2345
+  Move to next row w/o issuing updateRow
+  Make sure that changes didn't make it to the database
+	 C1,C2
+	 -- --
+	{1,aa                  }
+	{2,bb                  }
+	{3,cc                  }
+Positive Test29 - issue multiple updateXXXs and then a updateRow
+	 C1,C2
+	 -- --
+	{1,aa                  }
+	{2,bb                  }
+	{3,cc                  }
+  column 1 on this row before updateInt is 1
+  Issue updateInt to change the column's value to 2345
+  Issue another updateInt on the same row and column to change the column's value to 9999
+  Issue updateString to change the column's value to 'xxxxxxx'
+  Now issue updateRow
+  Make sure that changes made it to the database correctly
+	 C1,C2
+	 -- --
+	{9999,xxxxxxx             }
+	{2,bb                  }
+	{3,cc                  }
+Positive Test30 - call updateXXX methods on only columns that correspond to a column in the table
+	 C1,C2
+	 -- --
+	{9999,xxxxxxx             }
+	{2,bb                  }
+	{3,cc                  }
+  Make sure that changes made it to the database correctly
+	 C1,C2
+	 -- --
+	{22,xxxxxxx             }
+	{2,bb                  }
+	{3,cc                  }
+Positive Test31a - case sensitive table and column names
+  Make sure that changes made it to the database correctly
+	 c11,C12
+	 --- ---
+	{11,22}
+Positive Test31b - table and column names with spaces in middle and end
+  Make sure for table " t 11 " that changes made it to the database correctly
+	  c 111 ,C112
+	 ------- ----
+	{11,22}
+Positive Test32 - call updateXXX methods on column that is not in for update columns list
+	 C1,C2
+	 -- --
+	{22,xxxxxxx             }
+	{2,bb                  }
+	{3,cc                  }
+SQL State : null
+Got expected exception Column not updatable
+updateRow passed
+  Make sure the contents of table are unchanged
+	 C1,C2
+	 -- --
+	{22,xxxxxxx             }
+	{2,bb                  }
+	{3,cc                  }
+Positive Test33 - try to update a table from another schema
+  contents of table t1 from current schema
+	 C1,C2
+	 -- --
+	{22,xxxxxxx             }
+	{2,bb                  }
+	{3,cc                  }
+  contents of table t1 from schema s2
+	 C1S2T1,C2S2T1,C3S2T2
+	 ------ ------ ------
+	{1,2,2.2}
+	{1,3,3.3}
+  Try to change contents of 2nd column of s2.t1 using updateRow
+  Make sure that changes made to the right table t1
+  contents of table t1 from current schema should have remained unchanged
+	 C1,C2
+	 -- --
+	{22,xxxxxxx             }
+	{2,bb                  }
+	{3,cc                  }
+  contents of table t1 from schema s2 should have changed
+	 C1S2T1,C2S2T1,C3S2T2
+	 ------ ------ ------
+	{1,1,2.2}
+	{1,1,3.3}
 Finished testing updateable resultsets
Index: java/testing/org/apache/derbyTesting/functionTests/master/updatableResultSet.out
===================================================================
--- java/testing/org/apache/derbyTesting/functionTests/master/updatableResultSet.out	(revision 171201)
+++ java/testing/org/apache/derbyTesting/functionTests/master/updatableResultSet.out	(working copy)
@@ -13,6 +13,8 @@
 SQL State : XJ083
 Got expected exception 'updateRow' not allowed because the ResultSet is not an updatable ResultSet. 
 Negative Test2 - request for scroll sensitive updatable resultset will give a read only scroll insensitive resultset
+WARNING 01J02: Scroll sensitive cursors are not currently implemented.
+WARNING 01J03: Scroll sensitive and scroll insensitive updatable ResultSets are not currently implemented.
 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
@@ -42,7 +44,7 @@
 Make sure that we got CONCUR_READ_ONLY? true
 Jira issue Derby-159 : Warnings raised by Derby are not getting passed to the Client in Network Server Mode
 Will see the warnings in embedded mode only
-Expected warnings on resultset = java.sql.SQLWarning: ResultSet not updatable. Query does not qualify to generate an updatable ResultSet.
+WARNING 01J06: ResultSet not updatable. Query does not qualify to generate an updatable ResultSet.
 Now attempting to send a delete on a sql with no FOR UPDATE clause.
 SQL State : XJ083
 Got expected exception 'deleteRow' not allowed because the ResultSet is not an updatable ResultSet. 
@@ -53,7 +55,7 @@
 Make sure that we got CONCUR_READ_ONLY? true
 Jira issue Derby-159 : Warnings raised by Derby are not getting passed to the Client in Network Server Mode
 Will see the warnings in embedded mode only
-Expected warnings on resultset = java.sql.SQLWarning: ResultSet not updatable. Query does not qualify to generate an updatable ResultSet.
+WARNING 01J06: ResultSet not updatable. Query does not qualify to generate an updatable ResultSet.
 Now attempting to send a delete on a sql with FOR READ ONLY clause.
 SQL State : XJ083
 Got expected exception 'deleteRow' not allowed because the ResultSet is not an updatable ResultSet. 
@@ -66,8 +68,7 @@
 SQL State : 24000
 Got expected exception Invalid cursor state - no current 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
+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 : 24000
 Got expected exception Invalid cursor state - no current row.
 ResultSet is positioned after the last row. attempt to deleteRow at this point should fail!
@@ -126,8 +127,7 @@
 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
+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 : 24000
 Got expected exception Invalid cursor state - no current row.
 calling deleteRow again w/o first positioning the ResultSet on the next row will fail
@@ -140,8 +140,7 @@
 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, ResultSet is positioned before the next row, getXXX will fail
-In Network Server mode, the ResultSet stays on the updated row after updateRow and hence no error for getXXX
+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 : 24000
 Got expected exception Invalid cursor state - no current row.
 calling updateRow again w/o first positioning the ResultSet on the next row will fail
@@ -150,11 +149,14 @@
 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 columns in the select list
+Will not work in network server mode because it derives the target table from the columns in the select list
 total number of rows in T1 
 	 1
 	 -
 	{3}
 column 1 on this row is 1
+PASS!!! passed in embedded mode
 total number of rows in T1 after one deleteRow is 
 	 1
 	 -
@@ -244,16 +246,24 @@
 	 --- ---
 	{123,1}
 	{123,1}
-Positive Test8a - change the name of the resultset and see if deleteRow still works
+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
-Positive Test8b - change the name of the resultset and see if updateRow still works
+PASS!!! passed in embedded mode
+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
-Positive Test9a - using correlation name for the table in the select sql is not a problem
+PASS!!! passed in embedded mode
+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
-Positive Test9b - using correlation name for updatable column name is not allowed
+PASS!!! passed in embedded mode
+Positive Test9b - using correlation name for updatable columns is not allowed.
 Table t1 has following rows
 	 C1,C2
 	 -- --
@@ -283,18 +293,9 @@
 	{11,aa                  }
 	{2,bb                  }
 	{3,cc                  }
-Positive Test9c - try to updateXXX on a readonly column. Should get error
-SQL State : 42X31
-Got expected exception Column 'C2' is not in FOR UPDATE list of cursor 'SQLCUR17'.
-Table t1 has following rows
-	 C1,C2
-	 -- --
-	{1,aa                  }
-	{2,bb                  }
-	{3,cc                  }
 Positive Test9d - try to updateXXX on a readonly column with correlation name. Should get error
 SQL State : 42X31
-Got expected exception Column 'COL2' is not in FOR UPDATE list of cursor 'SQLCUR18'.
+Got expected exception Column 'COL2' is not in FOR UPDATE list of cursor 'SQLCUR17'.
 Table t1 has following rows
 	 C1,C2
 	 -- --
@@ -305,7 +306,7 @@
 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 'SQLCUR20' is not on a row.
+Got expected exception Cursor 'SQLCUR19' 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 &gt; 1 will be ignored by updatable resultset. Same as updatable cursors
 Notice the Fetch Size in run time statistics output.
@@ -314,7 +315,7 @@
 Statement Name: 
 	null
 Statement Text: 
-	SELECT 1, 2 FROM t1 FOR UPDATE of c1
+	SELECT * FROM t1 FOR UPDATE of c1
 Parse Time: 0
 Bind Time: 0
 Optimize Time: 0
@@ -326,51 +327,25 @@
 Begin Execution Timestamp : null
 End Execution Timestamp : null
 Statement Execution Plan Text: 
-Project-Restrict ResultSet (3):
+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
-restriction = false
-projection = true
+Fetch Size = 1
 	constructor time (milliseconds) = 0
 	open time (milliseconds) = 0
 	next time (milliseconds) = 0
 	close time (milliseconds) = 0
-	restriction time (milliseconds) = 0
-	projection time (milliseconds) = 0
-Source result set:
-	Project-Restrict ResultSet (2):
-	Number of opens = 1
-	Rows seen = 0
-	Rows filtered = 0
-	restriction = false
-	projection = true
-		constructor time (milliseconds) = 0
-		open time (milliseconds) = 0
-		next time (milliseconds) = 0
-		close time (milliseconds) = 0
-		restriction time (milliseconds) = 0
-		projection time (milliseconds) = 0
-	Source result set:
-		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:
+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
@@ -2798,7 +2773,8 @@
 	{2,bb                  }
 	{3,cc                  }
 SQL State : 42X31
-Got expected exception Column 'C2' is not in FOR UPDATE list of cursor 'SQLCUR531'.
+Got expected exception Column 'C2' is not in FOR UPDATE list of cursor 'SQLCUR37'.
+updateRow passed
   Make sure the contents of table are unchanged
 	 C1,C2
 	 -- --
Index: java/testing/org/apache/derbyTesting/functionTests/master/jdk14/updatableResultSet.out
===================================================================
--- java/testing/org/apache/derbyTesting/functionTests/master/jdk14/updatableResultSet.out	(revision 171201)
+++ java/testing/org/apache/derbyTesting/functionTests/master/jdk14/updatableResultSet.out	(working copy)
@@ -13,6 +13,8 @@
 SQL State : XJ083
 Got expected exception 'updateRow' not allowed because the ResultSet is not an updatable ResultSet. 
 Negative Test2 - request for scroll sensitive updatable resultset will give a read only scroll insensitive resultset
+WARNING 01J02: Scroll sensitive cursors are not currently implemented.
+WARNING 01J03: Scroll sensitive and scroll insensitive updatable ResultSets are not currently implemented.
 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
@@ -42,7 +44,7 @@
 Make sure that we got CONCUR_READ_ONLY? true
 Jira issue Derby-159 : Warnings raised by Derby are not getting passed to the Client in Network Server Mode
 Will see the warnings in embedded mode only
-Expected warnings on resultset = java.sql.SQLWarning: ResultSet not updatable. Query does not qualify to generate an updatable ResultSet.
+WARNING 01J06: ResultSet not updatable. Query does not qualify to generate an updatable ResultSet.
 Now attempting to send a delete on a sql with no FOR UPDATE clause.
 SQL State : XJ083
 Got expected exception 'deleteRow' not allowed because the ResultSet is not an updatable ResultSet. 
@@ -53,7 +55,7 @@
 Make sure that we got CONCUR_READ_ONLY? true
 Jira issue Derby-159 : Warnings raised by Derby are not getting passed to the Client in Network Server Mode
 Will see the warnings in embedded mode only
-Expected warnings on resultset = java.sql.SQLWarning: ResultSet not updatable. Query does not qualify to generate an updatable ResultSet.
+WARNING 01J06: ResultSet not updatable. Query does not qualify to generate an updatable ResultSet.
 Now attempting to send a delete on a sql with FOR READ ONLY clause.
 SQL State : XJ083
 Got expected exception 'deleteRow' not allowed because the ResultSet is not an updatable ResultSet. 
@@ -66,8 +68,7 @@
 SQL State : 24000
 Got expected exception Invalid cursor state - no current 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
+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 : 24000
 Got expected exception Invalid cursor state - no current row.
 ResultSet is positioned after the last row. attempt to deleteRow at this point should fail!
@@ -126,8 +127,7 @@
 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
+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 : 24000
 Got expected exception Invalid cursor state - no current row.
 calling deleteRow again w/o first positioning the ResultSet on the next row will fail
@@ -140,8 +140,7 @@
 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, ResultSet is positioned before the next row, getXXX will fail
-In Network Server mode, the ResultSet stays on the updated row after updateRow and hence no error for getXXX
+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 : 24000
 Got expected exception Invalid cursor state - no current row.
 calling updateRow again w/o first positioning the ResultSet on the next row will fail
@@ -150,11 +149,14 @@
 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 columns in the select list
+Will not work in network server mode because it derives the target table from the columns in the select list
 total number of rows in T1 
 	 1
 	 -
 	{3}
 column 1 on this row is 1
+PASS!!! passed in embedded mode
 total number of rows in T1 after one deleteRow is 
 	 1
 	 -
@@ -244,16 +246,24 @@
 	 --- ---
 	{123,1}
 	{123,1}
-Positive Test8a - change the name of the resultset and see if deleteRow still works
+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
-Positive Test8b - change the name of the resultset and see if updateRow still works
+PASS!!! passed in embedded mode
+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
-Positive Test9a - using correlation name for the table in the select sql is not a problem
+PASS!!! passed in embedded mode
+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
-Positive Test9b - using correlation name for updatable column name is not allowed
+PASS!!! passed in embedded mode
+Positive Test9b - using correlation name for updatable columns is not allowed.
 Table t1 has following rows
 	 C1,C2
 	 -- --
@@ -283,18 +293,9 @@
 	{11,aa                  }
 	{2,bb                  }
 	{3,cc                  }
-Positive Test9c - try to updateXXX on a readonly column. Should get error
-SQL State : 42X31
-Got expected exception Column 'C2' is not in FOR UPDATE list of cursor 'SQLCUR17'.
-Table t1 has following rows
-	 C1,C2
-	 -- --
-	{1,aa                  }
-	{2,bb                  }
-	{3,cc                  }
 Positive Test9d - try to updateXXX on a readonly column with correlation name. Should get error
 SQL State : 42X31
-Got expected exception Column 'COL2' is not in FOR UPDATE list of cursor 'SQLCUR18'.
+Got expected exception Column 'COL2' is not in FOR UPDATE list of cursor 'SQLCUR17'.
 Table t1 has following rows
 	 C1,C2
 	 -- --
@@ -305,7 +306,7 @@
 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 'SQLCUR20' is not on a row.
+Got expected exception Cursor 'SQLCUR19' 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 &gt; 1 will be ignored by updatable resultset. Same as updatable cursors
 Notice the Fetch Size in run time statistics output.
@@ -314,7 +315,7 @@
 Statement Name: 
 	null
 Statement Text: 
-	SELECT 1, 2 FROM t1 FOR UPDATE of c1
+	SELECT * FROM t1 FOR UPDATE of c1
 Parse Time: 0
 Bind Time: 0
 Optimize Time: 0
@@ -326,51 +327,25 @@
 Begin Execution Timestamp : null
 End Execution Timestamp : null
 Statement Execution Plan Text: 
-Project-Restrict ResultSet (3):
+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
-restriction = false
-projection = true
+Fetch Size = 1
 	constructor time (milliseconds) = 0
 	open time (milliseconds) = 0
 	next time (milliseconds) = 0
 	close time (milliseconds) = 0
-	restriction time (milliseconds) = 0
-	projection time (milliseconds) = 0
-Source result set:
-	Project-Restrict ResultSet (2):
-	Number of opens = 1
-	Rows seen = 0
-	Rows filtered = 0
-	restriction = false
-	projection = true
-		constructor time (milliseconds) = 0
-		open time (milliseconds) = 0
-		next time (milliseconds) = 0
-		close time (milliseconds) = 0
-		restriction time (milliseconds) = 0
-		projection time (milliseconds) = 0
-	Source result set:
-		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:
+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
@@ -3072,7 +3047,8 @@
 	{2,bb                  }
 	{3,cc                  }
 SQL State : 42X31
-Got expected exception Column 'C2' is not in FOR UPDATE list of cursor 'SQLCUR539'.
+Got expected exception Column 'C2' is not in FOR UPDATE list of cursor 'SQLCUR37'.
+updateRow passed
   Make sure the contents of table are unchanged
 	 C1,C2
 	 -- --
Index: java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude
===================================================================
--- java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude	(revision 171201)
+++ java/testing/org/apache/derbyTesting/functionTests/suites/DerbyNet.exclude	(working copy)
@@ -3,8 +3,10 @@
 # excluding batchUpdate.java for it hits a problem in networkserver ('beetle' 5561)
 # excluding statementJdbc20.java because this tests fetch_reverse throughout the test
 # excluding jdbcapi/testRelative.java because this is a new test contributed by Shreyas Kaushik and needs to be debugged with JCC  in order to get it running with network server
+# excluding lang/updatableResultSet.java because changes are required in JCC Driver for this test to run correctly
 jdbcapi/resultsetStream.java
 lang/scrollCursors2.java
 jdbcapi/batchUpdate.java
 jdbcapi/statementJdbc20.java
 jdbcapi/testRelative.java
+lang/updatableResultSet.java
Index: java/client/org/apache/derby/client/am/ResultSet.java
===================================================================
--- java/client/org/apache/derby/client/am/ResultSet.java	(revision 171201)
+++ java/client/org/apache/derby/client/am/ResultSet.java	(working copy)
@@ -2368,43 +2368,75 @@
             if (agent_.loggingEnabled()) {
                 agent_.logWriter_.traceEntry(this, "updateRow");
             }
-            updateRowX();
+            //If updateXXX were issued on the row before updateRow, then
+            //position the ResultSet to right before the next row after updateRow
+            if (updateRowX())
+                isValidCursorPosition_ = false;
         }
     }
 
-    private void updateRowX() throws java.sql.SQLException {
+    //if no updateXXX were issued before this updateRow, then return false
+    private boolean updateRowX() throws java.sql.SQLException {
         checkForClosedResultSet();
         if (isOnInsertRow_ || resultSetConcurrency_ == java.sql.ResultSet.CONCUR_READ_ONLY) {
             throw new SqlException(agent_.logWriter_, "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.");
         }
 
-        // No-op if none of the columns were updated and updateRow() is called, just return.
+        //if not on a valid row, then do not accept updateXXX calls
+        if (!isValidCursorPosition_)
+            throw new SqlException(agent_.logWriter_, "Invalid operation to " +
+                    "update at current cursor position");
+
+        // If no updateXXX has been called on this ResultSet object, then
+        // updatedColumns_ will be null and hence no action required
         if (updatedColumns_ == null) {
-            return;
+            return false;
         }
 
-        if (preparedStatementForUpdate_ == null) {
-            getPreparedStatementForUpdate();
+        // updateXXX has been called on this ResultSet object, but check if it
+        // has been called on the current row. If no column got updated on this
+        // current row, then just return.
+        boolean didAnyColumnGetUpdated = false;
+        for (int i=0; i &lt; updatedColumns_.length; i++) {
+            if (columnUpdated_[i]) {
+                didAnyColumnGetUpdated = true;
+                break;
+            }
         }
+        if (didAnyColumnGetUpdated == false)
+            return false;
 
+        // User might not be updating all the updatable columns selected in the
+        // select sql and hence every updateRow on the same ResultSet can be
+        // potentially different than the previous one. Because of that, we
+        // should get a new prepared statement to do updates every time
+        getPreparedStatementForUpdate();
+
         // build the inputs array for the prepared statement for update
+        int paramNumber = 0;
         for (int i = 0; i &lt; updatedColumns_.length; i++) {
             if (resultSetMetaData_.sqlxUpdatable_[i] == 1) {
+                // Since user may choose not to update all the columns in the
+                // select list, check first if the column has been updated
+                if (columnUpdated_[i] == false)
+                    continue;
+                paramNumber++;
+
                 // column is updated either if the updatedColumns_ entry is not null,
                 // or if the updatedColumns_ entry is null, but columnUpdated_ boolean is
                 // set to true, which means columns is updated to a null.
                 if (updatedColumns_[i] != null ||
                         (updatedColumns_[i] == null &amp;&amp; columnUpdated_[i])) {
-                    preparedStatementForUpdate_.setInput(i + 1, updatedColumns_[i]);
+                    preparedStatementForUpdate_.setInput(paramNumber, updatedColumns_[i]);
                 } else {
                     // Check if the original column is null.  Calling CrossConverters.setObject on a null
                     // column causes "Data Conversion" Exception.
                     Object originalObj = getObject(i + 1);
                     if (originalObj == null) {
-                        preparedStatementForUpdate_.setInput(i + 1, null);
+                        preparedStatementForUpdate_.setInput(paramNumber, null);
                     } else {
-                        preparedStatementForUpdate_.setInput(i + 1, agent_.crossConverters_.setObject(resultSetMetaData_.types_[i], originalObj));
+                        preparedStatementForUpdate_.setInput(paramNumber, agent_.crossConverters_.setObject(resultSetMetaData_.types_[i], originalObj));
                     }
                 }
             }
@@ -2423,6 +2455,7 @@
             cancelRowUpdates();
             throw e;
         }
+        return true;
     }
 
     public void deleteRow() throws java.sql.SQLException {
@@ -2431,6 +2464,10 @@
                 agent_.logWriter_.traceEntry(this, "deleteRow");
             }
             deleteRowX();
+            //the cursor is not positioned on the deleted row after deleteRow.
+            //User needs to issue ResultSet.next to reposition the ResultSet
+            //on a valid row
+            isValidCursorPosition_ = false;
         }
     }
 
@@ -2502,6 +2539,11 @@
                         "row or if this ResultSet object has a concurrency of CONCUR_READ_ONLY.");
             }
 
+            // if not on a valid row, then do not accept cancelRowUpdates call
+            if (!isValidCursorPosition_)
+                throw new SqlException(agent_.logWriter_, "Invalid operation " +
+                        "at current cursor position.");
+
             // if updateRow() has already been called, then cancelRowUpdates should have
             // no effect.  updateRowCalled_ is reset to false as soon as the cursor moves to a new row.
             if (!updateRowCalled_) {
@@ -3041,8 +3083,6 @@
         boolean foundOneUpdatedColumnAlready = false;
         String updateString = "UPDATE " + getTableName() + " SET ";
 
-        // The update tablename ... where current of cursorname for Cloudscape has
-        // to provide columns as columnname1 = ?, columnname2 = ?
         for (column = 1; column &lt;= resultSetMetaData_.columns_; column++) {
             if (columnUpdated_[column - 1]) {
                 if (foundOneUpdatedColumnAlready) {
@@ -3069,8 +3109,8 @@
     private String buildDeleteString() throws SqlException {
         String deleteString = "DELETE FROM ";
 
-        // build the update string using the server's cursor name
-        deleteString += (getTableName() + " WHERE CURRENT OF " + getServerCursorName());
+        // build the delete string using the server's cursor name
+        deleteString += (getTableName() + " WHERE CURRENT OF \"" + getServerCursorName() + "\"");
 
         if (isRowsetCursor_) {
             deleteString += " FOR ROW ? OF ROWSET";
@@ -3079,17 +3119,41 @@
         return deleteString;
     }
 
-    private String getTableName() {
+    //Go through all the columns in the select list to see if we can find a
+    //base table column and use that column's metadata to get the table name
+    //But, it is possible to have a sql of the form
+    //select 1,2 from t1 for update
+    //This sql will not be a good candidate for updateXXX calls(both in embedded
+    //and Network Server mode) since there is no updatable column in the select
+    //list. But a user can use a sql like that to issue deleteRow. In Network
+    //Server mode though, this sql will fail for deleteRow because none of the
+    //columns are from base table and w/o a base table column, there is no way
+    //to find the table name for delete
+    private String getTableName() throws SqlException {
         String tableName = "";
-        if (resultSetMetaData_.sqlxRdbnam_[0] != null &amp;&amp;
-                !resultSetMetaData_.sqlxRdbnam_[0].equals(""))      // catalog
+        int baseTableColumn = 0;
+        int totalColumns = resultSetMetaData_.getColumnCount();
+        for (; baseTableColumn &lt; totalColumns; baseTableColumn++) {
+            if (resultSetMetaData_.sqlxSchema_[baseTableColumn] != null)
+                break;
+        }
+
+        //if following true, then there are no base table columns in select list
+        if (baseTableColumn == totalColumns)
+            baseTableColumn = 0;
+
+        if (resultSetMetaData_.sqlxRdbnam_[baseTableColumn] != null &amp;&amp;
+                !resultSetMetaData_.sqlxRdbnam_[baseTableColumn].equals(""))      // catalog
         {
-            tableName += resultSetMetaData_.sqlxRdbnam_[0].trim() + ".";
+            tableName += "\"" + resultSetMetaData_.sqlxRdbnam_[baseTableColumn] + "\".";
         }
-        if (!resultSetMetaData_.sqlxSchema_[0].equals("")) {
-            tableName += resultSetMetaData_.sqlxSchema_[0].trim() + ".";
+        //dervied column like select 2 from t1, has null schema and table name
+        if (resultSetMetaData_.sqlxSchema_[baseTableColumn] != null &amp;&amp; !resultSetMetaData_.sqlxSchema_[baseTableColumn].equals("")) {
+            tableName += "\"" + resultSetMetaData_.sqlxSchema_[baseTableColumn] + "\".";
         }
-        tableName += resultSetMetaData_.sqlxBasename_[0].trim();
+        if (resultSetMetaData_.sqlxBasename_[baseTableColumn] != null) {
+            tableName += "\"" + resultSetMetaData_.sqlxBasename_[baseTableColumn] + "\"";
+        }
         return tableName;
     }
 
@@ -3157,6 +3221,11 @@
         if (resultSetMetaData_.sqlxUpdatable_ == null || resultSetMetaData_.sqlxUpdatable_[column - 1] != 1) {
             throw new SqlException(agent_.logWriter_, "Column not updatable");
         }
+
+        //if not on a valid row, then do not accept updateXXX calls
+        if (!isValidCursorPosition_)
+            throw new SqlException(agent_.logWriter_, "Invalid operation to " +
+                    "update at current cursor position");
     }
 
     final void checkForValidColumnIndex(int column) throws SqlException {
  </pre>
</blockquote>
</body>
</html>


Mime
View raw message