[ http://issues.apache.org/jira/browse/DERBY-1087?page=all ]

Fernanda Pizzorno updated DERBY-1087:
-------------------------------------

    Attachment: derby-1087v2.diff
                derby-1087v2.stat

Patch derby-1087v2.diff addresses the review comments.

1. I changed java/engine/org/apache/derby/impl/sql/compile/FromBaseTable.java 
to use a call to cursorTargetTable() method instead of using the 
cursorTargetTable attribute directly. I chose not to use forUpdate() as 
suggested because it is too generic.

2. Removed the test from derbynetclientmats.

3. Made 4 tests methods and added javadoc to the 4 of them.

_______________________
Andreas wrote:
Review:

The patch looks good, here are some minor comments:

1. In java/engine/org/apache/derby/impl/sql/compile/FromBaseTable.java, 
consider using a call to forUpdate() method instead of using the 
cursorTargetTable attribute directly.

2. Testing: I do not think the testcase should be added to derbynetclientmats, 
since it is already added to jdbcapi (it is not really a network client change)

3. Testing: Consider making 4 test methods instead of testing all variants in 
the same testmethod. Now, the test fails at the first case, and I do not get to 
see the results of the other variants. Also please add javadoc to all testcase 
methods. 
_______________________

> Updatable result sets behave different depending on the type of query used to 
> generate the result set
> -----------------------------------------------------------------------------------------------------
>
>          Key: DERBY-1087
>          URL: http://issues.apache.org/jira/browse/DERBY-1087
>      Project: Derby
>         Type: Bug

>   Components: JDBC, SQL
>     Reporter: Fernanda Pizzorno
>     Assignee: Fernanda Pizzorno
>  Attachments: derby-1087.diff, derby-1087.stat, derby-1087v2.diff, 
> derby-1087v2.stat
>
> Running the following code with different queries in the first statement 
> produces different results.
> Where t1 has two columns: "a" of type int is the primary key, and "b" of type 
> varchar(50); and contains 10 rows of data.
>             Statement st1 = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, 
>                     ResultSet.CONCUR_UPDATABLE);
>             Statement st2 = conn.createStatement();
>             
>             ResultSet rs = st1.executeQuery("SELECT a, b FROM t1");
>             rs.next();
>             rs.next();
>             st2.executeUpdate("UPDATE t1 SET a = a + 20 WHERE a = " + 
>                     rs.getInt(1));
>             try {
>                 rs.updateInt(1, rs.getInt(1) + 30);
>                 rs.updateRow();
>             } catch (SQLException se) {
>                 System.out.println(se.getMessage());
>             }
>             rs.close();
>             
>             rs = st2.executeQuery("SELECT a FROM t1");
>             while(rs.next()) {
>                 System.out.println("A = " + rs.getInt(1));
>             }
>             rs.close();
>             
>             st2.close();
>             st1.close();
> If the first query is "select a, b from t1", the output will be:
> A = 1
> A = 3
> A = 4
> A = 5
> A = 6
> A = 7
> A = 8
> A = 9
> A = 10
> A = 32
> If the first query is "SELECT a, b FROM t1 WHERE a <= 5", the output will be:
> Cursor 'SQLCUR0' is not on a row.
> A = 1
> A = 3
> A = 4
> A = 5
> A = 6
> A = 7
> A = 8
> A = 9
> A = 10
> A = 22
> If the first query is "SELECT a FROM t1", the output will be:
> Cursor 'SQLCUR0' is not on a row.
> A = 1
> A = 3
> A = 4
> A = 5
> A = 6
> A = 7
> A = 8
> A = 9
> A = 10
> A = 22

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to