authorBruce Momjian
Tue, 28 Sep 1999 04:35:18 +0000 (04:35 +0000)
committerBruce Momjian
Tue, 28 Sep 1999 04:35:18 +0000 (04:35 +0000)


PostgreSQL TODO list
ALINK="#0000FF">



TODO list for PostgreSQL


Last updated:           Tue Sep 28 00:34:21 EDT 1999


Current maintainer:     Bruce Momjian ([email protected])


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 next release.


Names in brackets "[]" indicate more detailed information is available in

the directory pgsql/doc/TODO.detail/ under that name.

RELIABILITY




RESOURCES


      
  •  Elog() does not free all its memory(Jan)
      
  •  spinlock stuck problem when elog(FATAL) and elog(ERROR) inside bufmgr
      
  •  Recover or force failure when disk space is exhausted



PARSER


      
  •  Disallow inherited columns with the same name as new columns
      
  •  INSERT INTO ... SELECT with AS columns matching result columns problem
      
  •  SELECT pgclass FROM pgclass generates strange error
      
  •  Alter TABLE ADD COLUMN does not honor DEFAULT, add CONSTRAINT
      
  •  Do not allow bpchar column creation without length
      
  •  -Select a[1] FROM test fails, it needs test.a[1]
      
  •  -Array index references without table name cause problems [array]
      
  •  Update table SET table.value = 3 fails(SQL standard says this is OK)
      
  •  Creating index of TIMESTAMP & RELTIME fails, or rename to DATETIME(Thomas)
      
  •  SELECT foo UNION SELECT foo is incorrectly simplified to SELECT foo
      
  •  -INSERT ... SELECT ... GROUP BY groups by target columns not source columns
      
  •  -CREATE TABLE test (a char(5) DEFAULT text '', b int4) fails on INSERT
      
  •  UNION with LIMIT fails
      
  •  Unique index on base column not honored on inserts from inherited table
      INSERT INTO inherit_table (uniqueindexcol) VALUES (dup) should fail
      [inherit]
      
  •  CREATE TABLE x AS SELECT 1 UNION SELECT 2 fails
      
  •  CREATE TABLE test(col char(2) DEFAULT user) fails in length restriction
      
  •  mismatched types in CREATE TABLE ... DEFAULT causes problems [default]
      
  •  SELECT ... UNION ... ORDER BY fails when sort expr not in result list
      
  •  Be smarter about promoting types when UNION merges different data types
      
  •  SELECT ... UNION ... GROUP BY fails if column types disagree
      
  •  redesign INSERT ... SELECT to have two levels of target list
      
  •  -select * from pg_class where oid in (0,-1)
      
  •  have INTERSECT/EXCEPT prevent duplicates unless ALL is specified
      
  •  prevent primary key of nine columns [primary]
      
  •  SELECT COUNT('asdf') FROM pg_class WHERE oid=12 crashes
      
  •  SELECT DISTINCT ON col1 col1 col2 FROM tab1 is broken [distinct]
      
  •  -When using aggregates + GROUP BY, no rows in should yield no rows out



VIEWS


      
  •  Views containing aggregates sometimes fail(Jan)
      
  •  Views with spaces in view name fail when referenced



MISC


      
  •  User who can create databases can modify pg_database table
      
  •  Plpgsql does not handle quoted mixed-case identifiers
      
  •  Fix btree to give a useful elog when key > 1/2 (page - overhead)
      
  •  pg_dump should preserve primary key information
      
  •  plpgsql regression tests fail on BSD/OS


ENHANCEMENTS




URGENT


      
  •  Add referential integrity(Jan?)[primary]
      
  •  Add OUTER joins, left and right[outer](Thomas, Bruce)
      
  •  Allow long tuples by chaining or auto-storing outside db (chaining,large objs)
      
  •  Eliminate limits on query length
      
  •  Fix memory leak for expressions?[memory](Tom?)
      
  •  -Fix memory leak for aggregates?



ADMIN


      
  •  Better interface for adding to pg_group
      
  •  More access control over who can create tables and access the database
      
  •  Test syslog functionality
      
  •  Allow elog() to return error codes, not just messages
      
  •  Allow international error message support and add error codes
      
  •  Generate postmaster pid file and remove flock/fcntl lock code [flock]
      
  •  Add ability to specifiy location of lock/socket files [flock]



