• Vincent Pelletier's avatar
    Use value_serial for undo support. · 83c02447
    Vincent Pelletier authored
    This mimics what FileStorage uses (file offsets) but in a relational manner.
    This offloads decision of the ability to undo a transaction to storages,
    avoiding 3 data loads for each object in the transaction at client side.
    This also makes Neo refuse to undo transactions where object data would happen
    to be equal between current value and undone value.
    Finally, this is required to make database pack work properly (namely, it
    prevents loosing objects which are orphans at pack TID, but are reachable
    after it thanks to a transactional undo).
    
    Also, extend storage's transaction manager so database adapter can fetch data
    already sent by client in the same transaction, so it can undo multiple
    transactions at once. Requires making object lock re-entrant (done in this
    commit).
    
    git-svn-id: https://svn.erp5.org/repos/neo/trunk@1978 71dcc9de-d417-0410-9af5-da40c76e7ee4
    83c02447
client.py 4.62 KB