Hi,
On Wed, Mar 23, 2022 at 09:58:59PM +0100, Pavel Stehule wrote:
>
> A bit more work seems to be needed for deparsing session variables:
> >
> > # create variable myvar text;
> > CREATE VARIABLE
> >
> > # create view myview as select myvar;
> > CREATE VIEW
> >
> > # \d+ myview
> > View "public.myview"
> > Column | Type | Collation | Nullable | Default | Storage | Description
> > --------+------+-----------+----------+---------+----------+-------------
> > myvar | text | | | | extended |
> > View definition:
> > SELECT myvar AS myvar;
> >
> > There shouldn't be an explicit alias I think.
> >
>
> I check this issue, and I afraid so it is not fixable. The target list
> entry related to session variable has not some magic value like ?column?
> that can be used for check if tle->resname is implicit or explicit
>
> And in this time I cannot to use FigureColname because it doesn't work with
> transformed nodes. More - the Param node can be nested in SubscriptingRef
> or FieldSelect. It doesn't work perfectly now. See following example:
>
> create type xt as (a int, b int);
> create view b as select (10, ((random()*100)::int)::xt).b;
> \d+ b
> SELECT (ROW(10, (random() * 100::double precision)::integer)::xt).b AS b;
Fair enough. Since there is other code that already behaves the same I agree
that it's better to not add special cases in ruleutils.c and have an explicit
alias in the deparsed view, which isn't incorrect.