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.
Administration
- [D] Allow administrators to safely terminate individual sessions either via an SQL function or SIGTERM
-
- [D] Add function to report the time of the most recent server reload
-
- [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
Configuration files
- [D] Issue a warning if a change-on-restart-only postgresql.conf value is modified and the server config files are reloaded
-
Statistics Collector
- [D] Reduce the frequency that the statistics file is written
-
- [D] Allow statistics file location to be user-configured
-
- [D] Allow statistics collector information to be pulled from the collector process directly, rather than requiring the collector to write a filesystem file twice a second?
-
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
-
Data Types
- [D] Allow the UUID type to accept non-standard formats
-
- [D] Simplify integer cross-data-type operators
-
Dates and Times
- [D] Allow infinite dates just like infinite timestamps
-
- [D] Add a GUC variable to allow output of interval values in ISO8601 format
-
- [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] Add support for year-month syntax, INTERVAL '50-6' YEAR TO MONTH
-
- [D] Round or truncate values to the requested precision, e.g. INTERVAL '11 months' YEAR should return one or zero
-
Arrays
- [D] Delay resolution of array expression's data type so assignment coercion can be performed on empty array expressions
-
Functions
- [D] Fix to_date()-related functions to consistently issue errors
-
- [D] Improve to_timestamp() handling of AM/PM, and error messages
-
- [D] Implement inlining of set-returning functions defined in SQL
-
- [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.
Multi-Language Support
- [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
-
SQL Commands
- [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] Improve failure message when DROP DATABASE is used on a database that has prepared transactions
-
- [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] Allow AS in "SELECT col AS label" to be optional in certain cases
-
- [D] Improve reporting of UNION type mismatches
-
ALTER
- [D] Allow databases to be moved to different tablespaces
-
- [D] Prevent parent tables from altering or dropping constraints like CHECK that are inherited by child tables unless CASCADE is used
-
- [D] Prevent child tables from altering or dropping constraints like CHECK that were inherited from the parent table
-
CLUSTER
- [D] Add VERBOSE option to report tables as they are processed, like VACUUM VERBOSE
-
COPY
- [D] Consider using a ring buffer for COPY FROM
-
GRANT/REVOKE
- [D] Allow column-level privileges
-
Server-Side Languages
PL/pgSQL
- [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
-
psql
- [D] Have psql show current values for a sequence
-
- [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
- [D] Improve display of enums to show valid enum values
-
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] Prevent pg_dump/pg_restore from being affected by statement_timeout
-
Using psql to restore a pg_dump dump is also affected.
ecpg
- [D] Use backend PREPARE/EXECUTE facility for ecpg where possible
-
- [D] Add internationalized message strings
-
libpq
- [D] Fix libpq initialization to play nicely with applications that use libcrypto but not libssl
-
Triggers
- [D] Add ability to trigger on TRUNCATE
-
Inheritance
- [D] Allow SELECT ... FOR UPDATE on inherited tables
-
- [D] Require all CHECK constraints to be inherited
-
- [D] Add checks to prevent a CREATE RULE views on inherited tables
-
Indexes
- [D] Increase the default and maximum number of statistics targets
-
Hash
- [D] Consider sorting hash buckets so entries can be found using a binary search, rather than a linear scan
-
- [D] In hash indexes, consider storing the hash value with or instead of the key itself
-
- [D] During index creation, pre-sort the tuples to improve build speed
-
Sorting
- [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] Avoid some tuple copying in sort routines
-
Vacuum
- [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
-
Auto-vacuum
- [D] Improve control of auto-vacuum
-
- [D] Store per-table autovacuum settings in pg_class.reloptions.
-
Miscellaneous Performance
- [D] Expire published xmin for read-only and idle transactions
-
- [D] Improve performance of shared invalidation queue for multiple CPUs
-
Source Code
- [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
-
Windows
- [D] Remove psql newline patch when we find out why mingw outputs an extra newline
-
- [D] Prevent SSL from sending network packets to avoid interference with Win32 signal emulation
-