<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">

<HTML>
<HEAD>
<TITLE>PostgreSQL TODO list</TITLE>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#A00000"\
ALINK="#0000FF">
<META NAME="generator" CONTENT="txt2html v1.25">
</HEAD>
<BODY>
<H1><A NAME="section-1">TODO list for PostgreSQL</A></H1>
Last updated:           Tue Sep 28 00:34:21 EDT 1999

<P>
Current maintainer:     Bruce Momjian (<A HREF="mailto:maillist@candle.pha.pa.us">maillist@candle.pha.pa.us</A>)

<P>
The most recent version of this document can be viewed at<BR>
the PostgreSQL web site, <A HREF="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>.

<P>
A dash(-) marks changes that will appear in the next release.

<P>
Names in brackets "[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/"></A>]" indicate more detailed information is available in<BR>
the directory pgsql/doc/TODO.detail/ under that name.


<H2><A NAME="section-1.1">RELIABILITY</A></H2>

<P>
<STRONG>RESOURCES</STRONG>

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

</UL>
<P>
<STRONG>PARSER</STRONG>

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

</UL>
<P>
<STRONG>VIEWS</STRONG>

<UL>
  <LI> Views containing aggregates sometimes fail(Jan)
  <LI> Views with spaces in view name fail when referenced

</UL>
<P>
<STRONG>MISC</STRONG>

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

</UL>
<H2><A NAME="section-1.2">ENHANCEMENTS</A></H2>

<P>
<STRONG>URGENT</STRONG>

