Skip to content
Snippets Groups Projects
TODO 20.6 KiB
Newer Older
Bruce Momjian's avatar
Bruce Momjian committed
TODO list for PostgreSQL
========================
Bruce Momjian's avatar
Bruce Momjian committed
Last updated:		Tue Apr 23 16:26:13 EDT 2002
Bruce Momjian's avatar
Bruce Momjian committed
Current maintainer:	Bruce Momjian (pgman@candle.pha.pa.us)
Bruce Momjian's avatar
Bruce Momjian committed
The most recent version of this document can be viewed at
Bruce Momjian's avatar
Bruce Momjian committed
the PostgreSQL web site, http://www.PostgreSQL.org.
Bruce Momjian's avatar
Bruce Momjian committed

A dash (-) marks changes that will appear in the upcoming 7.3 release.
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
Bracketed items "[]" have more detailed.
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed

URGENT
Bruce Momjian's avatar
Bruce Momjian committed
* Add replication of distributed databases [replication]
Bruce Momjian's avatar
Bruce Momjian committed
	o automatic failover
Bruce Momjian's avatar
Bruce Momjian committed
	o load balancing
	o master/slave replication
	o multi-master replication
	o partition data across servers
	o sample implementation in contrib/rserv
	o queries across databases or servers (two-phase commit)
Bruce Momjian's avatar
Bruce Momjian committed
	o allow replication over unreliable or non-persistent links
Bruce Momjian's avatar
Bruce Momjian committed
	o http://gborg.postgresql.org/project/pgreplication/projdisplay.php
Bruce Momjian's avatar
Bruce Momjian committed
* Point-in-time data recovery using backup and write-ahead log
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
REPORTING
Bruce Momjian's avatar
Bruce Momjian committed

* Allow elog() to return error codes, module name, file name, line
  number, not just messages (Peter E)
