Re: [HACKERS] subquery syntax broken - Mailing list pgsql-hackers

From Vadim B. Mikheev
Subject Re: [HACKERS] subquery syntax broken
Date
Msg-id 34D685E9.D719AFF2@sable.krasnoyarsk.su
Whole thread Raw
In response to Re: [HACKERS] subquery syntax broken  (Bruce Momjian <maillist@candle.pha.pa.us>)
Responses Re: [HACKERS] subquery syntax broken  (Bruce Momjian <maillist@candle.pha.pa.us>)
List pgsql-hackers
Bruce Momjian wrote:
>
> > vac=> select * from x where y = (select max(y) from x);
> > ERROR:  parser: parse error at or near "select"
> > vac=> select * from x where y <> (select max(y) from x);
> > ERROR:  parser: parse error at or near "select"
>
> Sorry I missed that most obvious option.  Here is the patch.  I will
> apply it today.

It doesn't work for =, >, etc:

vac=> select * from x where y = (select max(y) from x);
ERROR:  parser: parse error at or near "select"

but work for others:

vac=> select * from x where y @ (select max(y) from x);
ERROR:  There is no operator '@' for types 'int4' and 'int4'
        You will either have to retype this query using an explicit cast,
        or you will have to define the operator using CREATE OPERATOR

Also:

> +               | a_expr Op '(' SubSelect ')'
> +                               {
> +                                       SubLink *n = makeNode(SubLink);
> +                                       n->lefthand = lcons($1, NULL);
> +                                       n->oper = lcons($2,NIL);
> +                                       n->useor = false;
> +                                       n->subLinkType = ALL_SUBLINK;
                                                           ^^^^^^^^^^^
                   should be EXPR_SUBLINK
> +                                       n->subselect = $4;
> +                                       $$ = (Node *)n;
> +                               }

Vadim

pgsql-hackers by date:

Previous
From: The Hermit Hacker
Date:
Subject: Re: compilation on sparc_solaris
Next
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] subquery syntax broken