<UL>
  <LI> Add referential integrity(Jan?)[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/primary">primary</A>]
  <LI> Add OUTER joins, left and right[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/outer">outer</A>](Thomas, Bruce)
  <LI> Allow long tuples by chaining or auto-storing outside db (chaining,large objs)
  <LI> Eliminate limits on query length
  <LI> Fix memory leak for expressions?[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/memory">memory</A>](Tom?)
  <LI> -Fix memory leak for aggregates?

</UL>
<P>
<STRONG>ADMIN</STRONG>

<UL>
  <LI> Better interface for adding to pg_group
  <LI> More access control over who can create tables and access the database
  <LI> Test syslog functionality
  <LI> Allow elog() to return error codes, not just messages
  <LI> Allow international error message support and add error codes
  <LI> Generate postmaster pid file and remove flock/fcntl lock code [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/flock">flock</A>]
  <LI> Add ability to specifiy location of lock/socket files [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/flock">flock</A>]

</UL>
<P>
<STRONG>TYPES</STRONG>

<UL>
  <LI> Add BIT, BIT VARYING
  <LI> Nchar (as distinguished from ordinary varchar),
  <LI> Domain capability
  <LI> Add STDDEV/VARIANCE() function for standard deviation computation/variance
  <LI> Allow compression of large fields or a compressed field type
  <LI> Large objects
  <UL>
    <LI> Fix large object mapping scheme, own typeid or reltype(Peter)
    <LI> Allow large text type to use large objects(Peter)
    <LI> Not to stuff everything as files in a single directory, hash dirs
    <LI> Allow large object vacuuming
    <LI> Tables that start with xinv confused to be large objects
  </UL>
  <LI> Allow pg_descriptions when creating types, tables, columns, and functions
  <LI> Add IPv6 capability to INET/CIDR types
  <LI> Make a separate SERIAL type?
  <LI> Store binary-compatible type information in the system
  <LI> Allow user to define char1 column
  <LI> Add support for &amp; operator
  <LI> Allow LOCALE on a per-column basis, default to ASCII
  <LI> Allow array on int8[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/"></A>]
  <LI> Allow nulls in arrays
  <LI> Allow arrays to be ORDER'ed
  <LI> Remove Money type, add money formatting for decimal type
  <LI> Declare typein/out functions in pg_proc with a special "C string" data type
  <LI> Add non-large-object binary field
  <LI> Add index on NUMERIC/DECIMAL type
  <LI> Make Absolutetime/Relativetime int4 because time_t can be int8 on some ports
  <LI> Functions returning sets don't really work right[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/function">function</A>]

</UL>
<P>
<STRONG>VIEWS</STRONG>

<UL>
  <LI> Allow DISTINCT on views
  <LI> Allow views of aggregate columns
  <LI> Allow views with subselects

</UL>
<P>
<STRONG>INDEXES</STRONG>

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

</UL>
<P>
<STRONG>COMMANDS</STRONG>

<UL>
  <LI> ALTER TABLE ADD COLUMN to inherited table put column in wrong place [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/inherit">inherit</A>]
  <LI> Add ALTER TABLE DROP/ALTER COLUMN feature
  <LI> Allow CLUSTER on all tables at once, and improve CLUSTER, loses NOT
<P>
        NULL specification on table [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/cluster">cluster</A>]
  <LI> Add SIMILAR TO to allow character classes, 'pg_[<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/a-c">a-c</A>]%'
  <LI> Auto-destroy sequence on DROP of table with SERIAL(Ryan)
  <LI> Allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison
  <LI> Allow INSERT/UPDATE of system-generated oid value for a row
  <LI> Allow ESCAPE '\' at the end of LIKE for ANSI compliance [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/like">like</A>]
  <LI> Rewrite the LIKE handling by rewriting the user string with the
  supplied ESCAPE [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/like">like</A>]
  <LI> -Move LIKE index optimization handling to the optimizer
  <LI> Allow RULE recompilation
  <LI> Support UNION/INTERSECT/EXCEPT in sub-selects
  <LI> Allow DELETE and UPDATE to use inheritance using tablename*

</UL>
<P>
<STRONG>CLIENTS</STRONG>

<UL>
  <LI> Make NULL's come out at the beginning or end depending on the
  ORDER BY direction
  <LI> Allow flag to control COPY input/output of NULLs
  <LI> Update reltuples from COPY command
  <LI> Allow psql \copy to allow delimiters
  <LI> Add a function to return the last inserted oid, for use in psql scripts
  <LI> Allow psql to print nulls as distinct from "" [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/null">null</A>]

</UL>
<P>
<STRONG>EXOTIC FEATURES</STRONG>

<UL>
  <LI> Add sql3 recursive unions
  <LI> Add the concept of dataspaces
  <LI> Add replication of distributed databases
  <LI> Allow queries across multiple databases

</UL>
<P>
<STRONG>MISC</STRONG>

<UL>
  <LI> Increase identifier length(NAMEDATALEN) if small performance hit
  <LI> Allow row re-use without vacuum(Vadim)
  <LI> Create a background process for each database that runs while
  database is idle, finding superceeded rows, gathering stats and vacuuming
  <LI> Add UNIQUE capability to non-btree indexes
  <LI> -Certain indexes will not shrink, i.e. oid indexes with many inserts
  <LI> Restore unused oid's on backend exit if no one else has gotten oids
  <LI> Have UPDATE/DELETE clean out indexes
  <LI> Allow WHERE restriction on ctid
  <LI> Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
  <LI> Allow PQrequestCancel() to terminate when in waiting-for-lock state
  <LI> -Transaction log, so re-do log can be on a separate disk by
  with after-row images(Vadim) [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/logging">logging</A>]
  <LI> Populate backend status area and write program to dump status data
  <LI> Make oid use unsigned int more reliably, pg_atoi()
  <LI> Allow subqueries in target list
  <LI> Put sort files, large objects in their own directory
  <LI> Do autocommit so always in a transaction block(?)
  <LI> Show location of syntax error in query [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/yacc">yacc</A>]
  <LI> Redesign the function call interface to handle NULLs better [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/function">function</A>]
  <LI> Document/trigger/rule so changes to pg<U>shadow recreate pg</U>pwd [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/pg_shadow">pg_shadow</A>]
  <LI> Missing optimizer selectivities for date, r-tree, etc. [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/optimizer">optimizer</A>]
  <LI> Overhaul mdmgr/smgr to fix double unlinking and double opens, cleanup
  <LI> Overhaul bufmgr/lockmgr/transaction manager
  <LI> Add PL/Perl(Mark Hollomon)
  <LI> Make postgres user have a password by default
  <LI> Add configure test to check for C++ need for *.h and namespaces
  <LI> Allow BLCKSZ &lt;= 64k, not &lt;= 32k
  <LI> redesign UNION structures to have separarate target lists
  <LI> Allow multi-level query trees for INSERT INTO ... SELECT

</UL>
<H2><A NAME="section-1.3">PERFORMANCE</A></H2>

<P>
<STRONG>FSYNC</STRONG>

<UL>
  <LI> -Allow transaction commits with rollback with no-fsync performance [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/fsync">fsync</A>]
  <LI> -Prevent fsync in SELECT-only queries

</UL>
<P>
<STRONG>INDEXES</STRONG>

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

</UL>
<P>
<STRONG>CACHE</STRONG>

<UL>
  <LI> Cache most recent query plan(s) [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/prepare">prepare</A>]
  <LI> Shared catalog cache, reduce lseek()'s by caching table size in shared area
  <LI> elog() flushes cache, try invalidating just entries from current xact,
  perhaps using invalidation cache


</UL>
<P>
<STRONG>MISC</STRONG>

<UL>
  <LI> Allow compression of log and meta data
  <LI> Allow char() not to use variable-sized header to reduce disk size
  <LI> Do async I/O to do better read-ahead of data
  <LI> -Fix memory exhaustion when using many OR's [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/cnfify">cnfify</A>]
  <LI> Get faster regex() code from Henry Spencer &lt;<A HREF="mailto:henry@zoo.utoronto.ca">henry@zoo.utoronto.ca</A>&gt;
  when it is available
  <LI> Use mmap() rather than SYSV shared memory(?)
  <LI> -Process const = const parts of OR clause in separate pass
  <LI> Make oid use oidin/oidout not int4in/int4out in pg_type.h
  <LI> Improve Subplan list handling
  <LI> Allow Subplans to use efficient joins(hash, merge) with upper variable
  [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/subquery">subquery</A>]
  <LI> use fmgr_info()/fmgr_faddr() instead of fmgr() calls in high-traffic
  places, like GROUP BY, UNIQUE, index processing, etc.
  <LI> improve dynamic memory allocation by introducing tuple-context memory
  allocation [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/memory">memory</A>]
  <LI> fix memory leak in cache code when non-existant table is referenced
  <LI> In WHERE tab1.x=3 AND tab1.x=tab2.y, add tab2.y=3
  <LI> pass atttypmod through parser in more cases [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/atttypmod">atttypmod</A>]
  <LI> remove duplicate type in/out functions for disk and net
  <LI> Allow persistent backends [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/persistent">persistent</A>]
  <LI> Misc [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/performance">performance</A>]

</UL>
<H2><A NAME="section-1.4">SOURCE CODE</A></H2>
<UL>
  <LI> Add use of 'const' for varibles in source tree
  <LI> Fix C optimizer problem where fmgr_ptr calls return different types [<A HREF="http://www.postgresql.org/docs/pgsql/doc/TODO.detail/alpha">alpha</A>]
  <LI> -Add needed includes and removed unneeded include files(Bruce)
  <LI> Make configure --enable-debug add -g on compile line
  <LI> Does Mariposa source contain any other bug fixes?
  <LI> Remove SET KSQO option if OR processing is improved(Tom)

</UL>
<HR>


<H3><A NAME="section-1.4.1">Developers who have claimed items are:</A></H3>
<UL>
  <LI> Billy is Billy G. Allie &lt;<A HREF="mailto:Bill.Allie@mug.org">Bill.Allie@mug.org</A>&gt;
  <LI> Brook is Brook Milligan &lt;<A HREF="mailto:brook@trillium.NMSU.Edu">brook@trillium.NMSU.Edu</A>&gt;
  <LI> Bruce is Bruce Momjian&lt;<A HREF="mailto:maillist@candle.pha.pa.us">maillist@candle.pha.pa.us</A>&gt;
  <LI> Bryan is Bryan Henderson&lt;<A HREF="mailto:bryanh@giraffe.netgate.net">bryanh@giraffe.netgate.net</A>&gt;
  <LI> D'Arcy is D'Arcy J.M. Cain &lt;<A HREF="mailto:darcy@druid.net">darcy@druid.net</A>&gt;
  <LI> David is David Hartwig &lt;<A HREF="mailto:daveh@insightdist.com">daveh@insightdist.com</A>&gt;
  <LI> Edmund is Edmund Mergl &lt;<A HREF="mailto:E.Mergl@bawue.de">E.Mergl@bawue.de</A>&gt;
  <LI> Goran is Goran Thyni &lt;<A HREF="mailto:goran@kyla.kiruna.se">goran@kyla.kiruna.se</A>&gt;
  <LI> Hiroshi is Hiroshi Inoue&lt;<A HREF="mailto:Inoue@tpf.co.jp">Inoue@tpf.co.jp</A>&gt;
  <LI> Jan is Jan Wieck &lt;<A HREF="mailto:wieck@sapserv.debis.de">wieck@sapserv.debis.de</A>&gt;
  <LI> Marc is Marc Fournier &lt;<A HREF="mailto:scrappy@hub.org">scrappy@hub.org</A>&gt;
  <LI> Massimo Dal Zotto &lt;<A HREF="mailto:dz@cs.unitn.it">dz@cs.unitn.it</A>&gt;
  <LI> Michael is Michael Meskes &lt;<A HREF="mailto:meskes@postgresql.org">meskes@postgresql.org</A>&gt;
  <LI> Oleg is Oleg Bartunov &lt;<A HREF="mailto:oleg@sai.msu.su">oleg@sai.msu.su</A>&gt;
  <LI> Peter is Peter T Mount &lt;<A HREF="mailto:peter@retep.org.uk">peter@retep.org.uk</A>&gt;
  <LI> Ryan is Ryan Bradetich &lt;<A HREF="mailto:rbrad@hpb50023.boi.hp.com">rbrad@hpb50023.boi.hp.com</A>&gt;
  <LI> Stefan Simkovics &lt;<A HREF="mailto:ssimkovi@rainbow.studorg.tuwien.ac.at">ssimkovi@rainbow.studorg.tuwien.ac.at</A>&gt;
  <LI> Tatsuo is Tatsuo Ishii &lt;<A HREF="mailto:t-ishii@sra.co.jp">t-ishii@sra.co.jp</A>&gt;
  <LI> Tom is Tom Lane &lt;<A HREF="mailto:tgl@sss.pgh.pa.us">tgl@sss.pgh.pa.us</A>&gt;
  <LI> Thomas is Thomas Lockhart &lt;<A HREF="mailto:lockhart@alumni.caltech.edu">lockhart@alumni.caltech.edu</A>&gt;
  <LI> TomH is Tom I Helbekkmo &lt;<A HREF="mailto:tih@Hamartun.Priv.NO">tih@Hamartun.Priv.NO</A>&gt;
  <LI> Vadim is "Vadim B. Mikheev" &lt;<A HREF="mailto:vadim@krs.ru">vadim@krs.ru</A>&gt;


</UL>

</BODY>
</HTML>
This commit is contained in:
Bruce Momjian 1999-09-28 04:35:18 +00:00
parent 9394d62c73
commit b89044b275
1 changed files with 2 additions and 1 deletions

View File

@ -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 (maillist@candle.pha.pa.us)
@ -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
------------