Project

General

Profile

Bug #1522

[Wt 3.2.2] [Postgresql] statement not recycled after exception while .remove()

Added by Thomas Saquet about 10 years ago. Updated almost 10 years ago.

Status:
Feedback
Priority:
Normal
Assignee:
Target version:
-
Start date:
11/14/2012
Due date:
% Done:

0%

Estimated time:

Description

Hello,

It seems that a previous bug still exists somewhere else. When I use .remove() on a Dbo::ptr, if an exception occurs the statement is not recycled and it is re-executed at the next call to the database. The only way to get rid of it is to refresh the page.

It happens in that case :

try
{
    Wt::Dbo::Transaction transaction(*session);
    Wt::Dbo::ptr<ObjectToFind> ptdObjectToDelete = session->find<ObjectToFind>().where("\"OBJ_ID\" = ?").bind(id);
    ptdObjectToDelete.remove();
    transaction.commit();
}
catch (Wt::Dbo::Exception e)
{
    Wt::log("error") << "[MyClass : ] " << e.what();
}

The same query with .execute() works fine.

Regards,

Thomas

#1

Updated by Koen Deforche almost 10 years ago

  • Status changed from New to Feedback
  • Assignee set to Koen Deforche

Hey,

This is something different though. When a transaction is being rolled back, then the objects which required persistence are kept at their 'dirty' state.

If you want to discard changes, then you should use ptr.reread() or session.rereadAll() (although I just now fixed a bug in that function).

Regards,

koen

Also available in: Atom PDF