pg.ddx.io  pgsql-admin@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Rui DeSousa <rui.desousa@icloud.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Alexander Lipatov <lipatov@mindbox.cloud>
Cc: pgsql-admin@postgresql.org
Subject: Re: Custom ordering operator for type xid
Date: Mon, 17 Jun 2024 11:33:17 -0400
Message-ID: <8A9CD524-7C29-4665-BCFB-10C4B8A8CD94@icloud.com> (raw)
In-Reply-To: <3179495.1718636638@sss.pgh.pa.us>
References: <2EA9BF93-EE2B-4B84-B21D-5EA86FA63913@mindbox.cloud>
	<3179495.1718636638@sss.pgh.pa.us>



> On Jun 17, 2024, at 11:03 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> 
> Alexander Lipatov <lipatov@mindbox.cloud> writes:
>> **Question**: Is it safe to create custom ordering operators for the `xid` type and a default operator class with these operators?
> 
> I wouldn't do it, mainly because the semantics of what you've written
> have nothing to do with the actual behavior of xids.  (The real
> comparison behavior is "circular", which can't be modeled as a total
> order, which is why there's not a built-in opclass already.)
> 
> What is that ORM doing with XIDs anyway, and is there a good reason
> not to run away screaming from such an ill-thought-out product?
> I don't believe for a minute that this is going to be the only
> semantic issue you'll run into with an ORM that thinks it knows
> how XIDs behave despite a clear lack of even the most minimal
> investigation into the question.
> 
> 			regards, tom lane
> 
> 


Assuming they are using it for opportunist locking.  I have use this method before but not with a system column.

i.e. 

1. Application fetches the record with an xmin of 55, no need to maintain an open transaction:  select xmin, * from table where id = 8;  
2. Application edits record
3. Application saves record:  update table set col1 = ‘x’ where id = 8 and xmin = 55;
4. If the record was updated by another session then xmin would be different, the save would fail by updating zero records, and user would have to reedit the record.

Not a fan of ORMs myself but I think opportunist locking has its place.






view thread (4+ messages)  latest in thread

Message-ID: <8A9CD524-7C29-4665-BCFB-10C4B8A8CD94@icloud.com>
Permalink:  ../8A9CD524-7C29-4665-BCFB-10C4B8A8CD94@icloud.com/
Also on:    postgresql.org/message-id/8A9CD524-7C29-4665-BCFB-10C4B8A8CD94@icloud.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-admin@postgresql.org
  Cc: rui.desousa@icloud.com, tgl@sss.pgh.pa.us, lipatov@mindbox.cloud
  Subject: Re: Custom ordering operator for type xid
  In-Reply-To: <8A9CD524-7C29-4665-BCFB-10C4B8A8CD94@icloud.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox