[ 
https://issues.apache.org/jira/browse/TORQUE-113?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12590465#action_12590465
 ] 

Brendan Miller commented on TORQUE-113:
---------------------------------------

For this reason, we *always* use the Peer class constants.  It is a good way to 
a) only have one string literal defined in the codebase for each column and b) 
a good way to let the compiler tell you when someone changed a column name in 
the schema, but didn't update code using the column names.

Nonetheless, it might be wise to add a note in some documentation somewhere 
about the behavior.  I do think that Criteria validation, if already being 
performed by ProcessTables should throw an Exception and refuse to delete 
records over deleting all records.

> doDelete with invalid column should throw exception, not delete all rows
> ------------------------------------------------------------------------
>
>                 Key: TORQUE-113
>                 URL: https://issues.apache.org/jira/browse/TORQUE-113
>             Project: Torque
>          Issue Type: Bug
>          Components: Runtime
>    Affects Versions: 3.3
>            Reporter: Julian Zinn
>             Fix For: 3.3, 4.0
>
>
> The following (incorrect) client code should cause an exception to be thrown. 
>  Instead of an exception, all rows in table T1 are deleted.
> {code}
> T1Peer.doDelete(new Criteria().add(T2Peer.COL, 2));
> {code}
> 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.

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


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to