authorBruce Momjian
Tue, 28 Sep 1999 19:56:49 +0000 (19:56 +0000)
committerBruce Momjian
Tue, 28 Sep 1999 19:56:49 +0000 (19:56 +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
      
  •  Creating view and inheriting the view causes view* to show
      duplicates(inherit)



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
doc/TODO.detail/inherit

index ca1b1a289f837838b0357c2cd8f554c7c0904336..d35938afe951ef79c11a0cd4f487445c6fd95b0a 100644 (file)
--- a/doc/TODO
+++ b/doc/TODO
@@ -58,6 +58,8 @@ VIEWS
 
 * Views containing aggregates sometimes fail(Jan)
 * Views with spaces in view name fail when referenced
+* Creating view and inheriting the view causes view* to show
+  duplicates(inherit) 
 
 MISC
 
index b5211bb46de0ebf2b84ee50b36a0a876b68e6f16..3a4d1cc902965823bf1cdb3a61fa8c563d388cd6 100644 (file)
@@ -142,3 +142,128 @@ INSERT 54425 1
 
 
 
+From [email protected] Tue Apr 20 10:34:34 1999
+Received: from hub.org (hub.org [209.47.145.100])
+   by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id KAA28480
+   for ; Tue, 20 Apr 1999 10:34:31 -0400 (EDT)
+Received: from localhost (majordom@localhost)
+   by hub.org (8.9.3/8.9.1) with SMTP id KAA12281;
+   Tue, 20 Apr 1999 10:33:22 -0400 (EDT)
+   (envelope-from [email protected])
+Received: by hub.org (TLB v0.10a (1.23 tibbs 1997/01/09 00:29:32)); Tue, 20 Apr 1999 10:32:04 +0000 (EDT)
+Received: (from majordom@localhost)
+   by hub.org (8.9.3/8.9.1) id KAA11432
+   for pgsql-hackers-outgoing; Tue, 20 Apr 1999 10:32:01 -0400 (EDT)
+   (envelope-from [email protected])
+Received: from tech.com.au (IDENT:[email protected] [139.130.75.122])
+   by hub.org (8.9.3/8.9.1) with ESMTP id KAA11378
+   for ; Tue, 20 Apr 1999 10:31:52 -0400 (EDT)
+   (envelope-from [email protected])
+Received: from bigfoot.com (chris@localhost [127.0.0.1])
+   by tech.com.au (8.8.7/8.8.7) with ESMTP id AAA21255
+   for ; Wed, 21 Apr 1999 00:31:32 +1000
+Message-ID: <[email protected]>
+Date: Tue, 20 Apr 1999 14:31:31 +0000
+From: Chris Bitmead 
+X-Mailer: Mozilla 4.51 [en] (X11; I; Linux 2.0.36 i686)
+X-Accept-Language: en
+MIME-Version: 1.0
+Subject: Re: [HACKERS] Heads up: does RULES regress test still work for you?
+Content-Type: text/plain; charset=us-ascii
+Content-Transfer-Encoding: 7bit
+Precedence: bulk
+Status: RO
+
+
+Does the following indicate a bug? It sure is wierd. Maybe some of these
+statements aren't supported by postgresql (??), but the outcome doesn't
+make sense to me.
+
+httpd=> CREATE TABLE x (y text);
+CREATE
+httpd=> CREATE VIEW z AS select * from x;
+CREATE
+httpd=> CREATE TABLE a (b text) INHERITS(z);
+CREATE
+httpd=> INSERT INTO x VALUES ('foo');
+INSERT 168602 1
+httpd=> select * from z*;
+y  
+---
+foo
+foo
+(2 rows)
+
+How did we suddenly get two rows??
+
+-- 
+Chris Bitmead
+http://www.bigfoot.com/~chris.bitmead
+
+
+From [email protected] Tue May 25 11:01:16 1999
+Received: from renoir.op.net ([email protected] [209.152.193.4])
+   by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id LAA15867
+   for ; Tue, 25 May 1999 11:01:16 -0400 (EDT)
+Received: from hub.org (hub.org [209.167.229.1]) by renoir.op.net (o1/$ Revision: 1.18 $) with ESMTP id KAA10712 for ; Tue, 25 May 1999 10:55:17 -0400 (EDT)
+Received: from hub.org (hub.org [209.167.229.1])
+   by hub.org (8.9.3/8.9.3) with ESMTP id KAA07206;
+   Tue, 25 May 1999 10:45:50 -0400 (EDT)
+   (envelope-from [email protected])
+Received: by hub.org (TLB v0.10a (1.23 tibbs 1997/01/09 00:29:32)); Tue, 25 May 1999 10:43:02 +0000 (EDT)
+Received: (from majordom@localhost)
+   by hub.org (8.9.3/8.9.3) id KAA06706
+   for pgsql-hackers-outgoing; Tue, 25 May 1999 10:43:01 -0400 (EDT)
+   (envelope-from [email protected])
+X-Authentication-Warning: hub.org: majordom set sender to [email protected] using -f
+Received: from sss.sss.pgh.pa.us (sss.pgh.pa.us [206.210.65.6])
+   by hub.org (8.9.3/8.9.3) with ESMTP id KAA06690
+   for ; Tue, 25 May 1999 10:42:57 -0400 (EDT)
+   (envelope-from [email protected])
+Received: from sss.sss.pgh.pa.us (localhost [127.0.0.1])
+   by sss.sss.pgh.pa.us (8.9.1/8.9.1) with ESMTP id KAA02984
+   for ; Tue, 25 May 1999 10:42:39 -0400 (EDT)
+Subject: [HACKERS] INSERT INTO view means what exactly?
+Date: Tue, 25 May 1999 10:42:39 -0400
+Message-ID: <[email protected]>
+From: Tom Lane 
+Precedence: bulk
+Status: ROr
+
+With current sources:
+
+regression=> CREATE TABLE x (y text);
+CREATE
+regression=> CREATE VIEW z AS select * from x;
+CREATE
+regression=> INSERT INTO x VALUES ('foo');
+INSERT 411635 1
+regression=> INSERT INTO z VALUES ('bar');
+INSERT 411636 1
+regression=> select * from x;
+y
+---
+foo
+(1 row)
+
+regression=> select * from z;
+y
+---
+foo
+(1 row)
+
+OK, where'd tuple 411636 go?  Seems to me that the insert should either
+have been rejected or caused an insert into x, depending on how
+transparent you think views are (I always thought they were
+read-only?).  Dropping the data into never-never land and giving a
+misleading success response code is not my idea of proper behavior.
+
+           regards, tom lane
+
+