[
https://issues.apache.org/jira/browse/DERBY-4282?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Bryan Pendleton resolved DERBY-4282.
------------------------------------
Resolution: Fixed
Fix Version/s: (was: 10.5.1.1)
10.6.0.0
I included the test case from the issue description into CheckConstraintTest,
because that
test case was very clear and simple and I wanted to preserve it in the test
suite. And I verified
that CheckConstraintTest fails as expected without the code patch to
ResultColumnList,
and succeeds once the code patch to ResultColumnList is applied.
I also ran a complete set of regression tests and didn't find any other
problems, and I have
committed the patch to svn as revision 803336.
Eranda, thanks very much for contributing this bug fix to Derby.
> 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.6.0.0
>
> 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.