Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

PostgreSQL TODO List

Current maintainer: Bruce Momjian (bruce@momjian.us)
Last updated: Thu May 15 22:23:30 EDT 2008

The most recent version of this document can be viewed at
http://www.postgresql.org/docs/faqs.TODO.html.

A hyphen, "-", marks changes that will appear in the upcoming 8.4 release.
A percent sign, "%", marks items that are easier to implement.

This list contains all known PostgreSQL bugs and feature requests. If
you would like to work on an item, please read the Developer's FAQ
first. There is also a developer's wiki at
http://developer.postgresql.org.

Administration

Data Types

http://archives.postgresql.org/pgsql-hackers/2006-01/msg00250.php
http://archives.postgresql.org/pgsql-bugs/2006-04/msg00248.php

Functions

Multi-Language Support

Views / Rules

  • Automatically create rules on views so they are updateable, per SQL99

    We can only auto-create rules for simple views. For more complex cases users will still have to write rules manually.

    http://archives.postgresql.org/pgsql-hackers/2006-03/msg00586.php http://archives.postgresql.org/pgsql-patches/2006-08/msg00255.php

  • Add the functionality for WITH CHECK OPTION clause of CREATE VIEW
  • Allow VIEW/RULE recompilation when the underlying tables change

    Another issue is whether underlying table changes should be reflected in the view, e.g. should SELECT * show additional columns if they are added after the view is created.

  • Make it possible to use RETURNING together with conditional DO INSTEAD rules, such as for partitioning setups

    http://archives.postgresql.org/pgsql-hackers/2007-09/msg00577.php

  • Add the ability to automatically create materialized views

    Right now materialized views require the user to create triggers on the main table to keep the summary table current. SQL syntax should be able to manager the triggers and summary table automatically. A more sophisticated implementation would automatically retrieve from the summary table when the main table is referenced, if possible.

SQL Commands

Referential Integrity

Server-Side Languages

Clients

  • Have pg_ctl look at PGHOST in case it is a socket directory?
  • Allow pg_ctl to work properly with configuration files located outside the PGDATA directory

    pg_ctl can not read the pid file because it isn't located in the config directory but in the PGDATA directory. The solution is to allow pg_ctl to read and understand postgresql.conf to find the data_directory value.

  • Add a function like pg_get_indexdef() that report more detailed index information

    http://archives.postgresql.org/pgsql-bugs/2007-12/msg00166.php

  • psql
  • pg_dump / pg_restore
    • %Add dumping of comments on index columns and composite type columns
    • %Add full object name to the tag field. eg. for operators we need '=(integer, integer)', instead of just '='.
    • Add pg_dumpall custom format dumps?
    • Allow selection of individual object(s) of all types, not just tables
    • In a selective dump, allow dumping of an object and all its dependencies
    • Add options like pg_restore -l and -L to pg_dump
    • Stop dumping CASCADE on DROP TYPE commands in clean mode
    • Allow pg_dump --clean to drop roles that own objects or have privileges
    • Change pg_dump so that a comment on the dumped database is applied to the loaded database, even if the database has a different name. This will require new backend syntax, perhaps COMMENT ON CURRENT DATABASE.
    • Remove unnecessary function pointer abstractions in pg_dump source code
    • Allow pg_dump to utilize multiple CPUs and I/O channels by dumping multiple objects simultaneously

      The difficulty with this is getting multiple dump processes to produce a single dump output file. It also would require several sessions to share the same snapshot. http://archives.postgresql.org/pgsql-hackers/2008-02/msg00205.php

    • 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. http://archives.postgresql.org/pgsql-hackers/2008-02/msg00963.php

    • To better utilize resources, allow pg_restore to check foreign keys simultaneously, where possible
    • 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. http://archives.postgresql.org/pgsql-general/2007-05/msg01274.php

    • Allow pg_restore to load different parts of the COPY data simultaneously
    • Prevent pg_dump/pg_restore from being affected by statement_timeout

      Using psql to restore a pg_dump dump is also affected.

    • Remove pre-7.3 pg_dump code that assumes pg_depend does not exit
    • Allow pre/data/post files when schema and data are dumped separately, for performance reasons

      http://archives.postgresql.org/pgsql-hackers/2008-02/msg00205.php

  • ecpg
    • Docs

      Document differences between ecpg and the SQL standard and information about the Informix-compatibility module.

    • Solve cardinality > 1 for input descriptors / variables?
    • Add a semantic check level, e.g. check if a table really exists
    • fix handling of DB attributes that are arrays
    • Use backend PREPARE/EXECUTE facility for ecpg where possible
    • Implement SQLDA
    • Fix nested C comments
    • %sqlwarn[6] should be 'W' if the PRECISION or SCALE value specified
    • Make SET CONNECTION thread-aware, non-standard?
    • Allow multidimensional arrays
    • Add internationalized message strings
    • Implement COPY FROM STDIN
  • libpq
    • Add PQescapeIdentifierConn()
    • Prevent PQfnumber() from lowercasing unquoted the column name

      PQfnumber() should never have been doing lowercasing, but historically it has so we need a way to prevent it

    • Allow statement results to be automatically batched to the client

      Currently all statement results are transferred to the libpq client before libpq makes the results available to the application. This feature would allow the application to make use of the first result rows while the rest are transferred, or held on the server waiting for them to be requested by libpq. One complexity is that a statement like SELECT 1/col could error out mid-way through the result set.

    • Consider disallowing multiple queries in PQexec() as an additional barrier to SQL injection attacks

      http://archives.postgresql.org/pgsql-hackers/2007-01/msg00184.php

    • Add PQexecf() that allows complex parameter substitution

      http://archives.postgresql.org/pgsql-hackers/2007-03/msg01803.php

    • Add SQLSTATE severity to PGconn return status

      http://archives.postgresql.org/pgsql-interfaces/2007-11/msg00015.php

