11TODO list for PostgreSQL
22========================
3- Last updated:Sun Sep 2620:37:50 EDT 1999
3+ Last updated:Sun Sep 2623:23:58 EDT 1999
44
55Current maintainer:Bruce Momjian (maillist@candle.pha.pa.us)
66
@@ -9,6 +9,9 @@ the PostgreSQL web site, http://www.PostgreSQL.org.
99
1010A dash(-) marks changes that will appear in the next release.
1111
12+ Names in brackets "[]" indicate more detailed information is available in
13+ the directory pgsql/doc/TODO.detail/ under that name.
14+
1215
1316RELIABILITY
1417-----------
2730* Alter TABLE ADD COLUMN does not honor DEFAULT, add CONSTRAINT
2831* Do not allow bpchar column creation without length
2932* Select a[1] FROM test fails, it needs test.a[1]
30- * -Array index references without table name cause problems
31- (see TODO.detail/array)
33+ * -Array index references without table name cause problems [array]
3234* Update table SET table.value = 3 fails
3335* Creating index of TIMESTAMP & RELTIME fails, or rename to DATETIME(Thomas)
3436* SELECT foo UNION SELECT foo is incorrectly simplified to SELECT foo
@@ -37,21 +39,19 @@ PARSER
3739* UNION with LIMIT fails
3840* Unique index on base column not honored on inserts from inherited table
3941 INSERT INTO inherit_table (unique_index_col) VALUES (dup) should fail
40- (see TODO.detail/ inherit)
42+ [ inherit]
4143* CREATE TABLE x AS SELECT 1 UNION SELECT 2 fails
4244* CREATE TABLE test(col char(2) DEFAULT user) fails in length restriction
43- * mismatched types in CREATE TABLE ... DEFAULT causes problems
44- (see TODO.detail/default)
45+ * mismatched types in CREATE TABLE ... DEFAULT causes problems [default]
4546* SELECT ... UNION ... ORDER BY fails when sort expr not in result list
4647* Be smarter about promoting types when UNION merges different data types
4748* SELECT ... UNION ... GROUP BY fails if column types disagree
4849* redesign INSERT ... SELECT to have two levels of target list
4950* -select * from pg_class where oid in (0,-1)
5051* have INTERSECT/EXCEPT prevent duplicates unless ALL is specified
51- * prevent primary key of nine columns(see TODO.detail/ primary)
52+ * prevent primary key of nine columns [ primary]
5253* SELECT COUNT('asdf') FROM pg_class WHERE oid=12 crashes
53- * SELECT DISTINCT ON col1 col1 col2 FROM tab1 is broken
54- (see TODO.detail/distinct)
54+ * SELECT DISTINCT ON col1 col1 col2 FROM tab1 is broken [distinct]
5555
5656VIEWS
5757
@@ -70,11 +70,11 @@ ENHANCEMENTS
7070
7171URGENT
7272
73- * Add referential integrity(Jan?)(see TODO.detail/ primary)
74- * Add OUTER joins, left and right(see TODO.detail/ outer) (Thomas, Bruce)
73+ * Add referential integrity(Jan?)[ primary]
74+ * Add OUTER joins, left and right[ outer] (Thomas, Bruce)
7575* Allow long tuples by chaining or auto-storing outside db (chaining,large objs)
7676* Eliminate limits on query length
77- * Fix memory leak for expressions?(see TODO.detail/ memory) (Tom?)
77+ * Fix memory leak for expressions?[ memory] (Tom?)
7878* -Fix memory leak for aggregates?
7979
8080ADMIN
8484* Add syslog functionality
8585* Allow elog() to return error codes, not just messages
8686* Allow international error message support and add error codes
87- * Generate postmaster pid file and remove flock/fcntl lock code
88- (see TODO.detail/flock)
89- * Add ability to specifiy location of lock/socket files (see TODO.detail/flock)
87+ * Generate postmaster pid file and remove flock/fcntl lock code [flock]
88+ * Add ability to specifiy location of lock/socket files [flock]
9089
9190TYPES
9291
@@ -115,7 +114,7 @@ TYPES
115114* Add non-large-object binary field
116115* Add index on NUMERIC/DECIMAL type
117116* Make Absolutetime/Relativetime int4 because time_t can be int8 on some ports
118- * Functions returning sets don't really work right(see TODO.detail/ function)
117+ * Functions returning sets don't really work right[ function]
119118
120119VIEWS
121120
@@ -136,19 +135,18 @@ INDEXES
136135
137136COMMANDS
138137
139- * ALTER TABLE ADD COLUMN to inherited table put column in wrong place
140- (see TODO.detail/inherit)
138+ * ALTER TABLE ADD COLUMN to inherited table put column in wrong place [inherit]
141139* Add ALTER TABLE DROP/ALTER COLUMN feature
142140* Allow CLUSTER on all tables at once, and improve CLUSTER, loses NOT
143- NULL specification on table(see TODO.detail/ cluster)
141+ NULL specification on table [ cluster]
144142* Generate error on CREATE OPERATOR of ~~, ~ and and ~*
145143* Add SIMILAR TO to allow character classes, 'pg_[a-c]%'
146144* Auto-destroy sequence on DROP of table with SERIAL(Ryan)
147145* Allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison
148146* Allow INSERT/UPDATE of system-generated oid value for a row
149- * Allow ESCAPE '\' at the end of LIKE for ANSI compliance(see TODO.detail/ like)
147+ * Allow ESCAPE '\' at the end of LIKE for ANSI compliance [ like]
150148* Rewrite the LIKE handling by rewriting the user string with the
151- supplied ESCAPE(see TODO.detail/ like)
149+ supplied ESCAPE [ like]
152150* Move LIKE index optimization handling to the optimizer
153151* Allow RULE recompilation
154152* Support UNION/INTERSECT/EXCEPT in sub-selects
@@ -161,7 +159,7 @@ CLIENTS
161159* Update reltuples from COPY command
162160* Allow psql \copy to allow delimiters
163161* Add a function to return the last inserted oid, for use in psql scripts
164- * Allow psql to print nulls as distinct from ""(see TODO.detail/ null)
162+ * Allow psql to print nulls as distinct from "" [ null]
165163* PQrequestCancel() be able to terminate backend waiting for lock
166164
167165EXOTIC FEATURES
@@ -185,19 +183,16 @@ MISC
185183* Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
186184* Allow PQrequestCancel() to terminate when in waiting-for-lock state
187185* -Transaction log, so re-do log can be on a separate disk by
188- with after-row images(Vadim)(see TODO.detail/ logging)
186+ with after-row images(Vadim)[ logging]
189187* Populate backend status area and write program to dump status data
190188* Make oid use unsigned int more reliably, pg_atoi()
191189* Allow subqueries in target list
192190* Put sort files, large objects in their own directory
193191* Do autocommit so always in a transaction block(?)
194- * Show location of syntax error in query (see TODO.detail/yacc)
195- * Redesign the function call interface to handle NULLs better
196- (see TODO.detail/function)
197- * Document/trigger/rule so changes to pg_shadow recreate pg_pwd
198- (see TODO.detail/pg_shadow)
199- * Missing optimizer selectivities for date, r-tree, etc.
200- (see TODO.detail/optimizer)
192+ * Show location of syntax error in query [yacc]
193+ * Redesign the function call interface to handle NULLs better [function]
194+ * Document/trigger/rule so changes to pg_shadow recreate pg_pwd [pg_shadow]
195+ * Missing optimizer selectivities for date, r-tree, etc. [optimizer]
201196* Overhaul mdmgr/smgr to fix double unlinking and double opens, cleanup
202197* Overhaul bufmgr/lockmgr/transaction manager
203198* Add PL/Perl(Mark Hollomon)
@@ -212,8 +207,7 @@ PERFORMANCE
212207
213208FSYNC
214209
215- * -Allow transaction commits with rollback with no-fsync performance
216- (see TODO.detail/fsync)
210+ * -Allow transaction commits with rollback with no-fsync performance [fsync]
217211* -Prevent fsync in SELECT-only queries
218212
219213INDEXES
@@ -224,23 +218,21 @@ INDEXES
224218 non-consecutive keys or OR clauses, so fewer heap accesses
225219* Convert function(constant) into a constant for index use
226220* Allow LIMIT ability on single-table queries that have no ORDER BY to use
227- a matching index(see TODO.detail/limit)
228- * Improve LIMIT processing by using index to limit rows processed
229- (see TODO.detail/limit)
230- * Have optimizer take LIMIT into account when considering index scans
231- (see TODO.detail/limit)
221+ a matching index [limit]
222+ * Improve LIMIT processing by using index to limit rows processed [limit]
223+ * Have optimizer take LIMIT into account when considering index scans [limit]
232224* Make index creation use psort code, because it is now faster(Vadim)
233225* Allow creation of sort temp tables > 1 Gig
234226* Create more system table indexes for faster cache lookups
235227* fix indexscan() so it does leak memory by not requiring caller to free
236228* Improve _bt_binsrch() to handle equal keys better, remove _bt_firsteq()(Tom)
237- * Allow SELECT * FROM tab WHERE int2col = 4 use int2col index
238- (see TODO.detail/ optimizer)
229+ * Allow SELECT * FROM tab WHERE int2col = 4 use int2col index, int8 too
230+ [ optimizer]
239231* Allow optimizer to prefer plans that match ORDER BY
240232
241233CACHE
242234
243- * Cache most recent query plan(s)(see TODO.detail/ prepare)
235+ * Cache most recent query plan(s) [ prepare]
244236* Shared catalog cache, reduce lseek()'s by caching table size in shared area
245237* elog() flushes cache, try invalidating just entries from current xact,
246238 perhaps using invalidation cache
252244* Update pg_statistic table to remove operator column
253245* Allow char() not to use variable-sized header to reduce disk size
254246* Do async I/O to do better read-ahead of data
255- * -Fix memory exhaustion when using many OR's(see TODO.detail/ cnfify)
247+ * -Fix memory exhaustion when using many OR's [ cnfify]
256248* Get faster regex() code from Henry Spencer <henry@zoo.utoronto.ca>
257249 when it is available
258250* Use mmap() rather than SYSV shared memory(?)
@@ -263,20 +255,19 @@ MISC
263255* use fmgr_info()/fmgr_faddr() instead of fmgr() calls in high-traffic
264256 places, like GROUP BY, UNIQUE, index processing, etc.
265257* improve dynamic memory allocation by introducing tuple-context memory
266- allocation(see TODO.detail/ memory)
258+ allocation [ memory]
267259* fix memory leak in cache code when non-existant table is referenced
268260* In WHERE tab1.x=3 AND tab1.x=tab2.y, add tab2.y=3
269- * pass atttypmod through parser in more cases(see TODO.detail/ atttypmod)
261+ * pass atttypmod through parser in more cases [ atttypmod]
270262* remove duplicate type in/out functions for disk and net
271263* change VACUUM ANALYZE to use btree comparison functions, not <,=,> calls
272- * Allow persistent backends(see TODO.detail/ persistent)
273- * Misc(see TODO.detail/ performance)
264+ * Allow persistent backends [ persistent]
265+ * Misc [ performance]
274266
275267SOURCE CODE
276268-----------
277269* Add use of 'const' for varibles in source tree
278- * Fix C optimizer problem where fmgr_ptr calls return different types
279- (see TODO.detail/alpha)
270+ * Fix C optimizer problem where fmgr_ptr calls return different types [alpha]
280271* -Add needed includes and removed unneeded include files(Bruce)
281272* Make configure --enable-debug add -g on compile line
282273* Does Mariposa source contain any other bug fixes?