Re: Cannot restore dump when using IS DISTINCT FROM on a HSTOREcolumn - Mailing list pgsql-general

From Adrian Klaver
Subject Re: Cannot restore dump when using IS DISTINCT FROM on a HSTOREcolumn
Date
Msg-id e6284cec-7c2d-950d-33e2-cdf7d4e9d9bc@aklaver.com
Whole thread Raw
In response to Cannot restore dump when using IS DISTINCT FROM on a HSTORE column  (Lele Gaifax <lele@metapensiero.it>)
List pgsql-general
On 9/5/19 7:16 AM, Lele Gaifax wrote:
> Hi all,
> 
> I'm hitting a problem very similar to the one described here[1]: one of my
> databases have the following trigger
> 
>     CREATE TRIGGER trg_dn_customer_contents_950_reset_usable
>       BEFORE UPDATE
>       ON dn.customer_contents
>       FOR EACH ROW
>           WHEN (OLD.usable IS NOT NULL AND OLD.usable = NEW.usable
>                 AND (OLD.customer_content_category_id IS DISTINCT FROM NEW.customer_content_category_id
>                      OR OLD.title IS DISTINCT FROM NEW.title
>                      OR OLD.summary IS DISTINCT FROM NEW.summary
>                      OR OLD.description IS DISTINCT FROM NEW.description
>                      OR OLD.active IS DISTINCT FROM NEW.active
>                      OR OLD.languages IS DISTINCT FROM NEW.languages
>                      OR OLD.address_id IS DISTINCT FROM NEW.address_id
>                      OR OLD.schedule IS DISTINCT FROM NEW.schedule
>                      OR OLD.price IS DISTINCT FROM NEW.price))
>           EXECUTE FUNCTION dn.reset_customer_content_usable()
> 
> where several of those columns are HSTOREs. Trying to restore a dump I get the
> same error: "ERROR:  operator does not exist: public.hstore = public.hstore".
> The source and target PG versions are the same, 11.5.
> 
> I followed the link[2] and read the related thread: as it is more that one
> year old, I wonder if there is any news on this, or alternatively if there is
> a recommended workaround: as that is the only place where I'm using IS
> DISTINCT FROM against an HSTORE field, I could easily replace those
> expressions with the more verbose equivalent like
> 
>     (OLD.x IS NULL AND NEW.x IS NOT NULL)
>     OR
>     (OLD.x IS NOT NULL AND NEW.x IS NULL)
>     OR
>     (OLD.x <> NEW.x)
> 
> lacking a better approach.
> 
> What would you suggest?

I don't know if progress has been made on this or not.

Are you able to use a plain text dump?

If so you might try changing:

SELECT pg_catalog.set_config('search_path', '', false);

to something that covers the path where you installed hstore.

> 
> Thanks in advance,
> ciao, lele.
> 
> [1]
https://www.postgresql-archive.org/BUG-15695-Failure-to-restore-a-dump-ERROR-operator-does-not-exist-public-hstore-public-hstore-td6077272.html
> [2] https://www.postgresql.org/message-id/flat/ffefc172-a487-aa87-a0e7-472bf29735c8%40gmail.com
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com



pgsql-general by date:

Previous
From: Lele Gaifax
Date:
Subject: Cannot restore dump when using IS DISTINCT FROM on a HSTORE column
Next
From: Tom Lane
Date:
Subject: Re: Cannot restore dump when using IS DISTINCT FROM on a HSTORE column