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

Поиск
Список
Период
Сортировка
От Hannu Krosing
Тема Re: [INTERFACES] Re: [HACKERS] changes in 6.4
Дата
Msg-id 35AEFAAB.2C8CC9B0@trust.ee
обсуждение исходный текст
Ответ на Re: [INTERFACES] Re: [HACKERS] changes in 6.4  (Bruce Momjian <maillist@candle.pha.pa.us>)
Список 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

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: [HACKERS] proposals for LLL, part 1
Следующее
От: David Gross
Дата:
Сообщение: using C++ to define new functions