Hi HORIGUCHI-san!

Thanks for the valuable comments.


03.10.17 4:30, Kyotaro HORIGUCHI wrote:

The first thought that patch gave me is that the problem is not
limited to constants. Actually the following sequence also
reproduces similar failure even with this patch.

create table t2 (x int , y int);
create type pair as (x int, y int);
prepare test as select row(x, y)::pair from t2;
drop type pair;
execute test;
| ERROR:  cache lookup failed for type 16410

In this case the causal expression is in the following form.

   TargetEntry (
     expr = (
       RowExpr:
         typeid = 16410,
         row_format = COERCE_EXPLICIT_CAST,
         args = List (Var(t2.x), Var(t2.y))
     )
   )

Yeah, RowExpr has no dependency from type relation with oid=16410. I think the routine 'fix_expr_common' needs to be reworked to take into account any possible dependencies of expression from composite type.

On November commitfest I'll lay out patch that covers your case.

--
Regards,
Maksim Milyutin



--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to