Triggers

  • Add deferred trigger queue file

    Right now all deferred trigger information is stored in backend memory. This could exhaust memory for very large trigger queues. This item involves dumping large queues into files.

  • Allow triggers to be disabled in only the current session.

    This is currently possible by starting a multi-statement transaction, modifying the system tables, performing the desired SQL, restoring the system tables, and committing the transaction. ALTER TABLE ... TRIGGER requires a table lock so it is not ideal for this usage.

  • With disabled triggers, allow pg_dump to use ALTER TABLE ADD FOREIGN KEY

    If the dump is known to be valid, allow foreign keys to be added without revalidating the data.

  • Allow statement-level triggers to access modified rows
  • Support triggers on columns

    http://archives.postgresql.org/pgsql-patches/2005-07/msg00107.php

  • Allow AFTER triggers on system tables

    System tables are modified in many places in the backend without going through the executor and therefore not causing triggers to fire. To complete this item, the functions that modify system tables will have to fire triggers.

  • Tighten trigger permission checks

    http://archives.postgresql.org/pgsql-hackers/2006-12/msg00564.php

  • Allow BEFORE INSERT triggers on views

    http://archives.postgresql.org/pgsql-general/2007-02/msg01466.php

  • -Add ability to trigger on TRUNCATE
  • Add database and transaction-level triggers

    http://archives.postgresql.org/pgsql-hackers/2008-03/msg00451.php

Indexes

http://archives.postgresql.org/pgsql-hackers/2007-09/msg00051.php

  • Pack hash index buckets onto disk pages more efficiently

    Currently only one hash bucket can be stored on a page. Ideally several hash buckets could be stored on a single page and greater granularity used for the hash algorithm.

    http://archives.postgresql.org/pgsql-hackers/2004-06/msg00168.php

  • Consider sorting hash buckets so entries can be found using a binary search, rather than a linear scan
  • In hash indexes, consider storing the hash value with or instead of the key itself
  • Add WAL logging for crash recovery
  • Allow multi-column hash indexes
  • -During index creation, pre-sort the tuples to improve build speed

Fsync

  • Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options

    Ideally this requires a separate test program that can be run at initdb time or optionally later. Consider O_SYNC when O_DIRECT exists.

  • Add program to test if fsync has a delay compared to non-fsync
  • Consider sorting writes during checkpoint

    http://archives.postgresql.org/pgsql-hackers/2007-06/msg00541.php

Cache Usage

Vacuum

Locking

Startup Time Improvements

  • Experiment with multi-threaded backend for backend creation

    This would prevent the overhead associated with process creation. Most operating systems have trivial process creation time compared to database startup overhead, but a few operating systems (Win32, Solaris) might benefit from threading. Also explore the idea of a single session using multiple threads to execute a statement faster.

Write-Ahead Log

Optimizer / Executor

Background Writer

Miscellaneous Performance

Source Code

Exotic Features

Features We Do Not Want


Privacy Policy | Project hosted by our server sponsors. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group