Re: [INTERFACES] Re: [HACKERS] changes in 6.4

Hannu Krosing <hannu@trust.ee>

From: Hannu Krosing <hannu@trust.ee>
To: "Thomas G. Lockhart" <lockhart@alumni.caltech.edu>
Cc: Bruce Momjian <maillist@candle.pha.pa.us>, David Hartwig <daveh@insightdist.com>, hackers@postgreSQL.org
Date: 1998-07-17T07:18:03Z
Lists: pgsql-hackers
Thomas G. Lockhart wrote:
> 
> > And there is no way of doing (at least presently):
> >
> > select * from table where (val1,val2,val3)
> >  in (select 1,1,1 union select 1,1,2);
> 
> I'll look at that...

Could it be a good idea to have the syntax (at least for constants),
changed to (or at least allowed ;) to the following:

select * from table
 where (val1,val2,val3)
 in ( (1,1,3), (1,1,2), (1,1,1) );

Which brings us to another issue: 

Should (val1,val2,val3) be just some construct that gets rewritten to 
"something else" in parser, or should it create an instance of 
anonymus row type ?

Allowing anonymus row type creation on the fly would allow us many nice 
things, for example a way to create new types of aggregate functions,
like 
FOR_MAX((price,date)), so that we could do the following in only one
pass

SELECT
  FOR_MAX((price,sales_datetime)) as last_price, 
  MAX(sales_datetime) as last_sale,
  WEEK(sales_datetime) week_nr
GROUP BY
  week_nr
;

This would get the prices and dates of each weeks last sale, and is 
much hairier to do using just standard sql.

Hannu