ERROR: commutator operator - is already the commutator of operator +

Started by shohorab hossainover 1 year ago2 messagesbugs
Jump to latest
#1shohorab hossain
shohorab23@gmail.com

Whenever I try to restore a dump database backup to PostgreSQL version
17.1, I receive the following error log. The dump is from PostgreSQL
version 15.8.

What is this error and how can I fix it?.
pg_restore: error: could not execute query: ERROR: commutator operator - is
already the commutator of operator +

Command was: CREATE OPERATOR adempiere.- (

FUNCTION = adempiere.subtractdays,

LEFTARG = interval,

RIGHTARG = numeric,

COMMUTATOR = OPERATOR(adempiere.-)

);

pg_restore: error: could not execute query: ERROR: operator does not exist:
interval adempiere.- numeric

Command was: ALTER OPERATOR adempiere.- (interval, numeric) OWNER TO
adempiere;

With Best Regards

Shohorab Hossain

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: shohorab hossain (#1)
Re: ERROR: commutator operator - is already the commutator of operator +

shohorab hossain <shohorab23@gmail.com> writes:

Whenever I try to restore a dump database backup to PostgreSQL version
17.1, I receive the following error log. The dump is from PostgreSQL
version 15.8.

What is this error and how can I fix it?.
pg_restore: error: could not execute query: ERROR: commutator operator - is
already the commutator of operator +

v17 is complaining about a logically-inconsistent situation that
earlier versions did not notice. You have interval - numeric
claiming to be the commutator of numeric - interval, which seems
fine --- but according to this error message, numeric - interval
is claiming to be the commutator of interval + numeric. If these
operators have anything like the semantics their names suggest,
that commutator linkage is a bug in the operator's definition.
You need to get rid of it, or better adjust it to point to the
right operator, ie interval - numeric.

We don't have any syntax for adjusting the commutator link
once set, but maybe you could manually edit the dump file.

regards, tom lane