TYPES


      
  •  Add BIT, BIT VARYING
      
  •  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
      

          
    •  Fix large object mapping scheme, own typeid or reltype(Peter)
          
    •  Allow large text type to use large objects(Peter)
          
    •  Not to stuff everything as files in a single directory, hash dirs
          
    •  Allow large object vacuuming
          
    •  Tables that start with xinv confused to be large objects
        

      
  •  Allow pg_descriptions when creating types, tables, columns, and functions
      
  •  Add IPv6 capability to INET/CIDR types
      
  •  Make a separate SERIAL type?
      
  •  Store binary-compatible type information in the system
      
  •  Allow user to define char1 column
      
  •  Add support for & operator
      
  •  Allow LOCALE on a per-column basis, default to ASCII
      
  •  Allow array on int8[]
      
  •  Allow nulls in arrays
      
  •  Allow arrays to be ORDER'ed
      
  •  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
      
  •  Add index on NUMERIC/DECIMAL type
      
  •  Make Absolutetime/Relativetime int4 because time_t can be int8 on some ports
      
  •  Functions returning sets don't really work right[function]



VIEWS


      
  •  Allow DISTINCT on views
      
  •  Allow views of aggregate columns
      
  •  Allow views with subselects



INDEXES


      
  •  Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
      fails index can't store constant parameters
      
  •  Allow creation of functional indexes to use default types
      
  •  Permissions on indexes - prevent them?
      
  •  Allow SQL function indexes
      
  •  Add FILLFACTOR to index creation
      
  •  Allow indexing of LIKE with localle character sets
      
  •  Allow indexing of more than eight columns



COMMANDS


      
  •  ALTER TABLE ADD COLUMN to inherited table put column in wrong place [inherit]
      
  •  Add ALTER TABLE DROP/ALTER COLUMN feature
      
  •  Allow CLUSTER on all tables at once, and improve CLUSTER, loses NOT


            NULL specification on table [cluster]
      

  •  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
      
  •  Allow INSERT/UPDATE of system-generated oid value for a row
      
  •  Allow ESCAPE '\' at the end of LIKE for ANSI compliance [like]
      
  •  Rewrite the LIKE handling by rewriting the user string with the
      supplied ESCAPE [like]
      
  •  -Move LIKE index optimization handling to the optimizer
      
  •  Allow RULE recompilation
      
  •  Support UNION/INTERSECT/EXCEPT in sub-selects
      
  •  Allow DELETE and UPDATE to use inheritance using tablename*



CLIENTS


      
  •  Make NULL's come out at the beginning or end depending on the
      ORDER BY direction
      
  •  Allow flag to control COPY input/output of NULLs
      
  •  Update reltuples from COPY command
      
  •  Allow psql \copy to allow delimiters
      
  •  Add a function to return the last inserted oid, for use in psql scripts
      
  •  Allow psql to print nulls as distinct from "" [null]



EXOTIC FEATURES


      
  •  Add sql3 recursive unions
      
  •  Add the concept of dataspaces
      
  •  Add replication of distributed databases
      
  •  Allow queries across multiple databases



MISC


      
  •  Increase identifier length(NAMEDATALEN) if small performance hit
      
  •  Allow row re-use without vacuum(Vadim)
      
  •  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
      
  •  Restore unused oid's on backend exit if no one else has gotten oids
      
  •  Have UPDATE/DELETE clean out indexes
      
  •  Allow WHERE restriction on ctid
      
  •  Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
      
  •  Allow PQrequestCancel() to terminate when in waiting-for-lock state
      
  •  -Transaction log, so re-do log can be on a separate disk by
      with after-row images(Vadim) [logging]
      
  •  Populate backend status area and write program to dump status data
      
  •  Make oid use unsigned int more reliably, pg_atoi()
      
  •  Allow subqueries in target list
      
  •  Put sort files, large objects in their own directory
      
  •  Do autocommit so always in a transaction block(?)
      
  •  Show location of syntax error in query [yacc]
      
  •  Redesign the function call interface to handle NULLs better [function]
      
  •  Document/trigger/rule so changes to pgshadow recreate pgpwd [pg_shadow]
      
  •  Missing optimizer selectivities for date, r-tree, etc. [optimizer]
      
  •  Overhaul mdmgr/smgr to fix double unlinking and double opens, cleanup
      
  •  Overhaul bufmgr/lockmgr/transaction manager
      
  •  Add PL/Perl(Mark Hollomon)
      
  •  Make postgres user have a password by default
      
  •  Add configure test to check for C++ need for *.h and namespaces
      
  •  Allow BLCKSZ <= 64k, not <= 32k
      
  •  redesign UNION structures to have separarate target lists
      
  •  Allow multi-level query trees for INSERT INTO ... SELECT


