From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Tommy Pavlicek <tommypav122(at)gmail(dot)com> |
Cc: | Dagfinn Ilmari Mannsåker <ilmari(at)ilmari(dot)org>, pgsql-hackers(at)lists(dot)postgresql(dot)org, Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com>, jian(dot)universality(at)gmail(dot)com |
Subject: | Re: [PATCH] Extend ALTER OPERATOR to support adding commutator, negator, hashes, and merges |
Date: | 2023-10-10 20:32:07 |
Message-ID: | 447166.1696969927@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Tommy Pavlicek <tommypav122(at)gmail(dot)com> writes:
> I did notice one further potential bug. When creating an operator and
> adding a commutator, PostgreSQL only links the commutator back to the
> operator if the commutator has no commutator of its own, but the
> create operation succeeds regardless of whether this linkage happens.
> In other words, if A and B are a pair of commutators and one creates
> another operator, C, with A as its commutator, then C will link to A,
> but A will still link to B (and B to A). It's not clear to me if this
> in itself is a problem, but unless I've misunderstood something
> operator C must be the same as B so it implies an error by the user
> and there could also be issues if A was deleted since C would continue
> to refer to the deleted A.
Yeah, it'd make sense to tighten that up. Per the discussion so far,
we should not allow an operator's commutator/negator links to change
once set, so overwriting the existing link with a different value
would be wrong. But allowing creation of the new operator to proceed
with a different outcome than expected isn't good either. I think
we should start throwing an error for that.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | David Steele | 2023-10-10 21:06:45 | Re: The danger of deleting backup_label |
Previous Message | Tommy Pavlicek | 2023-10-10 20:12:50 | Re: [PATCH] Extend ALTER OPERATOR to support adding commutator, negator, hashes, and merges |