From: | Rui DeSousa <rui(dot)desousa(at)icloud(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Alexander Lipatov <lipatov(at)mindbox(dot)cloud>, pgsql-admin(at)postgresql(dot)org |
Subject: | Re: Custom ordering operator for type xid |
Date: | 2024-06-17 15:33:17 |
Message-ID: | 8A9CD524-7C29-4665-BCFB-10C4B8A8CD94@icloud.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin |
> On Jun 17, 2024, at 11:03 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>
> Alexander Lipatov <lipatov(at)mindbox(dot)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.
From | Date | Subject | |
---|---|---|---|
Next Message | Alexander Lipatov | 2024-06-17 15:40:38 | Re: Custom ordering operator for type xid |
Previous Message | Tom Lane | 2024-06-17 15:03:58 | Re: Custom ordering operator for type xid |