11TODO list for PostgreSQL
22========================
3- Last updated:Fri Jun4 23:16:01 EDT 1999
3+ Last updated:Sun Jun6 22:08:59 EDT 1999
44
55Current maintainer:Bruce Momjian (maillist@candle.pha.pa.us)
66
@@ -19,6 +19,7 @@ Developers who have claimed items are:
1919* David is David Hartwig <daveh@insightdist.com>
2020* Edmund is Edmund Mergl <E.Mergl@bawue.de>
2121* Goran is Goran Thyni <goran@kyla.kiruna.se>
22+ * Hiroshi is Hiroshi Inoue<Inoue@tpf.co.jp>
2223* Jan is Jan Wieck <wieck@sapserv.debis.de>
2324 * Marc is Marc Fournier <scrappy@hub.org>
2425* Massimo Dal Zotto <dz@cs.unitn.it>
@@ -33,137 +34,160 @@ Developers who have claimed items are:
3334
3435* Vadim is "Vadim B. Mikheev" <vadim@krs.ru>
3536
37+
3638RELIABILITY
3739-----------
3840* Overhaul mdmgr/smgr to fix double unlinking and double opens, cleanup
3941* Overhaul bufmgr/lockmgr/transaction manager
4042* Remove EXTEND?
4143* Tables that start with xinv confused to be large objects
4244* Two and three dimensional arrays display improperly, missing {}
43- *SELECT a[1] FROM test fails, it needs test.a[1]
44- *UPDATE table SET table.value = 3 fails
45+ *Select a[1] FROM test fails, it needs test.a[1]
46+ *Update table SET table.value = 3 fails
4547* User who can create databases can modify pg_database table
46- * elog() does not free all its memory(Jan)
47- * views on subselects fail
48- * disallow inherited columns with the same name as new columns
49- * recover or force failure when disk space is exhausted
50- * views containing aggregates sometimes fail(Jan)
51- * ALTER TABLE ADD COLUMN does not honor DEFAULT, add CONSTRAINT
52- * array index references without table name cause problems
53- * views with spaces in view name fail when referenced
54- * plpgsql does not handle quoted mixed-case identifiers
55- * do not allow bpchar column creation without length
48+ * Elog() does not free all its memory(Jan)
49+ * Disallow inherited columns with the same name as new columns
50+ * Recover or force failure when disk space is exhausted
51+ * Views containing aggregates sometimes fail(Jan)
52+ * Alter TABLE ADD COLUMN does not honor DEFAULT, add CONSTRAINT
53+ * Array index references without table name cause problems
54+ * Views with spaces in view name fail when referenced
55+ * Plpgsql does not handle quoted mixed-case identifiers
56+ * Do not allow bpchar column creation without length
5657* INSERT INTO ... SELECT with AS columns matching result columns problem
5758
5859
5960ENHANCEMENTS
6061------------
61- * Transaction log, so re-do log can be on a separate disk
62- * Allow transaction commits with rollback with no-fsync performance
62+ * Add referential integrity
63+ * Add OUTER joins, left and right(Thomas)
64+ * Allow long tuples by chaining or auto-storing outside db (chaining,large objs)
65+ * Fix memory leak for expressions?, aggregates?
66+
67+ Exotic features:
68+ * Add sql3 recursive unions
69+ * Add the concept of dataspaces
70+ * Add replication of distributed databases
71+ * Allow queries across multiple databases
72+
73+ Admin:
74+ * Better interface for adding to pg_group
6375* More access control over who can create tables and access the database
64- * Add full ANSI SQL capabilities
65- * add OUTER joins, left and right(Thomas)
66- * add sql3 recursive unions
67- * add the concept of dataspaces
68- * add BIT, BIT VARYING
69- * NCHAR (as distinguished from ordinary varchar),
70- * DOMAIN capability
76+ * Add syslog functionality
77+ * Allow elog() to return error codes, not just messages
78+ * Allow international error message support and add error codes
79+ * Generate postmaster pid file and remove flock/fcntl lock code
80+ * Add ability to specifiy location of lock/socket files
81+
82+ Types:
83+ * Add BIT, BIT VARYING
84+ * Nchar (as distinguished from ordinary varchar),
85+ * Domain capability
86+ * Add STDDEV/VARIANCE() function for standard deviation computation/variance
7187* Allow compression of large fields or a compressed field type
7288* Large objects
7389* Fix large object mapping scheme, own typeid or reltype(Peter)
7490* Allow large text type to use large objects(Peter)
75- * not to stuff everything as files in a single directory
76- * Better interface for adding to pg_group
77- * allow row re-use without vacuum, maybe?(Vadim)
78- * Populate backend status area and write program to dump status data
79- * Add ALTER TABLE DROP/ALTER COLUMN feature
80- * Add syslog functionality
81- * Add STDDEV/VARIANCE() function for standard deviation computation/variance
82- * add UNIQUE capability to non-btree indexes
83- * certain indexes will not shrink, i.e. oid indexes with many inserts
84- * make NULL's come out at the beginning or end depending on the ORDER BY direction
85- * Restore unused oid's on backend exit if no one else has gotten oids
86- * have UPDATE/DELETE clean out indexes
87- * allow WHERE restriction on ctid
88- * allow pg_descriptions when creating types, tables, columns, and functions
89- * Allow psql to print nulls as distinct from ""(?)
90- * Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
91+ * Not to stuff everything as files in a single directory
92+ * Allow pg_descriptions when creating types, tables, columns, and functions
93+ * Add IPv6 capability to INET/CIDR types
94+ * Make a separate SERIAL type?
95+ * Store binary-compatible type information in the system
96+ * Allow user to define char1 column
97+ * Add support for & operator
98+
99+ Views:
91100* Allow DISTINCT on views
92101* Allow views of aggregate columns
93- * Allow flag to control COPY input/output of NULLs
94- * Allow CLUSTER on all tables at once, and improve CLUSTER
95- * Allow elog() to return error codes, not just messages
96- * allow international error message support and add error codes
102+ * Allow views with subselects
103+
97104* Allow subqueries in target list
98- * Allow queries across multiple databases
99- * Add replication of distributed databases
105+ * Put sort files, large objects in their on directory
106+ * Do autocommit so always in a transaction block
107+ * Show location of syntax error in query
108+ * Redesign the function call interface to handle NULLs better(Jan)
109+ * Document/trigger/rule so changes to pg_shadow create pg_pwd
110+ * Missing optimizer selectivities for date, etc.
111+
112+ Indexes:
113+ * Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
114+ fails index can't store constant parameters
115+ * Allow creation of functional indexes to use default types
116+ * Permissions on indexes - prevent them?
117+ * Allow SQL function indexes
118+ * Add FILLFACTOR to index creation
119+
120+ Commands:
121+ * ALTER TABLE ADD COLUMN to inherited table put column in wrong place
122+ * Add ALTER TABLE DROP/ALTER COLUMN feature
123+ * Allow CLUSTER on all tables at once, and improve CLUSTER
100124* Generate error on CREATE OPERATOR of ~~, ~ and and ~*
101- * allow psql \copy to allow delimiters
102- * add a function to return the last inserted oid, for use in psql scripts
103- * allow creation of functional indexes to use default types
104- * put sort files, large objects in their on directory
105- * do autocommit so always in a transaction block
106- * add SIMILAR TO to allow character classes, 'pg_[a-c]%'
107- * improve reporting of syntax errors by showing location of error in query
108- * allow chaining of pages to allow >8k tuples, auto-large object use
109- * redesign the function call interface to handle NULLs better(Jan)
110- * permissions on indexes - prevent them?
111- * document/trigger/rule so changes to pg_shadow create pg_pwd
112- * generate postmaster pid file and remove flock/fcntl lock code
113- * add ability to specifiy location of lock/socket files
114- * auto-destroy sequence on DROP of table with SERIAL
115- * make a separate serial type?
116- * allow user to define char1 column
117- * allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison
118- * allow INSERT/UPDATE of system-generated oid value for a row
119- * missing optimizer selectivities for date, etc.
120- * Add support for & operator
121- * store binary-compatible type information in the system
125+ * Add SIMILAR TO to allow character classes, 'pg_[a-c]%'
126+ * Auto-destroy sequence on DROP of table with SERIAL
127+ * Allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison
128+ * Allow INSERT/UPDATE of system-generated oid value for a row
122129* Allow ESCAPE '\' at the end of LIKE for ANSI compliance
123- *rewrite the LIKE handling by rewriting the user string with the
130+ *Rewrite the LIKE handling by rewriting the user string with the
124131supplied ESCAPE
125- * Fix memory leak for expressions?, aggregates?
126- * Allow Subplans to use efficient joins(hash, merge) with upper variable
132+ * Move LIKE index optimization handling to the optimizer
133+
134+ Clients:
135+ * Make NULL's come out at the beginning or end depending on the
136+ ORDER BY direction
137+ * Allow flag to control COPY input/output of NULLs
127138* Update reltuples from COPY command
128- * Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
129- fails index can't store constant parameters
130- * allow SQL function indexes
131- * ALTER TABLE ADD COLUMN to inherited table put column in wrong place
132- * Add IPv6 capability to INET/CIDR types
133- * Allow PQrequestCancel() to terminate when in waiting-for-lock state
139+ * Allow psql \copy to allow delimiters
140+ * Add a function to return the last inserted oid, for use in psql scripts
141+ * Allow psql to print nulls as distinct from ""(?)
142+
134143* Increase identifier length(NAMEDATALEN) if small performance hit
135- * Fix for long table/column name auto-sequence serial name
144+ * Allow row re-use without vacuum, maybe?(Vadim)
145+ * Add UNIQUE capability to non-btree indexes
146+ * Certain indexes will not shrink, i.e. oid indexes with many inserts
147+ * Restore unused oid's on backend exit if no one else has gotten oids
148+ * Have UPDATE/DELETE clean out indexes
149+ * Allow WHERE restriction on ctid
150+ * Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
151+ * Allow PQrequestCancel() to terminate when in waiting-for-lock state
152+ * Transaction log, so re-do log can be on a separate disk
153+ * Populate backend status area and write program to dump status data
154+ * Make oid use unsigned int more reliably, pg_atoi()
155+
156+ * Add PL/Perl(Mark Hollomon)
136157
137158
138159PERFORMANCE
139160-----------
161+ * Allow transaction commits with rollback with no-fsync performance
162+ * Prevent fsync in SELECT-only queries
163+
140164* Use indexes in ORDER BY for restrictive data sets, min(), max()
165+ * Pull requested data directly from indexes, bypassing heap data
166+ * Use index to restrict rows returned by multi-key index when used with
167+ non-consecutive keys or OR clauses, so fewer heap accesses
168+ * Use index with constants on functions
169+
141170* Allow LIMIT ability on single-table queries that have no ORDER BY to use
142171a matching index
143- *Pull requested data directly from indexes, bypassing heap data
144- * Prevent fsync in SELECT-only queries
172+ *Improve LIMIT processing by using index to limit rows processed
173+
145174* Cache most recent query plan(s?)
146175* Shared catalog cache, reduce lseek()'s by caching table size in shared area
176+
147177* Allow compression of log and meta data
148- * Add FILLFACTOR to index creation
149- * update pg_statistic table to remove operator column
150- * make index creation use psort code, because it is now faster(Vadim)
178+ * Update pg_statistic table to remove operator column
179+ * Make index creation use psort code, because it is now faster(Vadim)
151180* Allow char() not to use variable-sized header to reduce disk size
152181* Do async I/O to do better read-ahead of data
153182* Fix memory exhaustion when using many OR's
154183* Get faster regex() code from Henry Spencer <henry@zoo.utoronto.ca>
155184when it is available
156- * use mmap() rather than SYSV shared memory(?)
157- * use index to restrict rows returned by multi-key index when used with
158- non-consecutive keys or OR clauses, so fewer heap accesses
159- * use index with constants on functions
160- * process const = const parts of OR clause in separate pass
161- * make oid use oidin/oidout not int4in/int4out in pg_type.h
162- * make oid use unsigned int more reliably, pg_atoi()
163- * create more system table indexes for faster cache lookups
164- * Move LIKE index optimization handling to the optimizer
165- * Improve LIMIT processing by using index to limit rows processed
185+ * Use mmap() rather than SYSV shared memory(?)
186+ * Process const = const parts of OR clause in separate pass
187+ * Make oid use oidin/oidout not int4in/int4out in pg_type.h
188+ * Create more system table indexes for faster cache lookups
166189* Improve Subplan list handling
190+ * Allow Subplans to use efficient joins(hash, merge) with upper variable
167191
168192
169193DOCUMENTATION