Received: from sid.trust.ee (sid.trust.ee [194.204.23.180]) by hub.org (8.8.8/8.7.5) with ESMTP id DAA19577 for ; Fri, 17 Jul 1998 03:17:28 -0400 (EDT) Received: from trust.ee (wink.trust.ee [194.204.23.184]) by sid.trust.ee (8.8.7/8.8.7) with ESMTP id KAA00626; Fri, 17 Jul 1998 10:14:10 +0300 Message-ID: <35AEFAAB.2C8CC9B0@trust.ee> Date: Fri, 17 Jul 1998 10:18:03 +0300 From: Hannu Krosing X-Mailer: Mozilla 4.05 [en] (Win95; I) MIME-Version: 1.0 To: "Thomas G. Lockhart" CC: Bruce Momjian , David Hartwig , hackers@postgreSQL.org Subject: Re: [INTERFACES] Re: [HACKERS] changes in 6.4 References: <199807152339.TAA07145@candle.pha.pa.us> <35ADBCCB.3B1FB91B@trust.ee> <35AE04E7.775E4737@alumni.caltech.edu> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit 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