* Add error codes (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
* -Change DEBUG startup tag to LOG (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
* Show location of syntax error in query [yacc]

Bruce Momjian's avatar
Bruce Momjian committed
PERMISSIONS
Bruce Momjian's avatar
Bruce Momjian committed
* Improve control over user privileges, including table creation and
Bruce Momjian's avatar
Bruce Momjian committed
  lock use [privileges] (Karel, others)
Bruce Momjian's avatar
Bruce Momjian committed
* -Allow user/group names to be specified directly in pg_hba.conf (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
* Add PGPASSWORDFILE environment variable or ~/.pgpass to store
  user/host/password combinations
Bruce Momjian's avatar
Bruce Momjian committed
* Remove PGPASSWORD because it is insecure on some OS's
Bruce Momjian's avatar
Bruce Momjian committed
* Make single-user local access permissions the default by limiting
  permissions on the socket file (Peter E)
* -Allow permissions for functions (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
ADMIN
Bruce Momjian's avatar
Bruce Momjian committed

* Incremental backups
* -Make it easier to create a database owned by someone who can't createdb,
Bruce Momjian's avatar
Bruce Momjian committed
  perhaps CREATE DATABASE dbname WITH OWNER = "user" (Gavin)
* -Make equals sign optional in CREATE DATABASE WITH param = 'val'
* Remove unreferenced table files and temp tables during database vacuum
Bruce Momjian's avatar
Bruce Momjian committed
  or postmaster startup (Bruce)
* Add table name mapping for numeric file names (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
* Remove behavior of postmaster -o after making postmaster/postgres
  flags unique
Bruce Momjian's avatar
Bruce Momjian committed
* Allow logging of query durations
Bruce Momjian's avatar
Bruce Momjian committed
* -Prevent SIGHUP and 'pg_ctl reload' from changing command line
Bruce Momjian's avatar
Bruce Momjian committed
  specified parameters to postgresql.conf defaults (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
* Allow easy display of usernames in a group
Bruce Momjian's avatar
Bruce Momjian committed
DATA TYPES
* -Add domain capability (Rod Taylor)
Bruce Momjian's avatar
Bruce Momjian committed
* Add IPv6 capability to INET/CIDR types
* Remove Money type, add money formatting for decimal type
Bruce Momjian's avatar
Bruce Momjian committed
* SELECT cash_out(2) crashes because of opaque
* Declare typein/out functions in pg_proc with a special "C string" data type
Bruce Momjian's avatar
Bruce Momjian committed
* Functions returning sets do not totally work
Bruce Momjian's avatar
Bruce Momjian committed
* Change factorial to return a numeric
Bruce Momjian's avatar
Bruce Momjian committed
* Change NUMERIC data type to use base 10,000 internally
Bruce Momjian's avatar
Bruce Momjian committed
* Change NUMERIC to enforce the maximum precision, and increase it
Bruce Momjian's avatar
Bruce Momjian committed
* Add function to return compressed length of TOAST data values (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
* Add GUC parameter for DATESTYLE
Bruce Momjian's avatar
Bruce Momjian committed

* CONVERSION
	o Store binary-compatible type information in the system
	o Allow better handling of numeric constants, type conversion 
	  [typeconv]
	o SELECT col FROM tab WHERE numeric_col = 10.1 fails, requires quotes

Bruce Momjian's avatar
Bruce Momjian committed
	o Allow nulls in arrays
	o Allow arrays to be ORDER'ed
Bruce Momjian's avatar
Bruce Momjian committed
	o Ensure we have array-eq operators for every built-in array type
Bruce Momjian's avatar
Bruce Momjian committed
	o Support construction of array result values in expressions

Bruce Momjian's avatar
Bruce Momjian committed
* BINARY DATA
Bruce Momjian's avatar
Bruce Momjian committed
	o Improve vacuum of large objects, like /contrib/vacuumlo
Bruce Momjian's avatar
Bruce Momjian committed
	o Add security checking for large objects
	o Make file in/out interface for TOAST columns, similar to large object
	  interface (force out-of-line storage and no compression)
	o Auto-delete large objects when referencing row is deleted
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
MULTI-LANGUAGE SUPPORT
----------------------
Bruce Momjian's avatar
Bruce Momjian committed

* Add NCHAR (as distinguished from ordinary varchar),
Bruce Momjian's avatar
Bruce Momjian committed
* Allow LOCALE on a per-column basis, default to ASCII
Bruce Momjian's avatar
Bruce Momjian committed
* Support multiple simultaneous character sets, per SQL92
Bruce Momjian's avatar
Bruce Momjian committed
* Allow setting database character set without multibyte enabled
Bruce Momjian's avatar
Bruce Momjian committed
* Improve Unicode combined character handling
Bruce Momjian's avatar
Bruce Momjian committed
* Optimize locale to have minimal performance impact when not used (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
* Add octet_length_server() and octet_length_client() (Thomas, Tatsuo)
Bruce Momjian's avatar
Bruce Momjian committed
* Make octet_length_client the same as octet_length() (?)
Bruce Momjian's avatar
Bruce Momjian committed
VIEWS / RULES
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
* Automatically create rules on views so they are updateable, per SQL92 [view]
Bruce Momjian's avatar
Bruce Momjian committed
* Add the functionality for WITH CHECK OPTION clause of CREATE VIEW
Bruce Momjian's avatar
Bruce Momjian committed
* Allow NOTIFY in rules involving conditionals
Bruce Momjian's avatar
Bruce Momjian committed
* Allow temporary views
Bruce Momjian's avatar
Bruce Momjian committed
* Require view using temporary tables to be temporary views
Bruce Momjian's avatar
Bruce Momjian committed
* Move psql backslash information into views
Bruce Momjian's avatar
Bruce Momjian committed
* Allow RULE recompilation
Bruce Momjian's avatar
Bruce Momjian committed
* -Remove brackets as multi-statement rule grouping, must use parens (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
* Prevent aggregates from being used in rule WHERE clauses
Bruce Momjian's avatar
Bruce Momjian committed

INDEXES
Bruce Momjian's avatar
Bruce Momjian committed

* Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
  fails index can't store constant parameters
Bruce Momjian's avatar
Bruce Momjian committed
* Order duplicate index entries by tid for faster heap lookups
Bruce Momjian's avatar
Bruce Momjian committed
* Allow inherited tables to inherit index, UNIQUE constraint, and primary
  key, foreign key  [inheritance]
Bruce Momjian's avatar
Bruce Momjian committed
* UNIQUE INDEX on base column not honored on inserts from inherited table
  INSERT INTO inherit_table (unique_index_col) VALUES (dup) should fail
  [inheritance]
Bruce Momjian's avatar
Bruce Momjian committed
* Allow UPDATE/DELETE on inherited table
Bruce Momjian's avatar
Bruce Momjian committed
* Have UPDATE/DELETE clean out indexes
Bruce Momjian's avatar
Bruce Momjian committed
* Add UNIQUE capability to non-btree indexes
Bruce Momjian's avatar
Bruce Momjian committed
* Add btree index support for reltime, tinterval, regproc
* Add rtree index support for line, lseg, path, point
Bruce Momjian's avatar
Bruce Momjian committed
* Certain indexes will not shrink, e.g. oid indexes with many inserts
Bruce Momjian's avatar
Bruce Momjian committed
* Use indexes for min() and max() or convert to SELECT col FROM tab ORDER
Bruce Momjian's avatar
Bruce Momjian committed
  BY col DESC LIMIT 1 if appropriate index exists and WHERE clause acceptible
Bruce Momjian's avatar
Bruce Momjian committed
* Allow LIKE indexing optimization for non-ASCII locales
Bruce Momjian's avatar
Bruce Momjian committed
* Use index to restrict rows returned by multi-key index when used with
  non-consecutive keys or OR clauses, so fewer heap accesses
* Be smarter about insertion of already-ordered data into btree index
* Add deleted bit to index tuples to reduce heap access
* Prevent index uniqueness checks when UPDATE does not modifying column
Bruce Momjian's avatar
Bruce Momjian committed
* Add bitmap indexes [performance]
Bruce Momjian's avatar
Bruce Momjian committed
* Improve handling of index scans for NULL
Bruce Momjian's avatar
Bruce Momjian committed
* Allow SELECT * FROM tab WHERE int2col = 4 to use int2col index, int8,
  float4, numeric/decimal too [optimizer]
Bruce Momjian's avatar
Bruce Momjian committed
* Improve concurrency in GIST
Bruce Momjian's avatar
Bruce Momjian committed
* Add FILLFACTOR to index creation
Bruce Momjian's avatar
Bruce Momjian committed
* Improve concurrency of hash indexes (Neil Conway)
Bruce Momjian's avatar
Bruce Momjian committed
* Test hash index performance and recommend or discourage usage
Bruce Momjian's avatar
Bruce Momjian committed

COMMANDS
Bruce Momjian's avatar
Bruce Momjian committed

* Add SIMILAR TO to allow character classes, 'pg_[a-c]%'
Bruce Momjian's avatar
Bruce Momjian committed
* Add BETWEEN ASYMMETRIC/SYMMETRIC (Christopher)
Bruce Momjian's avatar
Bruce Momjian committed
* -Remove LIMIT #,# and force use LIMIT and OFFSET clauses in 7.3 (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
* Allow LIMIT/OFFSET to use expressions
Bruce Momjian's avatar
Bruce Momjian committed
* Disallow TRUNCATE on tables that are involved in referential constraints
Bruce Momjian's avatar
Bruce Momjian committed
* Add OR REPLACE clauses to non-FUNCTION object creation
Bruce Momjian's avatar
Bruce Momjian committed
* CREATE TABLE AS can not determine column lengths from expressions [atttypmod]
* Allow UPDATE to handle complex aggregates [update]
Bruce Momjian's avatar
Bruce Momjian committed
* -Prevent create/drop scripts from allowing extra args (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
* Allow command blocks to ignore certain types of errors
Bruce Momjian's avatar
Bruce Momjian committed
* Add checks for missing parameters to shell script, to prevent
  over-shifting
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
* ALTER
Bruce Momjian's avatar
Bruce Momjian committed
	o ALTER TABLE ADD COLUMN does not honor DEFAULT and non-CHECK CONSTRAINT
	o ALTER TABLE ADD COLUMN to inherited table put column in wrong place
Bruce Momjian's avatar
Bruce Momjian committed
	  [inheritance]
Bruce Momjian's avatar
Bruce Momjian committed
	o Add ALTER TABLE DROP COLUMN feature [drop]
Bruce Momjian's avatar
Bruce Momjian committed
	o Add ALTER FUNCTION
	o Add ALTER TABLE DROP non-CHECK CONSTRAINT
	o -ALTER TABLE ADD PRIMARY KEY (Tom)
	o -ALTER TABLE ADD UNIQUE (Tom)
	o -ALTER TABLE ALTER COLUMN SET/DROP NOT NULL (Christopher Kings-Lynne)
Bruce Momjian's avatar
Bruce Momjian committed
	o ALTER TABLE ADD COLUMN column SERIAL doesn't create sequence
Bruce Momjian's avatar
Bruce Momjian committed
	o ALTER TABLE ADD COLUMN column SET DEFAULT should fill existing
Bruce Momjian's avatar
Bruce Momjian committed
	  rows with DEFAULT value
	o -Have ALTER TABLE OWNER change all dependant objects like indexes
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
* CLUSTER
	o Cluster all tables at once
	o Prevent loss of indexes, permissions, inheritance
Bruce Momjian's avatar
Bruce Momjian committed
	o Automatically maintain clustering on a table

Bruce Momjian's avatar
Bruce Momjian committed
* COPY
Bruce Momjian's avatar
Bruce Momjian committed
	o Allow specification of column names
	o Allow dump/load of CSV format
Bruce Momjian's avatar
Bruce Momjian committed
	o Change syntax to WITH DELIMITER, (keep old syntax around?)
Bruce Momjian's avatar
Bruce Momjian committed
	o Allow COPY to report error lines and continue;  optionally
	  allow error codes to be specified; requires savepoints or can
Bruce Momjian's avatar
Bruce Momjian committed
	  not be run in a multi-statement transaction
Bruce Momjian's avatar
Bruce Momjian committed
	o Generate failure on short COPY lines rather than pad NULLs
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
* CURSOR
Bruce Momjian's avatar
Bruce Momjian committed
	o Allow BINARY option to SELECT, just like DECLARE
Bruce Momjian's avatar
Bruce Momjian committed
	o MOVE 0 should not move to end of cursor
Bruce Momjian's avatar
Bruce Momjian committed
	o Allow UPDATE/DELETE WHERE CURRENT OF cursor using per-cursor tid
	  stored in the backend
Bruce Momjian's avatar
Bruce Momjian committed
	o Prevent DROP of table being referenced by our own open cursor
Bruce Momjian's avatar
Bruce Momjian committed
	o Allow cursors outside transactions [cursor]
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
* INSERT
Bruce Momjian's avatar
Bruce Momjian committed
	o Allow INSERT/UPDATE of system-generated oid value for a row
	o Allow INSERT INTO tab (col1, ..) VALUES (val1, ..), (val2, ..)
Bruce Momjian's avatar
Bruce Momjian committed
	o -Allow INSERT INTO my_table VALUES (a, b, c, DEFAULT, x, y, z, ...)
Bruce Momjian's avatar
Bruce Momjian committed
	o Disallow missing columns in INSERT ... VALUES, per ANSI
Bruce Momjian's avatar
Bruce Momjian committed
	o Allow INSERT/UPDATE ... RETURNING new.col or old.col; handle
	  RULE cases (Philip)
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
* SHOW/SET
Bruce Momjian's avatar
Bruce Momjian committed
	o Add SHOW command to display locks
	o Add SET or BEGIN timeout parameter to cancel query
	o Add SET REAL_FORMAT and SET DOUBLE_PRECISION_FORMAT using printf args
	o Remove SET KSQO option now that OR processing is improved (Tom)
	o Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM
Bruce Momjian's avatar
Bruce Momjian committed
	  ANALYZE, and CLUSTER
Bruce Momjian's avatar
Bruce Momjian committed
	o Add SHOW command to see locale
Bruce Momjian's avatar
Bruce Momjian committed
	o Allow SHOW to output as a query result, like EXPLAIN
Bruce Momjian's avatar
Bruce Momjian committed
	o Abort all, some or, no SET changes made in an aborted transaction
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
* SERVER-SIDE LANGUAGES
Bruce Momjian's avatar
Bruce Momjian committed
	o Allow PL/PgSQL's RAISE function to take expressions
Bruce Momjian's avatar
Bruce Momjian committed
	o Fix PL/PgSQL to handle quoted mixed-case identifiers
Bruce Momjian's avatar
Bruce Momjian committed
	o Change PL/PgSQL to use palloc() instead of malloc()
	o Add untrusted version of plpython
	o Add plsh server-side shell language (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
	o Allow Java server-side programming, http://pljava.sourceforge.net
	  [java]
Bruce Momjian's avatar
Bruce Momjian committed
	o Fix problems with complex temporary table creation/destruction
	  without using PL/PgSQL EXECUTE, needs cache prevention/invalidation
Bruce Momjian's avatar
Bruce Momjian committed
        o Fix PL/pgSQL RENAME to work on variables other than OLD/NEW
Bruce Momjian's avatar
Bruce Momjian committed

CLIENTS
Bruce Momjian's avatar
Bruce Momjian committed
* Have pg_dump use LEFT OUTER JOIN in multi-table SELECTs
Bruce Momjian's avatar
Bruce Momjian committed
  or multiple SELECTS to avoid bad system catalog entries
Bruce Momjian's avatar
Bruce Momjian committed
* -Have pg_dump -C dump database location and encoding information
Bruce Momjian's avatar
Bruce Momjian committed
* Allow psql \d to show foreign keys
* Allow psql \d to show temporary table structure
* Allow psql to show transaction status if backend protocol changes made
Bruce Momjian's avatar
Bruce Momjian committed
* Add XML interface:  psql, pg_dump, COPY, separate server (?)
Bruce Momjian's avatar
Bruce Momjian committed
* Add config file check for $ODBCINI, $HOME/.odbc.ini, installpath/etc/odbc.ini
* -Have pg_dump use ADD PRIMARY KEY after COPY, for performance (Neil Conway)
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
* JDBC
Bruce Momjian's avatar
Bruce Momjian committed
	o Comprehensive test suite. This may be available already.
	o Updateable resultSet (must be done in backend code)
	o JDBC-standard BLOB support
	o Error Codes (pending backend implementation)
Bruce Momjian's avatar
Bruce Momjian committed
	o Support both 'make' and 'ant'
Barry Lind's avatar
Barry Lind committed
	o Fix LargeObject API to handle OIDs as unsigned ints
	o -Implement cancel() method on Statement
Barry Lind's avatar
Barry Lind committed
	o Use cursors implicitly to avoid large results (see setCursorName())
        o Add support for CallableStatements
	o Add LISTEN/NOTIFY support to the JDBC driver (Barry)
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
* ECPG
Bruce Momjian's avatar
Bruce Momjian committed
	o Implement set descriptor, using descriptor
	o Make casts work in variable initializations
	o Implement SQLDA
Bruce Momjian's avatar
Bruce Momjian committed
	o Solve cardinality > 1 for input descriptors / variables
Bruce Momjian's avatar
Bruce Momjian committed
	o Understand structure definitions outside a declare section
	o sqlwarn[6] should be 'W' if the PRECISION or SCALE value specified
	o Improve error handling
	o Allow :var[:index] or :var[<integer>] as cvariable for an array var
	o Add a semantic check level, e.g. check if a table really exists
	o Fix nested C comments
	o Add SQLSTATE
Bruce Momjian's avatar
Bruce Momjian committed
	o fix handling of DB attributes that are arrays
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
* ODBC
	o ODBC 3.0 support
	o Unicode(UCS-2) support
	o Updatable cursors support

Bruce Momjian's avatar
Bruce Momjian committed
REFERENTIAL INTEGRITY
---------------------
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
* Add MATCH PARTIAL referential integrity [foreign]
Bruce Momjian's avatar
Bruce Momjian committed
* Add deferred trigger queue file (Jan)
Bruce Momjian's avatar
Bruce Momjian committed
* -Allow oid to act as a foreign key
Bruce Momjian's avatar
Bruce Momjian committed
* Implement dirty reads and use them in RI triggers
Bruce Momjian's avatar
Bruce Momjian committed
* Make triggers refer to columns by number, not name
Bruce Momjian's avatar
Bruce Momjian committed
* Enforce referential integrity for system tables
* -Allow user to control trigger firing order (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
* Add ALTER TRIGGER ... RENAME
Bruce Momjian's avatar
Bruce Momjian committed
* Change foreign key constraint for array -> element to mean element
Bruce Momjian's avatar
Bruce Momjian committed
  in array
Bruce Momjian's avatar
Bruce Momjian committed
* Fix foreign key constraints to not error on intermediate db states (Stephan)
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
DEPENDENCY CHECKING
-------------------
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
* Add pg_depend table for dependency recording; use sysrelid, oid,
  depend_sysrelid, depend_oid, name
Bruce Momjian's avatar
Bruce Momjian committed
* Auto-destroy sequence on DROP of table with SERIAL; perhaps a separate
Bruce Momjian's avatar
Bruce Momjian committed
  SERIAL type
Bruce Momjian's avatar
Bruce Momjian committed
* Have SERIAL generate non-colliding sequence names when we have 
  auto-destruction
Bruce Momjian's avatar
Bruce Momjian committed
* Prevent column dropping if column is used by foreign key
* Propagate column or table renaming to foreign key constraints
Bruce Momjian's avatar
Bruce Momjian committed
* Automatically drop constraints/functions when object is dropped
Bruce Momjian's avatar
Bruce Momjian committed
* Make constraints clearer in dump file
* Make foreign keys easier to identify
Bruce Momjian's avatar
Bruce Momjian committed
* Flush cached query plans when their underlying catalog data changes
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
TRANSACTIONS
Bruce Momjian's avatar
Bruce Momjian committed

* Allow autocommit so always in a transaction block
* Overhaul bufmgr/lockmgr/transaction manager
Bruce Momjian's avatar
Bruce Momjian committed
* Allow savepoints / nested transactions [transactions]
Bruce Momjian's avatar
Bruce Momjian committed


* Add sql3 recursive unions
Bruce Momjian's avatar
Bruce Momjian committed
* Add the concept of dataspaces/tablespaces [tablespaces]
* Allow SQL92 schemas (Tom) [schema]
* Allow queries across multiple databases [crossdb]
Bruce Momjian's avatar
Bruce Momjian committed
* Add pre-parsing phase that converts non-ANSI features to supported features
Bruce Momjian's avatar
Bruce Momjian committed
* Allow plug-in modules to emulate features from other databases
Bruce Momjian's avatar
Bruce Momjian committed
* SQL*Net listener that makes PostgreSQL appear as an Oracle database
Bruce Momjian's avatar
Bruce Momjian committed
  to clients
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
PERFORMANCE
Bruce Momjian's avatar
Bruce Momjian committed
FSYNC
Bruce Momjian's avatar
Bruce Momjian committed
* Delay fsync() when other backends are about to commit too [fsync]
Bruce Momjian's avatar
Bruce Momjian committed
	o Determine optimal commit_delay value
Bruce Momjian's avatar
Bruce Momjian committed
* Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options
Bruce Momjian's avatar
Bruce Momjian committed
	o Allow multiple blocks to be written to WAL with one write()
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
* Cache most recent query plan(s) (Neil) [prepare]
* Shared catalog cache, reduce lseek()'s by caching table size in shared area
Bruce Momjian's avatar
Bruce Momjian committed
* Add free-behind capability for large sequential scans (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
* Allow binding query args over FE/BE protocol
Bruce Momjian's avatar
Bruce Momjian committed
* Consider use of open/fcntl(O_DIRECT) to minimize OS caching
Bruce Momjian's avatar
Bruce Momjian committed
* Make blind writes go through the file descriptor cache
Bruce Momjian's avatar
Bruce Momjian committed

Bruce Momjian's avatar
Bruce Momjian committed
VACUUM
Bruce Momjian's avatar
Bruce Momjian committed

* Improve speed with indexes (perhaps recreate index instead) [vacuum]
* Reduce lock time by moving tuples with read lock, then write
  lock and truncate table [vacuum]
* Provide automatic running of vacuum in the background (Tom)
Bruce Momjian's avatar
Bruce Momjian committed


* Make locking of shared data structures more fine-grained
* Add code to detect an SMP machine and handle spinlocks accordingly
Bruce Momjian's avatar
Bruce Momjian committed
  from distributted.net, http://www1.distributed.net/source, 
  in client/common/cpucheck.cpp
* Research use of sched_yield() for spinlock acquisition failure

STARTUP TIME
Bruce Momjian's avatar
Bruce Momjian committed
* Experiment with multi-threaded backend [thread]
Bruce Momjian's avatar
Bruce Momjian committed
* Add connection pooling [pool]
Bruce Momjian's avatar
Bruce Momjian committed
* Allow persistent backends [persistent]
Bruce Momjian's avatar
Bruce Momjian committed
* Create a transaction processor to aid in persistent connections and
  connection pooling
* Do listen() in postmaster and accept() in pre-forked backend
* Have pre-forked backend pre-connect to last requested database or pass
  file descriptor to backend pre-forked for matching database
Bruce Momjian's avatar
Bruce Momjian committed
* -Cache system catalog information in per-database files (Tom)
* Have after-change WAL write()'s write only modified data to kernel
* Reduce number of after-change WAL writes; they exist only to gaurd against
Bruce Momjian's avatar
Bruce Momjian committed
  partial page writes
* Turn off after-change writes if fsync is disabled (?)
Bruce Momjian's avatar
Bruce Momjian committed
* Add WAL index reliability improvement to non-btree indexes
* -Reorder postgresql.conf WAL items in order of importance (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
* Remove wal_files postgresql.conf option because WAL files are now recycled
* Find proper defaults for postgresql.conf WAL entries
* Add checkpoint_min_warning postgresql.conf option to warn about checkpoints
  that are too frequent

OPTIMIZER / EXECUTOR
--------------------

* Improve Subplan list handling
* Allow Subplans to use efficient joins(hash, merge) with upper variable
* Improve dynamic memory allocation by introducing tuple-context memory
  allocation (Tom)
* Add hash for evaluating GROUP BY aggregates
Bruce Momjian's avatar
Bruce Momjian committed
* Nested FULL OUTER JOINs don't work (Tom)
* Allow merge and hash joins on expressions not just simple variables (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
* -Add new pg_proc cachable settings to specify whether function can be
Bruce Momjian's avatar
Bruce Momjian committed
  evaluated only once or once per query
* -Change FIXED_CHAR_SEL to 0.20 from 0.04 to give better selectivity (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
* Make IN/NOT IN have similar performance to EXISTS/NOT EXISTS [exists]
Bruce Momjian's avatar
Bruce Momjian committed
* Missing optimizer selectivities for date, r-tree, etc. [optimizer]
Bruce Momjian's avatar
Bruce Momjian committed
* Allow ORDER BY ... LIMIT to select top values without sort or index
Bruce Momjian's avatar
Bruce Momjian committed
  using a sequential scan for highest/lowest values (Oleg)
Bruce Momjian's avatar
Bruce Momjian committed
* Inline simple SQL functions to avoid overhead (Tom)
* Precompile SQL functions to avoid overhead (Neil Conway)
Bruce Momjian's avatar
Bruce Momjian committed
* Add utility to compute accurate random_page_cost value
Bruce Momjian's avatar
Bruce Momjian committed
* Improve ability to display optimizer analysis using OPTIMIZER_DEBUG
MISCELLANEOUS

* Do async I/O for faster random read-ahead of data
* Get faster regex() code from Henry Spencer <henry@zoo.utoronto.ca>
  when it is available
* Use mmap() rather than SYSV shared memory or to write WAL files (?) [mmap]
Bruce Momjian's avatar
Bruce Momjian committed
* Improve caching of attribute offsets when NULLs exist in the row
Bruce Momjian's avatar
Bruce Momjian committed
* Add Intimate Shared Memory(ISM) for Solaris
* Add documentation to lock shared memory into RAM for each OS, if possible
Bruce Momjian's avatar
Bruce Momjian committed
* -Use faster flex flags for performance improvement (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
* Add BSD-licensed qsort() for Solaris
Bruce Momjian's avatar
Bruce Momjian committed

SOURCE CODE
* Add use of 'const' for variables in source tree
* -Fix problems with libpq non-blocking/async code
Bruce Momjian's avatar
Bruce Momjian committed
* Make sure all block numbers are unsigned to increase maximum table size
Bruce Momjian's avatar
Bruce Momjian committed
* Use BlockNumber rather than int where appropriate
Bruce Momjian's avatar
Bruce Momjian committed
* Merge LockMethodCtl and LockMethodTable into one shared structure (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
* HOLDER/HOLDERTAB rename to PROCLOCK/PROCLOCKTAG (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
* Remove LockMethodTable.prio field, not used (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
* Add version file format stamp to heap and other table types
Bruce Momjian's avatar
Bruce Momjian committed
* Rename some /contrib modules from pg* to pg_*
Bruce Momjian's avatar
Bruce Momjian committed
* Move some things from /contrib into main tree
Bruce Momjian's avatar
Bruce Momjian committed
* Remove warnings created by -Wcast-align
Bruce Momjian's avatar
Bruce Momjian committed
* Move platform-specific ps status display info from ps_status.c to ports
Bruce Momjian's avatar
Bruce Momjian committed
* Make one version of simple_prompt() in code (Bruce, Tom)
* -Compile in syslog functionaility by default (Tatsuo)
Bruce Momjian's avatar
Bruce Momjian committed
* Modify regression tests to prevent failures do to minor numeric rounding
Bruce Momjian's avatar
Bruce Momjian committed
* Use our own getopt() for FreeBSD/OpenBSD to allow --xxx flags (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
* Add OpenBSD's getpeereid() call for local socket authentication (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
* Improve access-permissions check on data directory in Cygwin (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
* Report failure to find readline or zlib at end of configure run
Bruce Momjian's avatar
Bruce Momjian committed
* Add --port flag to regression tests
Bruce Momjian's avatar
Bruce Momjian committed
* Increase identifier length (NAMEDATALEN) if small performance hit,
  perhaps to standard length of 128;  change struct pgNotify to use pid 
  first, breaks notify API;  [namedatalen]
Bruce Momjian's avatar
Bruce Momjian committed
* Increase maximum number of function parameters if little wasted space
* Add documentation for perl, including mention of DBI/DBD perl location
* Add optional CRC checksum to heap and index pages
* Change representation of whole-tuple parameters to functions
Bruce Momjian's avatar
Bruce Momjian committed
* Evaluate AIX cs() spinlock macro for performance optimizations (Tatsuo)
Bruce Momjian's avatar
Bruce Momjian committed
* Clarify use of 'application' and 'command' tags in SGML docs
Bruce Momjian's avatar
Bruce Momjian committed
* Better document ability to build only certain interfaces (Marc)
* Remove or relicense modules that are not under the BSD license, if possible
Bruce Momjian's avatar
Bruce Momjian committed
* Remove memory/file descriptor freeing befor elog(ERROR)  (Bruce)
---------------------------------------------------------------------------


Developers who have claimed items are:
--------------------------------------
* Barry is Barry Lind <barry@xythos.com>
Bruce Momjian's avatar
Bruce Momjian committed
* Billy is Billy G. Allie <Bill.Allie@mug.org>
* Bruce is Bruce Momjian<pgman@candle.pha.pa.us>
Bruce Momjian's avatar
Bruce Momjian committed
* Christopher is Christopher Kings-Lynne <chriskl@familyhealth.com.au>
Bruce Momjian's avatar
Bruce Momjian committed
* D'Arcy is D'Arcy J.M. Cain <darcy@druid.net>
* Dave is Dave Cramer <dave@fastcrypt.com>
Bruce Momjian's avatar
Bruce Momjian committed
* Edmund is Edmund Mergl <E.Mergl@bawue.de>
* Hiroshi is Hiroshi Inoue <Inoue@tpf.co.jp>
* Karel is Karel Zak <zakkr@zf.jcu.cz>
* Jan is Jan Wieck <wieck@sapserv.debis.de>
Bruce Momjian's avatar
Bruce Momjian committed
* Liam is Liam Stewart <liams@redhat.com>
Bruce Momjian's avatar
Bruce Momjian committed
* Marc is Marc Fournier <scrappy@hub.org>
* Mark is Mark Hollomon <mhh@mindspring.com>
Bruce Momjian's avatar
Bruce Momjian committed
* Marko is Marko Kreen <marko@l-t.ee>
Bruce Momjian's avatar
Bruce Momjian committed
* Michael is Michael Meskes <meskes@postgresql.org>
Bruce Momjian's avatar
Bruce Momjian committed
* Neil is Neil Conway <nconway@klamath.dyndns.org>
Bruce Momjian's avatar
Bruce Momjian committed
* Oleg is Oleg Bartunov <oleg@sai.msu.su>
* Peter M is Peter T Mount <peter@retep.org.uk>
* Peter E is Peter Eisentraut<peter_e@gmx.net>
* Philip is Philip Warner <pjw@rhyme.com.au>
Bruce Momjian's avatar
Bruce Momjian committed
* Rod is Rod Taylor <rbt@zort.ca>
Bruce Momjian's avatar
Bruce Momjian committed
* Ross is Ross J. Reedstrom <reedstrm@wallace.ece.rice.edu>
* Ryan is Ryan Bradetich <rbrad@hpb50023.boi.hp.com>
* Stephan is Stephan Szabo <sszabo@megazone23.bigpanda.com>
* Tatsuo is Tatsuo Ishii <t-ishii@sra.co.jp>
* Thomas is Thomas Lockhart <lockhart@fourpalms.org>
Bruce Momjian's avatar
Bruce Momjian committed
* Tom is Tom Lane <tgl@sss.pgh.pa.us>
Bruce Momjian's avatar
Bruce Momjian committed
* TomH is Tom I Helbekkmo <tih@Hamartun.Priv.no>
Bruce Momjian's avatar
Bruce Momjian committed
* Vadim is Vadim B. Mikheev <vadim4o@email.com>