Thread: Re: [HACKERS] [6.5.2] join problems ...

Re: [HACKERS] [6.5.2] join problems ...

From
Mike Mascari
Date:
Yes, sorry. Typo. I MEANT to put the parens around
the field list, but... 

Mike Mascari

--- Thomas Lockhart <lockhart@alumni.caltech.edu>
wrote:
> <snip>
> > > AND (a.id,a.mid = b.id,b.mid)
> > > AND (b.catid,b.indid,b.divid =
> c.id,c.ppid,c.pid);
> > ... the above is not valid in PostgreSQL, it
> seems...
> 
> I have to resort to looking at gram.y for this,
> since I currently have
> the Postgres parser in bits and pieces all over the
> garage floor ;)
> 
> The expressions are *almost* valid for Postgres. The
> difference is
> that you need to put parens around each side of the
> "row expression":
> 
>         | '(' row_descriptor ')' row_op '('
> row_descriptor ')'
>                 {
>                     $$ = makeRowExpr($4, $2, $6);
>                 }
>         ;
> 
> I had implemented this using Date and Darwen as a
> reference, and afaik
> the SQL standard (and any sensible parser)
> *requires* parens around
> the row expression, referred to in gram.y as a "row
> descriptor".
> 
> So, the following should work:
> 
>   AND ((a.id,a.mid) = (b.id,b.mid))
>   AND ((b.catid,b.indid,b.divid) =
> (c.id,c.ppid,c.pid));
> 
> 
>                     - Thomas

__________________________________________________
Do You Yahoo!?
Bid and sell for free at http://auctions.yahoo.com