Re: pg_restore issues with intarray - Mailing list pgsql-general

From Jerry Sievers
Subject Re: pg_restore issues with intarray
Date
Msg-id 87v9u5mkec.fsf@jsievers.enova.com
Whole thread Raw
In response to RE: pg_restore issues with intarray  (Kevin Brannen <KBrannen@efji.com>)
Responses RE: pg_restore issues with intarray
List pgsql-general
Kevin Brannen <KBrannen@efji.com> writes:

>>From: Jerry Sievers <gsievers19@comcast.net>
>>
>>>Kevin Brannen <KBrannen@efji.com> writes:
>>>
>>> It feels like the restore is adding the intarray extension, which does
>>> a CREATE OPERATOR FAMILY on its own, then later the restore does
>>> CREATE OPERATOR FAMILY on again causing the problem. Yet this doesn't
>>> happen on most of our databases, just a few. It's maddening to me.
>>>
>>
>>I've seen this sort of problem before.
>>
>>It was due to some legacy DBs where I work having a few missing extension membership registrations.
>>
>>pg_dump wants to include any such things in the output  which may run afoul  of same having been already created by
theextension load.
 
>
> Ugh! That would explain why it's only on some installs and only on the
> "older" ones. Thanks for the info!
>
> Did you ever find any work around? Or is it just a matter of recognizing
> what's going on, ignore those "warnings", and moving to a later version to
> get past this so it doesn't happen again?

Try running \dx+ for intarray on one of your deviant systems.  You may
find the item pg_dump is trying to be explicit about *missing* from the
extension member list.

In such a case, see the ALTER EXTENSION ADD... which can be run manually
to register whatever is missing.

You will do this on the system that is *origin* for the pg_dump.

This is what we've done.

YMMV




postgres# \dx+ intarray
                                   Objects in extension "intarray"
                                          Object description                                          
------------------------------------------------------------------------------------------------------
 function boolop(integer[],query_int)
 function bqarr_in(cstring)
 function bqarr_out(query_int)
 function ginint4_consistent(internal,smallint,integer[],integer,internal,internal,internal,internal)
 function ginint4_queryextract(integer[],internal,smallint,internal,internal,internal,internal)
 function g_intbig_compress(internal)
 function g_intbig_consistent(internal,integer[],smallint,oid,internal)
 function g_intbig_decompress(internal)
 function g_intbig_penalty(internal,internal,internal)
 function g_intbig_picksplit(internal,internal)
 function g_intbig_same(intbig_gkey,intbig_gkey,internal)
 function g_intbig_union(internal,internal)
 function g_int_compress(internal)
 function g_int_consistent(internal,integer[],smallint,oid,internal)
 function g_int_decompress(internal)
 function g_int_penalty(internal,internal,internal)
 function g_int_picksplit(internal,internal)
 function g_int_same(integer[],integer[],internal)
 function g_int_union(internal,internal)
 function icount(integer[])
 function idx(integer[],integer)
 function intarray_del_elem(integer[],integer)
 function intarray_push_array(integer[],integer[])
 function intarray_push_elem(integer[],integer)
 function _intbig_in(cstring)
 function _intbig_out(intbig_gkey)
 function _int_contained(integer[],integer[])
 function _int_contained_joinsel(internal,oid,internal,smallint,internal)
 function _int_contained_sel(internal,oid,internal,integer)
 function _int_contains(integer[],integer[])
 function _int_contains_joinsel(internal,oid,internal,smallint,internal)
 function _int_contains_sel(internal,oid,internal,integer)
 function _int_different(integer[],integer[])
 function _int_inter(integer[],integer[])
 function _int_matchsel(internal,oid,internal,integer)
 function _int_overlap(integer[],integer[])
 function _int_overlap_joinsel(internal,oid,internal,smallint,internal)
 function _int_overlap_sel(internal,oid,internal,integer)
 function _int_same(integer[],integer[])
 function intset(integer)
 function intset_subtract(integer[],integer[])
 function intset_union_elem(integer[],integer)
 function _int_union(integer[],integer[])
 function querytree(query_int)
 function rboolop(query_int,integer[])
 function sort_asc(integer[])
 function sort_desc(integer[])
 function sort(integer[])
 function sort(integer[],text)
 function subarray(integer[],integer)
 function subarray(integer[],integer,integer)
 function uniq(integer[])
 operator class gin__int_ops for access method gin
 operator class gist__intbig_ops for access method gist
 operator class gist__int_ops for access method gist
 operator family gin__int_ops for access method gin
 operator family gist__intbig_ops for access method gist
 operator family gist__int_ops for access method gist
 operator ~(integer[],integer[])
 operator <@(integer[],integer[])
 operator |(integer[],integer)
 operator |(integer[],integer[])
 operator -(integer[],integer)
 operator -(integer[],integer[])
 operator @>(integer[],integer[])
 operator @(integer[],integer[])
 operator &(integer[],integer[])
 operator &&(integer[],integer[])
 operator #(integer[],integer)
 operator +(integer[],integer)
 operator +(integer[],integer[])
 operator @@(integer[],query_int)
 operator #(NONE,integer[])
 operator ~~(query_int,integer[])
 type intbig_gkey
 type query_int