PERFORMANCE




FSYNC


      
  •  -Allow transaction commits with rollback with no-fsync performance [fsync]
      
  •  -Prevent fsync in SELECT-only queries



INDEXES


      
  •  Use indexes in ORDER BY for restrictive data sets, min(), max()
      
  •  Pull requested data directly from indexes, bypassing heap data
      
  •  Use index to restrict rows returned by multi-key index when used with
      non-consecutive keys or OR clauses, so fewer heap accesses
      
  •  -Convert function(constant) into a constant for index use
      
  •  Allow LIMIT ability on single-table queries that have no ORDER BY to use
      a matching index [limit]
      
  •  Improve LIMIT processing by using index to limit rows processed [limit]
      
  •  Have optimizer take LIMIT into account when considering index scans [limit]
      
  •  Make index creation use psort code, because it is now faster(Vadim)
      
  •  Allow creation of sort temp tables > 1 Gig
      
  •  Create more system table indexes for faster cache lookups
      
  •  fix indexscan() so it does leak memory by not requiring caller to free
      
  •  Improve btbinsrch() to handle equal keys better, remove btfirsteq()(Tom)
      
  •  Allow SELECT * FROM tab WHERE int2col = 4 use int2col index, int8,
      float4, numeric/decimal too [optimizer]
      
  •  -Allow optimizer to prefer plans that match ORDER BY



CACHE


      
  •  Cache most recent query plan(s) [prepare]
      
  •  Shared catalog cache, reduce lseek()'s by caching table size in shared area
      
  •  elog() flushes cache, try invalidating just entries from current xact,
      perhaps using invalidation cache



MISC


      
  •  Allow compression of log and meta data
      
  •  Allow char() not to use variable-sized header to reduce disk size
      
  •  Do async I/O to do better read-ahead of data
      
  •  -Fix memory exhaustion when using many OR's [cnfify]
      
  •  Get faster regex() code from Henry Spencer <[email protected]>
      when it is available
      
  •  Use mmap() rather than SYSV shared memory(?)
      
  •  -Process const = const parts of OR clause in separate pass
      
  •  Make oid use oidin/oidout not int4in/int4out in pg_type.h
      
  •  Improve Subplan list handling
      
  •  Allow Subplans to use efficient joins(hash, merge) with upper variable
      [subquery]
      
  •  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 [memory]
      
  •  fix memory leak in cache code when non-existant table is referenced
      
  •  In WHERE tab1.x=3 AND tab1.x=tab2.y, add tab2.y=3
      
  •  pass atttypmod through parser in more cases [atttypmod]
      
  •  remove duplicate type in/out functions for disk and net
      
  •  Allow persistent backends [persistent]
      
  •  Misc [performance]


SOURCE CODE



      
  •  Add use of 'const' for varibles in source tree
      
  •  Fix C optimizer problem where fmgr_ptr calls return different types [alpha]
      
  •  -Add needed includes and removed unneeded include files(Bruce)
      
  •  Make configure --enable-debug add -g on compile line
      
  •  Does Mariposa source contain any other bug fixes?
      
  •  Remove SET KSQO option if OR processing is improved(Tom)





Developers who have claimed items are:







doc/TODO

index 1be7877b59f04c467d8ec600ce34fdce54832b05..ca1b1a289f837838b0357c2cd8f554c7c0904336 100644 (file)
--- a/doc/TODO
+++ b/doc/TODO
@@ -1,6 +1,6 @@
 TODO list for PostgreSQL
 ========================
-Last updated:      Mon Sep 27 13:02:57 EDT 1999
+Last updated:      Tue Sep 28 00:34:21 EDT 1999
 
 Current maintainer:    Bruce Momjian ([email protected])
 
@@ -65,6 +65,7 @@ MISC
 * Plpgsql does not handle quoted mixed-case identifiers
 * Fix btree to give a useful elog when key > 1/2 (page - overhead)
 * pg_dump should preserve primary key information
+* plpgsql regression tests fail on BSD/OS
 
 ENHANCEMENTS
 ------------