Обсуждение: pg_dump: WARNING: could not find operator

Поиск
Список
Период
Сортировка

pg_dump: WARNING: could not find operator

От
Ed Sabol
Дата:
Hello! I'm in the process of migrating some 10.23 database instances to 15.3, and I'm getting these warnings when doing
apg_dumpall on one of the servers: 

pg_dump: WARNING: could not find operator with OID 2234078
pg_dump: WARNING: could not find operator with OID 2234199

Is this indicative of a problem that I should fix before running pg_upgrade? If so, how?

And how do I find out what these OIDs are and what's referencing them?

Thanks,
Ed




Re: pg_dump: WARNING: could not find operator

От
Tom Lane
Дата:
Ed Sabol <edwardjsabol@gmail.com> writes:
> Hello! I'm in the process of migrating some 10.23 database instances to 15.3, and I'm getting these warnings when
doinga pg_dumpall on one of the servers: 
> pg_dump: WARNING: could not find operator with OID 2234078
> pg_dump: WARNING: could not find operator with OID 2234199

> Is this indicative of a problem that I should fix before running pg_upgrade? If so, how?

> And how do I find out what these OIDs are and what's referencing them?

From a quick look at the pg_dump source code, this is indicative of
dangling links in either pg_operator.oprcom, pg_operator.oprnegate,
or pg_aggregate.aggsortop.  With no context it's difficult to guess
how they got there.  While you could clean it up manually, pg_dump
is just going to omit those clauses from its output, so there's no
real need to do anything if that outcome is sufficient.

            regards, tom lane



Re: pg_dump: WARNING: could not find operator

От
Ed Sabol
Дата:
On Jul 11, 2023, at 6:24 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> While you could clean it up manually, pg_dump
> is just going to omit those clauses from its output, so there's no
> real need to do anything if that outcome is sufficient.

I'm mainly concerned about the pg_upgrade going smoothly. I'd like to minimize downtime as much as possible. I was
planningto use "pg_upgrade --link", if it matters. 




Re: pg_dump: WARNING: could not find operator

От
Laurenz Albe
Дата:
On Tue, 2023-07-11 at 18:30 -0400, Ed Sabol wrote:
> On Jul 11, 2023, at 6:24 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> > While you could clean it up manually, pg_dump
> > is just going to omit those clauses from its output, so there's no
> > real need to do anything if that outcome is sufficient.
>
> I'm mainly concerned about the pg_upgrade going smoothly. I'd like to minimize
> downtime as much as possible. I was planning to use "pg_upgrade --link", if it matters.

Then you should test the upgrade first.

To find out which operators are causing the trouble, you can run queries like

SELECT * FROM pg_operator
WHERE oprcom IN (2234078, 2234199)
   OR oprnegate IN (2234078, 2234199);

and test everything that uses these broken operators particularly well.

Yours,
Laurenz Albe



Re: pg_dump: WARNING: could not find operator

От
Ed Sabol
Дата:
On Jul 12, 2023, at 2:26 AM, Laurenz Albe <laurenz.albe@cybertec.at> wrote:
> To find out which operators are causing the trouble, you can run queries like
>
> SELECT * FROM pg_operator
> WHERE oprcom IN (2234078, 2234199)
>   OR oprnegate IN (2234078, 2234199);
>
> and test everything that uses these broken operators particularly well.

OK, I found them in one of our databases. Based on the oprcode values, they seem to be related to an extension we have
installed(pgsphere, in case anyone is curious). Probably from an old version of the extension, I'm guessing, as the
currentpgsphere passes all regression testing. 

So how do I clean up these dangling operators? Is it as easy as the following?

DELETE FROM pg_operator
WHERE oprcom IN (2234078, 2234199)
  OR oprnegate IN (2234078, 2234199);

Thanks,
Ed




Re: pg_dump: WARNING: could not find operator

От
Ron
Дата:
On 7/12/23 22:04, Ed Sabol wrote:
> On Jul 12, 2023, at 2:26 AM, Laurenz Albe <laurenz.albe@cybertec.at> wrote:
>> To find out which operators are causing the trouble, you can run queries like
>>
>> SELECT * FROM pg_operator
>> WHERE oprcom IN (2234078, 2234199)
>>    OR oprnegate IN (2234078, 2234199);
>>
>> and test everything that uses these broken operators particularly well.
> OK, I found them in one of our databases. Based on the oprcode values, they seem to be related to an extension we
haveinstalled (pgsphere, in case anyone is curious). Probably from an old version of the extension, I'm guessing, as
thecurrent pgsphere passes all regression testing.
 
>
> So how do I clean up these dangling operators? Is it as easy as the following?
>
> DELETE FROM pg_operator
> WHERE oprcom IN (2234078, 2234199)
>    OR oprnegate IN (2234078, 2234199);

Will they automagically disappear when you restore the pg_dump?

-- 
Born in Arizona, moved to Babylonia.



Re: pg_dump: WARNING: could not find operator

От
"Edward J. Sabol"
Дата:
On Jul 12, 2023, at 11:08 PM, Ron <ronljohnsonjr@gmail.com> wrote:
> Will they automagically disappear when you restore the pg_dump?

Yeah, that's what Tom Lane said, but I'm not planning to restore the pg_dump (unless something catastrophic happens).
I'mplanning to use "pg_upgrade --link". 

Thanks,
Ed





Re: pg_dump: WARNING: could not find operator

От
Tom Lane
Дата:
"Edward J. Sabol" <edwardjsabol@gmail.com> writes:
> On Jul 12, 2023, at 11:08 PM, Ron <ronljohnsonjr@gmail.com> wrote:
>> Will they automagically disappear when you restore the pg_dump?

> Yeah, that's what Tom Lane said, but I'm not planning to restore the pg_dump (unless something catastrophic happens).
I'mplanning to use "pg_upgrade --link". 

As far as catalog data is concerned, pg_upgrade is the same as
pg_dumpall + restore.

            regards, tom lane