Uploaded image for project: 'Torque'
  1. Torque
  2. TORQUE-113

doDelete with invalid column should throw exception, not delete all rows

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.3
    • 4.0-beta1
    • Runtime
    • None

    Description

      The following (incorrect) client code should cause an exception to be thrown. Instead of an exception, all rows in table T1 are deleted.

      T1Peer.doDelete(new Criteria().add(T2Peer.COL, 2));
      

      This code appeared in a project I am working on. The intent was to delete rows from table T2.

      Before the fix for TORQUE-93, this code had the intended effect becaue T1Peer.doDelete(criteria) just passed the criteria object to BasePeer.doDelete(criteria). Since the only reference BasePeer had to a table was table T2 in the criteria, only rows in table T2 were deleted.

      Now that T1Peer.doDelete(criteria) calls BasePeer.doDelete(criteria, TABLE_NAME) instead, the test if (crit.containsKey(key)) in BasePeer.processTables() always fails. This leads to an empty where clause, causing all rows in table T1 to be deleted.

      Expect: All Criterion objects in a Criteria should be used in the final where clause. If not, an exception should be thrown.

      Attachments

        Activity

          People

            tfischer Thomas Fox
            jzinn Julian Zinn
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: