Thread: BUG #12088: pg_upgrade 9.3 -> 9.4rc1 - implicit cast not ported

BUG #12088: pg_upgrade 9.3 -> 9.4rc1 - implicit cast not ported

From
ing.marco.colombo@gmail.com
Date:
The following bug has been logged on the website:

Bug reference:      12088
Logged by:          Marco Colombo
Email address:      ing.marco.colombo@gmail.com
PostgreSQL version: 9.4beta2
Operating system:   Centos 7 64bit
Description:

Hi, we have defined some implicit cast in the schema. After pg_upgrade
process, these have been dropped and we had to create them again.

Cast are defined as:

create cast (varchar as numeric) with inout as implicit;

create cast (unknown as numeric) with inout as implicit;

create cast (unknown as text) with inout as implicit;

create cast (unknown as integer) with inout as implicit;

Re: BUG #12088: pg_upgrade 9.3 -> 9.4rc1 - implicit cast not ported

From
Bruce Momjian
Date:
On Fri, Nov 28, 2014 at 08:28:16AM +0000, ing.marco.colombo@gmail.com wrote:
> The following bug has been logged on the website:
>
> Bug reference:      12088
> Logged by:          Marco Colombo
> Email address:      ing.marco.colombo@gmail.com
> PostgreSQL version: 9.4beta2
> Operating system:   Centos 7 64bit
> Description:
>
> Hi, we have defined some implicit cast in the schema. After pg_upgrade
> process, these have been dropped and we had to create them again.
>
> Cast are defined as:
>
> create cast (varchar as numeric) with inout as implicit;
>
> create cast (unknown as numeric) with inout as implicit;
>
> create cast (unknown as text) with inout as implicit;
>
> create cast (unknown as integer) with inout as implicit;

Well, pg_ugprade uses pg_dump to restore objects so I suggest you look
at the pg_dump output of 9.3 to see why they were not output.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + Everyone has their own god. +

Re: BUG #12088: pg_upgrade 9.3 -> 9.4rc1 - implicit cast not ported

From
Marco Colombo
Date:
Hi,
I've tried to perform pg_dump with 9.3 binaries but I simply get no errors
and cast are not part of the dump...
So are not restored... How can I continue the investigation?

2014-12-05 13:19 GMT+01:00 Bruce Momjian <bruce@momjian.us>:

> On Fri, Nov 28, 2014 at 08:28:16AM +0000, ing.marco.colombo@gmail.com
> wrote:
> > The following bug has been logged on the website:
> >
> > Bug reference:      12088
> > Logged by:          Marco Colombo
> > Email address:      ing.marco.colombo@gmail.com
> > PostgreSQL version: 9.4beta2
> > Operating system:   Centos 7 64bit
> > Description:
> >
> > Hi, we have defined some implicit cast in the schema. After pg_upgrade
> > process, these have been dropped and we had to create them again.
> >
> > Cast are defined as:
> >
> > create cast (varchar as numeric) with inout as implicit;
> >
> > create cast (unknown as numeric) with inout as implicit;
> >
> > create cast (unknown as text) with inout as implicit;
> >
> > create cast (unknown as integer) with inout as implicit;
>
> Well, pg_ugprade uses pg_dump to restore objects so I suggest you look
> at the pg_dump output of 9.3 to see why they were not output.
>
> --
>   Bruce Momjian  <bruce@momjian.us>        http://momjian.us
>   EnterpriseDB                             http://enterprisedb.com
>
>   + Everyone has their own god. +
>



--
Ing. Marco Colombo

Re: BUG #12088: pg_upgrade 9.3 -> 9.4rc1 - implicit cast not ported

From
Peter Eisentraut
Date:
On 11/28/14 3:28 AM, ing.marco.colombo@gmail.com wrote:
> Hi, we have defined some implicit cast in the schema. After pg_upgrade
> process, these have been dropped and we had to create them again.
>
> Cast are defined as:
>
> create cast (varchar as numeric) with inout as implicit;
>
> create cast (unknown as numeric) with inout as implicit;
>
> create cast (unknown as text) with inout as implicit;
>
> create cast (unknown as integer) with inout as implicit;

pg_dump doesn't dump these casts.  There is a source code comment that
explains why:

    /*
     * As per discussion we dump casts if one or more of the underlying
     * objects (the conversion function and the two data types) are not
     * builtin AND if all of the non-builtin objects are included in the
dump.
     * Builtin meaning, the namespace name does not start with "pg_".
     *
     * However, for a cast that belongs to an extension, we must not use
this
     * heuristic, but just dump the cast iff we're told to (via dobj.dump).
     */

So recreating the casts manually after the upgrade is the best
workaround at the moment.

Re: BUG #12088: pg_upgrade 9.3 -> 9.4rc1 - implicit cast not ported

From
Marco Colombo
Date:
Thanks for the explanation!

Marco Colombo
Il 13/gen/2015 19:41 "Peter Eisentraut" <peter_e@gmx.net> ha scritto:

> On 11/28/14 3:28 AM, ing.marco.colombo@gmail.com wrote:
> > Hi, we have defined some implicit cast in the schema. After pg_upgrade
> > process, these have been dropped and we had to create them again.
> >
> > Cast are defined as:
> >
> > create cast (varchar as numeric) with inout as implicit;
> >
> > create cast (unknown as numeric) with inout as implicit;
> >
> > create cast (unknown as text) with inout as implicit;
> >
> > create cast (unknown as integer) with inout as implicit;
>
> pg_dump doesn't dump these casts.  There is a source code comment that
> explains why:
>
>     /*
>      * As per discussion we dump casts if one or more of the underlying
>      * objects (the conversion function and the two data types) are not
>      * builtin AND if all of the non-builtin objects are included in the
> dump.
>      * Builtin meaning, the namespace name does not start with "pg_".
>      *
>      * However, for a cast that belongs to an extension, we must not use
> this
>      * heuristic, but just dump the cast iff we're told to (via dobj.dump).
>      */
>
> So recreating the casts manually after the upgrade is the best
> workaround at the moment.
>
>