Re: psql \dC incorrectly shows casts "with inout" as "binary coercible" on 9.5.14 and 11beta3

2018-08-31 Thread Jean-Pierre Pelletier
Awesome, thanks!

Le ven. 31 août 2018 16:46, Tom Lane  a écrit :

> I wrote:
> > Not sure if this rises to the level of a back-patchable bug.
> > People might be surprised if we change that output in minor releases.
> > But we could still squeeze it into v11, I think.
>
> I pushed a fix into HEAD & v11.
>
> regards, tom lane
>


Re: psql \dC incorrectly shows casts "with inout" as "binary coercible" on 9.5.14 and 11beta3

2018-08-31 Thread Tom Lane
I wrote:
> Not sure if this rises to the level of a back-patchable bug.
> People might be surprised if we change that output in minor releases.
> But we could still squeeze it into v11, I think.

I pushed a fix into HEAD & v11.

regards, tom lane



Re: psql \dC incorrectly shows casts "with inout" as "binary coercible" on 9.5.14 and 11beta3

2018-08-31 Thread Jean-Pierre Pelletier
Btw, pg_dump is handling this right.

Jean-Pierre Pelletier

Le ven. 31 août 2018 10:33, Tom Lane  a écrit :

> "jean.pierre.pelletier0"  writes:
> > To reproduce, compare the output of \dC on two built-in casts(json to
> jsonb) and (xml to text) where only the the first is really "with inout".
>
> Hm, yeah, it just does
>
>   "   CASE WHEN castfunc = 0 THEN '(binary
> coercible)'\n"
>   "ELSE p.proname\n"
>   "   END as \"%s\",\n"
>
> without regard for the castmethod column (which it can't necessarily
> assume is there, anyway).  It's hard to be sure after all these
> years whether this was intentional or just an oversight, unless maybe
> Heikki remembers ... but I tend to agree that "(with inout)" would be
> more apropos than "(binary coercible)".
>
> Not sure if this rises to the level of a back-patchable bug.
> People might be surprised if we change that output in minor releases.
> But we could still squeeze it into v11, I think.
>
> regards, tom lane
>


Re: psql \dC incorrectly shows casts "with inout" as "binary coercible" on 9.5.14 and 11beta3

2018-08-31 Thread Tom Lane
"jean.pierre.pelletier0"  writes:
> To reproduce, compare the output of \dC on two built-in casts(json to jsonb) 
> and (xml to text) where only the the first is really "with inout".

Hm, yeah, it just does

  "   CASE WHEN castfunc = 0 THEN '(binary 
coercible)'\n"
  "ELSE p.proname\n"
  "   END as \"%s\",\n"

without regard for the castmethod column (which it can't necessarily
assume is there, anyway).  It's hard to be sure after all these
years whether this was intentional or just an oversight, unless maybe
Heikki remembers ... but I tend to agree that "(with inout)" would be
more apropos than "(binary coercible)".

Not sure if this rises to the level of a back-patchable bug.
People might be surprised if we change that output in minor releases.
But we could still squeeze it into v11, I think.

regards, tom lane



psql \dC incorrectly shows casts "with inout" as "binary coercible" on 9.5.14 and 11beta3

2018-08-30 Thread jean.pierre.pelletier0






To reproduce, compare the output of \dC on two built-in casts(json to jsonb) 
and (xml to text) where only the the first is really "with inout".

I've been using the folllowing query which (I believe) correctly shows
the (json to jsonb) cast as "with inout"

SELECT
   CONCAT('CREATE CAST (',
  C.castSource::regType, ' AS ',
  C.castTarget::regType,') ',
  CASE c.castMethod
 WHEN 'b' THEN 'WITHOUT FUNCTION'
 WHEN 'f' THEN 'WITH FUNCTION ' || C.castFunc::regProc || '('
|| pg_get_function_identity_arguments(C.castFunc) || ')'
 WHEN 'i' THEN 'WITH INOUT'
  END,
  CASE c.castContext
 WHEN 'a' THEN ' AS ASSIGNMENT '
 WHEN 'e' THEN ''
 WHEN 'i' THEN ' AS IMPLICIT'
  END)
FROM
   pg_cast C

   INNER JOIN pg_type TS
   ON C.castSource = TS.oid

   INNER JOIN pg_type TT
   ON C.castTarget = TT.oid
WHERE
   (C.castSource::regType::text, C.castTarget::regType::text) IN
(('json','jsonb'), ('xml','text'));


I've also noticed that pgAdmin III 1.22.2 has the same bug,
while pgAdmin 4 3.2 displays "with inout" casts properly.

Thanks,
Jean-Pierre Pelletier