db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bryan Pendleton (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-4282) strange behavior with the "update ... where current of c1" in the CheckConstraintTest
Date Tue, 11 Aug 2009 14:12:14 GMT

    [ https://issues.apache.org/jira/browse/DERBY-4282?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12741886#action_12741886
] 

Bryan Pendleton commented on DERBY-4282:
----------------------------------------

The important part of the test is to verify that the check constraint is enforced
properly for the "where current of" style of  the update statement when the cursor is open.

So we don't need to call JDBC.assertFullResultSet on the SELECT statement, I agree.
The only reason we are issuing the SELECT statement and calling rs1.next() is to
ensure that the cursor is opened.

So your technique looks fine to me.

Is that the only remaining issue for this patch? 

> strange behavior with the "update ... where current of c1" in the CheckConstraintTest
> -------------------------------------------------------------------------------------
>
>                 Key: DERBY-4282
>                 URL: https://issues.apache.org/jira/browse/DERBY-4282
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.0.2.1, 10.1.3.1, 10.2.2.0, 10.3.3.0, 10.4.2.0, 10.5.1.1
>            Reporter: Eranda Sooriyabandara
>            Assignee: Eranda Sooriyabandara
>            Priority: Critical
>             Fix For: 10.5.1.1
>
>         Attachments: cons.java, DERBY4282.diff, DERBY4282.diff
>
>
> import java.sql.*;
> public class cons
> {
>    public static void main(String []args)
>        throws Exception
>    {
>        Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
>        Connection conn =
>            DriverManager.getConnection("jdbc:derby:testdb;create=true");
>        Statement st = conn.createStatement();
>        st.executeUpdate(
>            "create table t1(c1 int, c2 int, constraint ck1 "
>            + "check(c1 = c2), constraint ck2 check(c2=c1))");
>        st.executeUpdate("insert into t1 values (1, 1),(2, 2),(3, 3),(4, 4)");
>        Statement st1=conn.createStatement();
>        st1.setCursorName("c1");
>        ResultSet rs = st1.executeQuery("select * from t1 for update");
>        rs.next();
>        st.executeUpdate("update t1 set c1 = c1 where current of \"c1\"");
>    }
> }
> Exception in thread "main" java.sql.SQLException: Column 'C2' is either not in any 
> table in the FROM list or appears within a join specification and is outside
> the scope of the join specification or appears in a HAVING clause and is not in
> the GROUP BY list. If this is a CREATE or ALTER TABLE  statement then 'C2' is not
>  a column in the target table.
>        at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExc
> eptionFactory.java:45)
>        at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java:201)
>        at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException
> (TransactionResourceImpl.java:391)
>        at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Tr
> ansactionResourceImpl.java:346)
>        at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConne
> ction.java:2201)
>        at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Connection
> Child.java:81)
>        at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java
> :614)
>        at org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(EmbedStatemen
> t.java:175)
>        at cons.main(cons.java:25)
> Caused by: ERROR 42X04: Column 'C2' is either not in any table in the FROM list
> or appears within a join specification and is outside the scope of the join spec
> - Show quoted text -
>        ... 2 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message