From PostgreSQL wiki
This list contains all PostgreSQL bugs and features requests that were solved in 8.4. There is a Todo page too for bugs and features that are still not solved.
- [D] Allow administrators to safely terminate individual sessions either via an SQL function or SIGTERM
- [D] Allow SSL client certificate names to be checked against the client hostname
- This is already implemented in libpq/fe-secure.c::verify_peer_name_matches_certificate() but the code is commented out.. Fixed in M. Hagander commit 2008-11-13
- [D] Reduce the frequency that the statistics file is written
- [D] Allow statistics file location to be user-configured
Point-In-Time Recovery (PITR)
- [D] Fix server restart problem when the server was shutdown during a PITR backup
- [D] Recreate pg_xlog/archive_status/ if it doesn't exist after restoring from a PITR backup
- [D] Allow the UUID type to accept non-standard formats
- [D] Simplify integer cross-data-type operators
Dates and Times
- [D] Extend timezone code to allow 64-bit values so we can represent years beyond 2038
- [D] Use LC_TIME for localized weekday/month names, rather than LC_MESSAGES
- [D] Add ISO INTERVAL handling
- [D] Support ISO INTERVAL syntax if units cannot be determined from the string, and are supplied after the string
- The SQL standard states that the units after the string specify the units of the string, e.g. INTERVAL '2' MINUTE should return '00:02:00'. The current behavior has the units restrict the interval value to the specified unit or unit range, INTERVAL '70' SECOND returns '00:00:10'. For syntax that isn't uniquely ISO or PG syntax, like '1' or '1:30', treat as ISO if there is a range specification clause, and as PG if there no clause is present, e.g. interpret '1:30' MINUTE TO SECOND as '1 minute 30 seconds', and interpret '1:30' as '1 hour, 30 minutes'. This makes common cases like SELECT INTERVAL '1' MONTH SQL-standard results. The SQL standard supports a limited number of unit combinations and doesn't support unit names in the string. The PostgreSQL syntax is more flexible in the range of units supported, e.g. PostgreSQL supports '1 year 1 hour', while the SQL standard does not.
- [D] Fix to_date()-related functions to consistently issue errors
- [D] Improve to_timestamp() handling of AM/PM, and error messages
- [D] Allow SQL-language functions to return results from RETURNING queries
- [D] Implement Boyer-Moore searching in strpos()
- [D] Add temporal versions of generate_series()
- [D] Add array_agg() and UNNEST functions for arrays
- [D] Fix all set-returning system functions so they support a wildcard target list
- SELECT * FROM pg_get_keywords() works but SELECT * FROM pg_show_all_settings() does not.
- [D] Allow locale to be set at database creation
- Currently locale can only be set during initdb. No global tables have locale-aware columns. However, the database template used during database creation might have locale-aware indexes. The indexes would need to be reindexed to match the new locale.
Views / Rules
- Improve ability to modify views via ALTER TABLE
- [D] Add a separate TRUNCATE permission
- Currently only the owner can TRUNCATE a table because triggers are not called, and the table is locked in exclusive mode.
- [D] Change TRUNCATE to operate on an inheritance hierarchy by default, and add ONLY support to affect a single table
- [D] Add SQL:2008 Common Table Expression (WITH [RECURSIVE]) clause to SELECT
- [D] Implement SQL:2008 window functions
- [D] Increase locking when DROPing objects so dependent objects cannot get dropped while the DROP operation is happening
- [D] Improve reporting of UNION type mismatches
- [D] Prevent parent tables from altering or dropping constraints like CHECK that are inherited by child tables unless CASCADE is used
- [D] Add CASE capability to language (already in SQL)
- [D] Add translations for PL/pgSQL error messages
- [D] Rethink memory management for simple expression evaluation
- [D] Consider honoring standard_conforming_strings in function bodies
- [D] Have \d show foreign keys that reference a table's primary key
- [D] Have \l+ show database size, if permissions allow
- Ideally it will not generate an error for invalid permissions
pg_dump / pg_restore
- [D] Allow pg_restore to utilize multiple CPUs and I/O channels by restoring multiple objects simultaneously
- This might require a pg_restore flag to indicate how many simultaneous operations should be performed. Only pg_dump's -Fc format has the necessary dependency information.
- [D] To better utilize resources, allow pg_restore to check foreign keys simultaneously, where possible
- [D] Allow pg_restore to create all indexes of a table concurrently, via a single heap scan
- This requires a pg_dump -Fc file because that format contains the required dependency information.
- [D] Require all CHECK constraints to be inherited
- [D] Add checks to prevent a CREATE RULE views on inherited tables
- [D] Increase the default and maximum number of statistics targets
- [D] Consider sorting hash buckets so entries can be found using a binary search, rather than a linear scan
- [D] Consider using hash buckets to do DISTINCT, rather than sorting
- This would be beneficial when there are few distinct values. This is already used by GROUP BY.
- [D] Create a bitmap of pages that need vacuuming
- Instead of sequentially scanning the entire table, have the background writer or some other process record pages that have expired rows, then VACUUM can look at just those pages rather than the entire table. In the event of a system crash, the bitmap would probably be invalidated. One complexity is that index entries still have to be vacuumed, and doing this without an index scan (by using the heap values to find the index entry) might be slow and unreliable, especially for user-defined index functions.
- [D] Improve dead row detection during multi-statement transactions usage
- [D] Improve control of auto-vacuum
- [D] Store per-table autovacuum settings in pg_class.reloptions.
- [D] Expire published xmin for read-only and idle transactions
- [D] Improve performance of shared invalidation queue for multiple CPUs
- [D] Have configure choose integer datetimes by default
- [D] Consider allowing 64-bit integers and floats to be passed by value on 64-bit platforms
- Also change 32-bit floats (float4) to be passed by value at the same time.
- [D] Remove use of MAKE_PTR and MAKE_OFFSET macros
- [D] Remove old-style routines for manipulating tuples
- [D] Prevent SSL from sending network packets to avoid interference with Win32 signal emulation