[
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.