<div dir="ltr"><br /><div class="gmail_extra"><br /><div class="gmail_quote"><blockquote class="gmail_quote"
style="margin:00 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br /></span>Ah, you're missing how
commitsin ATX are expected to work. Let me<br /> illustrate:<br /><br /> X (<br /> Data write A1<br /> call
Y(<br/> Start ATX<br /> Data write B1<br /> Commit ATX<br /> )<br /> Data write A2<br />
Exception<br /> )<br /><br /> In this workflow, B1 would be committed and persistent. Neither A1 nor<br /> A2 would
becommitted, or visible to other users. Depending on what<br /> implementation we end up with, A1 might not even be
visibleto Y().<br /><br /></blockquote></div><br /></div><div class="gmail_extra">A1 should never be visible to Y(),
elsewe will end up with inconsistencies. E.g.<br /><br /></div><div class="gmail_extra">A1 is a primary key and B1
writesa foreign key referencing A1. Commit ATX, will not complain as it sees A1, but in case X rolls back, we may have
B1referencing nothing.<br /><br /></div><div class="gmail_extra">Am I missing something?<br clear="all" /></div><div
class="gmail_extra"><br/>-- <br /><div class="gmail_signature"><div dir="ltr">Best Wishes,<br />Ashutosh Bapat<br
/>EnterpriseDBCorporation<br />The Postgres Database Company<br /></div></div></div></div>