datajoint-python icon indicating copy to clipboard operation
datajoint-python copied to clipboard

make that table "delete" returns the count of deleted objects

Open jcouto opened this issue 1 year ago • 3 comments
trafficstars

Request to change the return behavior of "delete"

Problem

The table delete method returns the number of objects that fit the query as "delete_count". When the delete is aborted it returns a positive number.

Workaround

If inside the inherited delete method, check the len(self) to know if deleted.

Requirements

Return the number of deleted objects

Justification

This can be used to perform actions only if the objects were deleted

Related Errors

There are no errors but it is not intuitive that when no objects are deleted the function returns the number of objects that could have been deleted. :)

jcouto avatar Mar 19 '24 22:03 jcouto

I do not believe that the problem description is accurate. delete_count is returned by the database as the actual number of rows deleted when successful. If the delete is aborted, then no rows should be deleted. Deletes are atomic: all or none. I think the real issue is in the incorrect reporting of deleted records when the delete is rolled back. It should be set to zero.

dimitri-yatsenko avatar Mar 20 '24 16:03 dimitri-yatsenko

I agree, thanks.

jcouto avatar Mar 20 '24 16:03 jcouto