(76 rows)

meta_a:postgres# \h alter extension
Command:     ALTER EXTENSION
Description: change the definition of an extension
Syntax:
ALTER EXTENSION name UPDATE [ TO new_version ]
ALTER EXTENSION name SET SCHEMA new_schema
ALTER EXTENSION name ADD member_object
ALTER EXTENSION name DROP member_object

where member_object is:

  ACCESS METHOD object_name |
  AGGREGATE aggregate_name ( aggregate_signature ) |
  CAST (source_type AS target_type) |
  COLLATION object_name |
  CONVERSION object_name |
  DOMAIN object_name |
  EVENT TRIGGER object_name |
  FOREIGN DATA WRAPPER object_name |
  FOREIGN TABLE object_name |
  FUNCTION function_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
  MATERIALIZED VIEW object_name |
  OPERATOR operator_name (left_type, right_type) |
  OPERATOR CLASS object_name USING index_method |
  OPERATOR FAMILY object_name USING index_method |
  [ PROCEDURAL ] LANGUAGE object_name |
  PROCEDURE procedure_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
  ROUTINE routine_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
  SCHEMA object_name |
  SEQUENCE object_name |
  SERVER object_name |
  TABLE object_name |
  TEXT SEARCH CONFIGURATION object_name |
  TEXT SEARCH DICTIONARY object_name |
  TEXT SEARCH PARSER object_name |
  TEXT SEARCH TEMPLATE object_name |
  TRANSFORM FOR type_name LANGUAGE lang_name |
  TYPE object_name |
  VIEW object_name

and aggregate_signature is:

* |
[ argmode ] [ argname ] argtype [ , ... ] |
[ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]

URL: https://www.postgresql.org/docs/12/sql-alterextension.html


>
> Kevin
> This e-mail transmission, and any documents, files or previous e-mail
> messages attached to it, may contain confidential information. If you
> are not the intended recipient, or a person responsible for delivering
> it to the intended recipient, you are hereby notified that any
> disclosure, distribution, review, copy or use of any of the
> information contained in or attached to this message is STRICTLY
> PROHIBITED. If you have received this transmission in error, please
> immediately notify us by reply e-mail, and destroy the original
> transmission and its attachments without reading them or saving them
> to disk. Thank you.

-- 
Jerry Sievers
Postgres DBA/Development Consulting
e: postgres.consulting@comcast.net



pgsql-general by date:

Previous
From: Kevin Brannen
Date:
Subject: RE: pg_restore issues with intarray
Next
From: Kevin Brannen
Date:
Subject: RE: pg_restore issues with intarray