> 10.05.2014 15:30, Vlad Khorsun wrote:
>>      Here you wrong: if blob contents was not changed by update, there will 
>> be no new blob.
> 
>   Yes, and in this case blob cannot be garbage collected because next record 
> version 
> refers to it. No need to analyze whole versions chain (collect staying list) 
> - two these 
> versions are enough for decision making. (Actually, there must be three 
> versions for 
> analyze, but one of them may be missed if going version is on the end of 
> chain.)

    It is wrong for "lost update" scenario, which is allowed for read-committed 
transactions:

att1: start tx1, insert version1 (blob1), commit tx1

att1: start tx2 (read-committed), read version1 (blob1)

att2: start tx4, update version2 (blob2), commit tx4

att1: update version3 (blob1), commit tx2

    Here we have chain of versions:

version3 (tx2, blob1) -> version2 (tx4, blob2) -> version1 (tx1, blob1) 


Regards,
Vlad

------------------------------------------------------------------------------
Is your legacy SCM system holding you back? Join Perforce May 7 to find out:
• 3 signs your SCM is hindering your productivity
• Requirements for releasing software faster
• Expert tips and advice for migrating your SCM now
http://p.sf.net/sfu/perforce
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to