The PostgreSQL 8.4 planned release is March 1, 2009 and is outlined in the PostgreSQL 8.4 Development plan.
It has just passed its May 2008 commit fest milestone and is currently in its July 2008 Commit Fest. Lots of PostgreSQL Planet bloggers have started showcasing some of the new features in store.
We will briefly list our favorite planned and already committed patches.
RETURN QUERY EXECUTE This one already made the commit. While it seems small to some, we are very excited about the RETURN QUERY working with
EXECUTE. That was one of the things that made RETURN QUERY of limited use in 8.3. Thanks to Pavel Stehule for that one.
Function Stats - Hubert Lubaczewski has been highlighting a lot of new nifty features. Many psql enhancements. Function stats is our favorite of his list so far
and is detailed in Waiting for 84 Function Stats
With RECURSIVE This is another one that hasn't quite made it in yet but is in the July 2008 commit fest.
With Recursive. For people familiar with SQL Server 2005 - this is similar in
style to SQL Server Common Table Expressions (CTE). Not sure the equivalent in Oracle - I presume Corresponding by CONNECT BY or something along that line. IBM DB2 also has something called common table
expressions, but not quite sure how that works or if it is the same.
ANSI SQL 2003: table function support This one hasn't made it in yet but is under review. For those who use set returning functions extensively and are frustrated by having to create a type for each set returning function you create, you will appreciate this one.
ANSI SQL 2003: table function support. Thanks go to Pavel again for this one.
Things not so likely
Now there are two other things we are looking forward to that sadly we fear may not make it into 8.4, but with the cycles of PostgreSQL
we'll probably only need to wait an additional year as opposed to 3-5 years (with other DB product release cycles) to see these.
Windowing functions - for things like moving averages, cumulative sums and other stats across large amounts of data this is important. Lots of people have talked about this and its one
of those things that sticks out like a sore thumb for high-end users.
MERGE for PostgreSQL 8.4 as noted here - arguably this is just a check-off item for us
because once SQL Server 2008 comes out, PostgreSQL will be the only database we commonly work with that doesn't have this functionality.
WITH RECURSIVE should be the implementation of CTE in PostgreSQL.
It's something already available in Firebird, SQLServer 2005, IBM DB2 and Oracle (CONNECT BY synthax).
A much needed synthax improvement to handle hierarchical queries.
I *really* wish the Windowing functions could make in the upcoming 8.4 release.
We use Postgres to handle analytical requests in 1TB+ Datawarehouse and it makes a big difference if we could get the valuable information by doing just one table scan.
Thanks for the link to the post. This is great if the windowing function will be able to make in 8.4. I have used them quite a lot in Oracle and Teradata, but can barely remember a single time I needed the "Frame" functionality. I personally consider the clause ".. ROWS BETWEEN
UNBOUNDED PRECEDING AND CURRENT ROW" quite a cumbersome thing to understand. So if it doesn't make in first release - it wouldn't be much problem for me.
Just to add another point of view, I also use windowing functions extensively in Oracle, and the lack of them in Postgres is the single biggest factor preventing me from adopting it. However, unlike Slava, I also make heavy use of the windowing "frame" functionality (ROWS BETWEEN and RANGE BETWEEN).
I've investigated SQL Server as an Oracle alternative, and although it supports some analytic SQL, it lacks the ROWS BETWEEN/RANGE BETWEEN capabilities, and is thus unsuitable. I would really, *REALLY* love to see this fully implemented in Postgres.