Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-4282

strange behavior with the "update ... where current of c1" in the CheckConstraintTest

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 10.0.2.1, 10.1.3.1, 10.2.2.0, 10.3.3.0, 10.4.2.0, 10.5.1.1
    • Fix Version/s: 10.5.3.2, 10.6.1.0
    • Component/s: SQL
    • Labels:
      None
    • Urgency:
      Normal
    • Issue & fix info:
      Newcomer, Repro attached

      Description

      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

        Attachments

        1. ASF.LICENSE.NOT.GRANTED--DERBY4282.diff
          5 kB
          Eranda Sooriyabandara
        2. ASF.LICENSE.NOT.GRANTED--DERBY4282.diff
          2 kB
          Eranda Sooriyabandara
        3. cons.java
          0.8 kB
          Bryan Pendleton

          Issue Links

            Activity

              People

              • Assignee:
                eranda Eranda Sooriyabandara
                Reporter:
                eranda Eranda Sooriyabandara
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: