From PostgreSQL wiki
Jump to navigationJump to search

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] Completed itemAllow administrators to safely terminate individual sessions either via an SQL function or SIGTERM
[D] Completed itemAdd function to report the time of the most recent server reload
[D] Completed itemAllow 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] Completed itemIssue a warning if a change-on-restart-only postgresql.conf value is modified and the server config files are reloaded

Statistics Collector

[D] Completed itemReduce the frequency that the statistics file is written
[D] Completed itemAllow statistics file location to be user-configured
[D] Completed itemAllow 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] Completed itemFix server restart problem when the server was shutdown during a PITR backup
[D] Completed itemRecreate pg_xlog/archive_status/ if it doesn't exist after restoring from a PITR backup

Data Types

[D] Completed itemAllow the UUID type to accept non-standard formats
[D] Completed itemSimplify integer cross-data-type operators

Dates and Times

[D] Completed itemAllow infinite dates just like infinite timestamps
[D] Completed itemAdd a GUC variable to allow output of interval values in ISO8601 format
[D] Completed itemExtend timezone code to allow 64-bit values so we can represent years beyond 2038
[D] Completed itemUse LC_TIME for localized weekday/month names, rather than LC_MESSAGES
[D] Completed itemAdd ISO INTERVAL handling
[D] Completed itemSupport 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] Completed itemAdd support for year-month syntax, INTERVAL '50-6' YEAR TO MONTH
[D] Completed itemRound or truncate values to the requested precision, e.g. INTERVAL '11 months' YEAR should return one or zero


[D] Completed itemDelay resolution of array expression's data type so assignment coercion can be performed on empty array expressions


[D] Completed itemFix to_date()-related functions to consistently issue errors
[D] Completed itemImprove to_timestamp() handling of AM/PM, and error messages
[D] Completed itemImplement inlining of set-returning functions defined in SQL
[D] Completed itemAllow SQL-language functions to return results from RETURNING queries
[D] Completed itemImplement Boyer-Moore searching in strpos()
[D] Completed itemAdd temporal versions of generate_series()
[D] Completed itemAdd array_agg() and UNNEST functions for arrays
[D] Completed itemFix 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] Completed itemAllow 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

Incomplete item Improve ability to modify views via ALTER TABLE

SQL Commands

[D] Completed itemAdd 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] Completed itemChange TRUNCATE to operate on an inheritance hierarchy by default, and add ONLY support to affect a single table
[D] Completed itemImprove failure message when DROP DATABASE is used on a database that has prepared transactions
[D] Completed itemAdd SQL:2008 Common Table Expression (WITH [RECURSIVE]) clause to SELECT
[D] Completed itemImplement SQL:2008 window functions
[D] Completed itemIncrease locking when DROPing objects so dependent objects cannot get dropped while the DROP operation is happening
[D] Completed itemAllow AS in "SELECT col AS label" to be optional in certain cases
[D] Completed itemImprove reporting of UNION type mismatches


[D] Completed itemAllow databases to be moved to different tablespaces
[D] Completed itemPrevent parent tables from altering or dropping constraints like CHECK that are inherited by child tables unless CASCADE is used
[D] Completed itemPrevent child tables from altering or dropping constraints like CHECK that were inherited from the parent table


[D] Completed itemAdd VERBOSE option to report tables as they are processed, like VACUUM VERBOSE


[D] Completed itemConsider using a ring buffer for COPY FROM


[D] Completed itemAllow column-level privileges

Server-Side Languages


[D] Completed itemAdd CASE capability to language (already in SQL)
[D] Completed itemAdd translations for PL/pgSQL error messages
[D] Completed itemRethink memory management for simple expression evaluation
[D] Completed itemConsider honoring standard_conforming_strings in function bodies


[D] Completed itemHave psql show current values for a sequence
[D] Completed itemHave \d show foreign keys that reference a table's primary key
[D] Completed itemHave \l+ show database size, if permissions allow
Ideally it will not generate an error for invalid permissions
[D] Completed itemImprove display of enums to show valid enum values

pg_dump / pg_restore

[D] Completed itemAllow 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] Completed itemTo better utilize resources, allow pg_restore to check foreign keys simultaneously, where possible
[D] Completed itemAllow 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] Completed itemPrevent pg_dump/pg_restore from being affected by statement_timeout
Using psql to restore a pg_dump dump is also affected.


[D] Completed itemUse backend PREPARE/EXECUTE facility for ecpg where possible
[D] Completed itemAdd internationalized message strings


[D] Completed itemFix libpq initialization to play nicely with applications that use libcrypto but not libssl


[D] Completed itemAdd ability to trigger on TRUNCATE


[D] Completed itemAllow SELECT ... FOR UPDATE on inherited tables
[D] Completed itemRequire all CHECK constraints to be inherited
[D] Completed itemAdd checks to prevent a CREATE RULE views on inherited tables


[D] Completed itemIncrease the default and maximum number of statistics targets


[D] Completed itemConsider sorting hash buckets so entries can be found using a binary search, rather than a linear scan
[D] Completed itemIn hash indexes, consider storing the hash value with or instead of the key itself
[D] Completed itemDuring index creation, pre-sort the tuples to improve build speed


[D] Completed itemConsider 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] Completed itemAvoid some tuple copying in sort routines


[D] Completed itemCreate 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] Completed itemImprove dead row detection during multi-statement transactions usage


[D] Completed itemImprove control of auto-vacuum
[D] Completed itemStore per-table autovacuum settings in pg_class.reloptions.

Miscellaneous Performance

[D] Completed itemExpire published xmin for read-only and idle transactions
[D] Completed itemImprove performance of shared invalidation queue for multiple CPUs

Source Code

[D] Completed itemHave configure choose integer datetimes by default
[D] Completed itemConsider 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] Completed itemRemove use of MAKE_PTR and MAKE_OFFSET macros
[D] Completed itemRemove old-style routines for manipulating tuples


[D] Completed itemRemove psql newline patch when we find out why mingw outputs an extra newline
[D] Completed itemPrevent SSL from sending network packets to avoid interference with Win32 signal emulation