Skip to content
Snippets Groups Projects
Select Git revision
  • benchmark-tools
  • postgres-lambda
  • master default
  • REL9_4_25
  • REL9_5_20
  • REL9_6_16
  • REL_10_11
  • REL_11_6
  • REL_12_1
  • REL_12_0
  • REL_12_RC1
  • REL_12_BETA4
  • REL9_4_24
  • REL9_5_19
  • REL9_6_15
  • REL_10_10
  • REL_11_5
  • REL_12_BETA3
  • REL9_4_23
  • REL9_5_18
  • REL9_6_14
  • REL_10_9
  • REL_11_4
23 results

TODO

Blame
  • TODO 15.52 KiB
    TODO list for PostgreSQL
    ========================
    Last updated:		Tue Feb 20 12:25:28 EST 2001
    
    Current maintainer:	Bruce Momjian (pgman@candle.pha.pa.us)
    
    The most recent version of this document can be viewed at
    the PostgreSQL web site, http://www.PostgreSQL.org.
    
    A dash (-) marks changes that will appear in the upcoming 7.1 release.
    
    Names in brackets "[]" indicate more detailed information is available in
    the directory pgsql/doc/TODO.detail/ under that name.
    
    
    RELIABILITY
    -----------
    
    PARSER
    
    * SELECT pg_class FROM pg_class generates strange error
    * Alter TABLE ADD COLUMN does not honor DEFAULT, add CONSTRAINT
    * -Creating index of TIMESTAMP & RELTIME fails, or rename to DATETIME (Thomas)
    * -SELECT foo UNION SELECT foo is incorrectly simplified to SELECT foo
    * Unique index on base column not honored on inserts from inherited table
      INSERT INTO inherit_table (unique_index_col) VALUES (dup) should fail
      [inheritance] 
    * -Be smarter about promoting types when UNION merges different data types
    * -redesign INSERT ... SELECT to have two levels of target list
    * -have INTERSECT/EXCEPT prevent duplicates unless ALL is specified (Tom)
    * -SELECT col::DECIMAL(12,10); fails
    
    VIEWS
    
    * -Views containing aggregates sometimes fail (Jan)
    * -Creating view and inheriting the view causes view* to show
      duplicates [inheritance] 
    * -Disallow LOCK on view (Mark Hollomon)
    
    MISC
    
    * Plpgsql does not handle quoted mixed-case identifiers
    * -Buffer reference counting bugfixes (Tom)
    * -Fix libpq bug that causes it to drop backend error message sent
      just before connection closure (ie, any FATAL error message)
    * -SELECT ... UNION ... ORDER BY fails when sort expr not in result list
    * -SELECT ... UNION ... GROUP BY fails if column types disagree, no type
      promotion occurs
    * -Modification  of  pg_class  can  happen while table in use by
      another backend.  Might  lead  to  MVCC  inside  of  syscache
    * Permission to DELETE table allows UPDATE also
    * SELECT cash_out(1) causes crash
    
    ENHANCEMENTS
    ------------
    
    URGENT
    
    * -Add OUTER joins, left and right (Tom, Thomas)
    * -Allow long tuples by chaining or auto-storing outside db (TOAST) (Jan)
    * -Fix memory leak for expressions (Tom) 
    * Add replication of distributed databases [replication]
    	o automatic fallover
    	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)
    * Point-in-time data recovery using backup and write-ahead log
    * Allow row re-use without vacuum (Vadim)
    
    ADMIN
    
    * More access control over who can create tables and use locks (Karel)
    * -Test syslog functionality
    * Convert remaining fprintf(stderr,...)/perror() to elog()
    * Allow elog() to return error codes, module name, file name, line
      number, not just messages
    * Allow international error message support and add error codes
    * -Unify configuration into one configuration file (Peter E)
    * -use setproctitle() if it exists for 'ps' display of status
    * -Prevent initdb from running wrong version of postmaster/postgres (Peter E)
    * Remove unused files during database vacuum or postmaster startup
    
    TYPES
    
    * Nchar (as distinguished from ordinary varchar),
    * Domain capability
    * -Add STDDEV/VARIANCE() function for standard deviation computation/variance
    * -Allow compression of large fields or a compressed field type
    * -Large objects
    	o -Fix large object mapping scheme, own typeid or reltype (Peter E)
    	o -Not to stuff everything as files in a single directory, hash dirs
    	o -Allow large object vacuuming
    	o -Tables that start with xinv confused to be large objects
    * Add IPv6 capability to INET/CIDR types
    * -Fix improper masking of some inet/cidr types 
    * Add conversion function from text to inet
    * Make a separate SERIAL type?
    * Store binary-compatible type information in the system
    * -Add support for & operator (Peter E)
    * Allow LOCALE on a per-column basis, default to ASCII
    * Add SHOW command to see locale
    * Allow nulls in arrays
    * Allow arrays to be ORDER'ed
    * Support construction of array result values in expressions
    * Change foreign key constraint for array -> element to mean element
       in array
    * Remove Money type, add money formatting for decimal type
    * Declare typein/out functions in pg_proc with a special "C string" data type
    * Add non-large-object binary field
    * Functions returning sets don't really work right[function]
    * -Add hash for int8 (Tom)
    * SELECT col FROM tab WHERE numeric_col = 10.1 fails
    * -Get BIT type working
    * Allow better handling of numeric constants, type conversion [typeconv]
    * Support multiple simultaneous character sets, per SQL92
    * Reject character sequences those are not valid in their charset
    * Make functions more multi-byte aware, i.e. trim()
    * Make n of CHAR(n)/VARCHAR(n) the number of letters, not bytes
    * -Update macaddr manufacturer numbers, or remove the function macaddr_manuf()
    * Add btree index support for reltime, tinterval, regproc
    * Add rtree index support for line, lseg, path, point
    * Make binary/file in/out interface for TOAST columns
    * SELECT cash_out(2) crashes because of opaque
    * Add SQL standard function bit_length()
    
    VIEWS
    
    * -Allow DISTINCT on views
    * -Allow views of aggregate columns
    * -Allow views with subselects
    * Automatically create rules on views so they are updateable, per SQL92
    * -Change elog for complex view ins|upd|del to "cannot {ins|upd|del}
    * Add the functionality for "with check option" clause of create view
    * Allow NOTIFY in rules involving conditionals
    * Evaluate INSERT rules at end of query, rather than beginning
    
    INDEXES
    
    * Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
      fails index can't store constant parameters
    * -Allow SQL function indexes
    * Add FILLFACTOR to index creation
    * Re-enable partial indexes
    * Allow inherited tables to inherit index
    
    COMMANDS
    
    * ALTER TABLE ADD COLUMN to inherited table put column in wrong place 
      [inheritance]
    * -Add ALTER TABLE ALTER COLUMN feature (Peter E)
    * Add ALTER TABLE DROP COLUMN feature [drop]
    * -Add ALTER TABLE command to change table ownership (Mark H)
    * Add ALTER FUNCTION 
    * Add ALTER TABLE ... DROP CONSTRAINT
    * -Add ALTER USER command to change user db attributes (Peter E)
    * Automatically drop constraints/functions when object is dropped
    * CLUSTER
    	* cluster all tables at once
    	* prent lose of indexes, permissions, inheritance
    	* Automatically keep clustering on a table
    	* Keep statistics about clustering, perhaps during VACUUM ANALYZE
    	  [optimizer]
    * Add SIMILAR TO to allow character classes, 'pg_[a-c]%'
    * Auto-destroy sequence on DROP of table with SERIAL (Ryan)
    * Allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison [lock]
    * Allow INSERT/UPDATE of system-generated oid value for a row
    * Allow INSERT INTO my_table VALUES (a, b, c, DEFAULT, x, y, z, ...)
    * Allow INSERT INTO tab (col1, ..) VALUES (val1, ..), (val2, ..)
    * -Allow multi-level query trees for INSERT INTO ... SELECT
    * -Allow ORDER BY...LIMIT in INSERT INTO ... SELECT (Tom)
    * -Allow ESCAPE '\' at the end of LIKE for ANSI compliance (Thomas)
    * -Rewrite the LIKE handling by rewriting the user string with the 
      supplied ESCAPE
    * Allow RULE recompilation
    * -Support UNION/INTERSECT/EXCEPT in sub-selects
    * -Allow DELETE and UPDATE to use inheritance
    * Allow BINARY option to SELECT, like we do with DECLARE
    * MOVE 0 should not move to end of cursor
    * Overhaul ACL (access control) code
    * Add SHOW command to display locks
    * Bring INSERT ... VALUES up to full SQL92 spec, disallow missing
      columns, allow DEFAULT
    
    CLIENTS
    
    * Make NULL's come out at the beginning or end depending on the
      ORDER BY direction
    * COPY
    	* Update reltuples in COPY
    	* Allow specification of column names
    	* Allow dump/load of CSV format
    * fix array handling for ECPG
    * -add pg_dump option to dump type names as standard ANSI types
    * have pg_dump use LEFT OUTER JOIN in multi-table SELECTs
      or multiple SELECTS to avoid bad system catalog entries
    * -make pg_dump dump in oid order, so dependencies are resolved (Philip)
    * allow psql \d to show primary and foreign keys
    * allow psql \d to show temporary table structure
    * add XML interface capability
    * -Allow dumping of users/groups separately
    * Add a global RESET command for use with connection pooling
    * Remove <=6.3 version compatibility in ODBC?
    * Add SET REAL_FORMAT and SET DOUBLE_PRECISION_FORMAT using printf args
    
    REFERENTIAL INTEGRITY
    
    * Add MATCH PARTIAL referential integrity
    * Check that primary key exists at foreign key definition time
    * Prevent column dropping if column is used by foreign key
    * Propagate column or table renaming to foreign key constraints
    * -Emit a warning at foreign key creation time if no UNIQUE index
      exists on referenced primary key attributes
    * Add deferred trigger queue file (Jan)
    * Allow oid to act as a foreign key
    * Implement dirty reads and use them in RI triggers
    * Enforce referential integrity for system tables
    * INSERT & UPDATE/DELETE in transaction of primary key fails with 
      deferredTriggerGetPreviousEvent or "change violation" [foreign]
    * Add unique indexes to pg_shadow.usename and pg_shadow.usesysid
    
    EXOTIC FEATURES
    
    * Add sql3 recursive unions
    * Add the concept of dataspaces/tablespaces [tablespaces]
    * Allow queries across multiple databases
    * Allow nested transactions (Vadim)
    * Allow INSERT/UPDATE ... RETURNING new.col or old.col (Philip)
    * SQL*Net listener that makes PostgreSQL appear as an Oracle database 
      to clients
    * Incremental backups
    * Allow SQL92 schemas
    * Handle transaction rollover [transactions]
    
    MISCELLANEOUS
    
    * Increase identifier length(NAMEDATALEN) if small performance hit
    * Create a background process for each database that runs while
      database is idle, finding superceeded rows, gathering stats and vacuuming
    * Add UNIQUE capability to non-btree indexes
    * Certain indexes will not shrink, i.e. oid indexes with many inserts (Vadim)
    * Have UPDATE/DELETE clean out indexes
    * Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
    * Allow DELETE WHERE CURRENT OF cursor
    * -Transaction log, so re-do log can be on a separate disk by
      with after-row images (Vadim)
    * Populate backend status area and write program to dump status data
    * Make oid use unsigned int more reliably, pg_atoi()
    * Put sort files in their own directory
    * Allow autocommit so always in a transaction block
    * Show location of syntax error in query [yacc]
    * -Redesign the function call interface to handle NULLs better (Tom)
    * Missing optimizer selectivities for date, r-tree, etc. [optimizer]
    * Overhaul bufmgr/lockmgr/transaction manager
    * -redesign UNION structures to have separarate target lists
    * -Use IPC_EXCL when creating shared memory and semaphores (Tom)
    * Encrpyt passwords in pg_shadow table using MD5 (Vince)
    * -Use flock() to prevent multiple postmasters on the same port (Tom)
    * Allow Java server-side programming [java]
    * Add sed-like regular expression search/replace capability
    
    PERFORMANCE
    -----------
    
    -FSYNC
    
    * -Allow transaction commits with rollback with no-fsync performance
      (Vadim)
    
    INDEXES
    
    * Use indexes to find min() and max()
    * Use index to restrict rows returned by multi-key index when used with
      non-consecutive keys or OR clauses, so fewer heap accesses
    * Allow SELECT * FROM tab WHERE int2col = 4 use int2col index, int8,
      float4, numeric/decimal too [optimizer]
    * -Include heap CTID in btree index keys, remove equal-key cruft from
      btree (Tom)
    * Use indexes with CIDR '<<' (contains) operator
    * Allow LIKE indexing optimization for non-ASCII locales
    
    CACHE
    
    * Cache most recent query plan(s) (Karel) [prepare]
    * Shared catalog cache, reduce lseek()'s by caching table size in shared area
    
    MISC
    
    * Allow compression of log and meta data
    * Do async I/O to do better 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(?)
    * -Make oid use oidin/oidout not int4in/int4out in pg_type.h (Tom)
    * Improve Subplan list handling
    * Allow Subplans to use efficient joins(hash, merge) with upper variable
    * -use fmgr_info()/fmgr_faddr() instead of fmgr() calls in high-traffic
      places, like GROUP BY, UNIQUE, index processing, etc.
    * improve dynamic memory allocation by introducing tuple-context memory
      allocation (Tom)
    * -In WHERE tab1.x=3 AND tab1.x=tab2.y, add tab2.y=3
    * allow configuration of maximum number of open files
    * Remove pg_listener index
    * Gather more accurate dispersion statistics using indexes
    * Improve statistics storage in pg_class [performance]
    * VACUUM
    	* 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]
    	* -Redesign ANALYZE in VACUUM so it can be run separately without locks
    	* Make ANALYZE a separate command
    	* Allow ANALYZE to process a certain random precentage of rows
    * Add connection pooling [pool]
    * Allow persistent backends [persistent]
    * Create a transaction processor to aid in persistent connections and
      connection pooling
    * Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM
      ANALYZE, and CLUSTER
    * Delay fsync() when other backends are about to commit too [fsync]
    * Prevent pg_attribute from having duplicate oids for indexes (Tom)
    * Force transactions that commit at near the same time use a single fsync()
    * Make blind writes go through the file descriptor cache
    * Add LAZY VACUUM (Vadim)
    * Add deleted bit to index tuples to reduce heap access
    * Prevent index uniqueness checks when UPDATE does not modify column
    
    SOURCE CODE
    -----------
    * Add use of 'const' for variables in source tree
    * -Fix C optimizer problem where fmgr_ptr calls return different types (Tom)
    * Does Mariposa source contain any other bug fixes?
    * Remove SET KSQO option now that OR processing is improved (Tom)
    * -Use macros to define NT open() file parameters, remove NT-specific defines
    * -Change CURRENT to OLD internally for rules (Bruce)
    * Replace the use of fprint(stderr, ...) with elog() in backend code
    * -Allow libedit to be used in place of libreadline
    * -BSD/OS does not support locale because there is no LC_MESSAGES (Bruce)
    * Remove unused pg_variable, pg_inheritproc, pg_ipl tables
    * Experiment with multi-threaded backend [thread]
    * Fix problems with libpq non-blocking/async code [async]
    * Merge global and template BKI files (Peter E)
    * Fix username/password length limits in all areas
    * Remove compile-time upper limit on number of backends (MAXBACKENDS) (Tom)
    * Make sure all block numbers are unsigned to increase maximum table size
    
    ---------------------------------------------------------------------------
    
    
    Developers who have claimed items are:
    --------------------------------------
    	* Billy is Billy G. Allie <Bill.Allie@mug.org>
    	* Brook is Brook Milligan <brook@trillium.NMSU.Edu>
    	* Bruce is Bruce Momjian<pgman@candle.pha.pa.us>
    	* D'Arcy is D'Arcy J.M. Cain <darcy@druid.net>
    	* 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>
     	* Marc is Marc Fournier <scrappy@hub.org>
    	* Mark is Mark Hollomon <mhh@mindspring.com>
    	* Michael is Michael Meskes <meskes@postgresql.org>
    	* 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>
    	* 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@alumni.caltech.edu>
    	* Tom is Tom Lane <tgl@sss.pgh.pa.us>
    	* TomH is Tom I Helbekkmo <tih@Hamartun.Priv.NO>
    	* Vadim is Vadim B. Mikheev <vadim4o@email.com>