Greg Stark wrote: > It has nothing to do with MVCC. It has to do with implementing this is hard in > the general case. > > Think of examples like: > > select max(foo) group by bar; > > or > > select max(foo) where xyz = z; > > To do it properly max/min have to be special-cased and tightly integrated with > other code to handle index scans and aggregates. As it currently stands > they're implemented the same way as any other aggregate, which means they get > to see all the records in the grouping. > > This is a frequently asked question, I'm surprised you didn't find stuff > searching with google. There have been numerous long discussions on this topic > not long ago. People are still trying to think about how to handle this > better.
The FAQ does have the example of using ORDER BY LIMIT 1 for MAX(). What we don't have a workaround for is COUNT(*). I think that will require some cached value that obeys MVCC rules of visibility. -- Bruce Momjian | http://candle.pha.pa.us [EMAIL PROTECTED] | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 ---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])