11TODO list for PostgreSQL
22========================
3- Last updated: Mon Sep 6 23:55:43 EDT 1999
3+ Last updated: Sun Oct 10 16:40:40 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-----------
@@ -17,7 +20,7 @@ RESOURCES
1720
1821* Elog() does not free all its memory(Jan)
1922* spinlock stuck problem when elog(FATAL) and elog(ERROR) inside bufmgr
20- * Recover or force failure when disk space is exhausted
23+ * - Recover or force failure when disk space is exhausted(Hiroshi)
2124
2225PARSER
2326
@@ -26,57 +29,69 @@ PARSER
2629* SELECT pg_class FROM pg_class generates strange error
2730* Alter TABLE ADD COLUMN does not honor DEFAULT, add CONSTRAINT
2831* Do not allow bpchar column creation without length
29- * Select a[1] FROM test fails, it needs test.a[1]
30- * -Array index references without table name cause problems
31- * Update table SET table.value = 3 fails
32+ * - Select a[1] FROM test fails, it needs test.a[1](Tom)
33+ * -Array index references without table name cause problems [array](Tom)
34+ * Update table SET table.value = 3 fails(SQL standard says this is OK)
3235* Creating index of TIMESTAMP & RELTIME fails, or rename to DATETIME(Thomas)
3336* SELECT foo UNION SELECT foo is incorrectly simplified to SELECT foo
34- * -INSERT ... SELECT ... GROUP BY groups by target columns not source columns
35- * -CREATE TABLE test (a char(5) DEFAULT text '', b int4) fails on INSERT
37+ * -INSERT ... SELECT ... GROUP BY groups by target columns not source columns(Tom)
38+ * -CREATE TABLE test (a char(5) DEFAULT text '', b int4) fails on INSERT(Tom)
3639* UNION with LIMIT fails
3740* Unique index on base column not honored on inserts from inherited table
3841 INSERT INTO inherit_table (unique_index_col) VALUES (dup) should fail
42+ [inherit]
3943* CREATE TABLE x AS SELECT 1 UNION SELECT 2 fails
4044* CREATE TABLE test(col char(2) DEFAULT user) fails in length restriction
45+ * mismatched types in CREATE TABLE ... DEFAULT causes problems [default]
4146* SELECT ... UNION ... ORDER BY fails when sort expr not in result list
4247* Be smarter about promoting types when UNION merges different data types
4348* SELECT ... UNION ... GROUP BY fails if column types disagree
4449* redesign INSERT ... SELECT to have two levels of target list
4550* -select * from pg_class where oid in (0,-1)
4651* have INTERSECT/EXCEPT prevent duplicates unless ALL is specified
52+ * prevent primary key of nine columns [primary]
53+ * SELECT COUNT('asdf') FROM pg_class WHERE oid=12 crashes
54+ * SELECT DISTINCT ON col1 col1 col2 FROM tab1 is broken [distinct]
55+ * -When using aggregates + GROUP BY, no rows in should yield no rows out(Tom)
56+ * -Allow HAVING to use comparisons that have no aggregates(Tom)
4757
4858VIEWS
4959
5060* Views containing aggregates sometimes fail(Jan)
5161* Views with spaces in view name fail when referenced
62+ * Creating view and inheriting the view causes view* to show
63+ duplicates(inherit)
5264
5365MISC
5466
5567* User who can create databases can modify pg_database table
5668* Plpgsql does not handle quoted mixed-case identifiers
5769* Fix btree to give a useful elog when key > 1/2 (page - overhead)
5870* pg_dump should preserve primary key information
71+ * plpgsql regression tests fail on BSD/OS
72+ * database names with spaces fail
5973
6074ENHANCEMENTS
6175------------
6276
6377URGENT
6478
65- * Add referential integrity(Jan?)
66- * Add OUTER joins, left and right(Thomas, Bruce)
79+ * Add referential integrity(Jan?)[primary]
80+ * Add OUTER joins, left and right[outer] (Thomas, Bruce)
6781* Allow long tuples by chaining or auto-storing outside db (chaining,large objs)
6882* Eliminate limits on query length
69- * Fix memory leak for expressions?, aggregates?(Tom?)
83+ * Fix memory leak for expressions[memory](Tom?)
84+ * -Fix memory leak for aggregates(Tom)
7085
7186ADMIN
7287
7388* Better interface for adding to pg_group
7489* More access control over who can create tables and access the database
75- * Add syslog functionality
90+ * Test syslog functionality
7691* Allow elog() to return error codes, not just messages
7792* Allow international error message support and add error codes
78- * Generate postmaster pid file and remove flock/fcntl lock code
79- * Add ability to specifiy location of lock/socket files
93+ * Generate postmaster pid file and remove flock/fcntl lock code [flock]
94+ * Add ability to specifiy location of lock/socket files [flock]
8095
8196TYPES
8297
@@ -99,11 +114,14 @@ TYPES
99114* Add support for & operator
100115* Allow LOCALE on a per-column basis, default to ASCII
101116* Allow array on int8[]
117+ * Allow nulls in arrays
118+ * Allow arrays to be ORDER'ed
102119* Remove Money type, add money formatting for decimal type
103120* Declare typein/out functions in pg_proc with a special "C string" data type
104121* Add non-large-object binary field
105- * Add index on NUMERIC/DECIMAL type
122+ * - Add index on NUMERIC/DECIMAL type(Jan)
106123* Make Absolutetime/Relativetime int4 because time_t can be int8 on some ports
124+ * Functions returning sets don't really work right[function]
107125
108126VIEWS
109127
@@ -116,28 +134,29 @@ INDEXES
116134* Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
117135 fails index can't store constant parameters
118136* Allow creation of functional indexes to use default types
119- * Permissions on indexes - prevent them?
137+ * Permissions on indexes, prevent them?
120138* Allow SQL function indexes
121139* Add FILLFACTOR to index creation
122140* Allow indexing of LIKE with localle character sets
123141* Allow indexing of more than eight columns
124142
125143COMMANDS
126144
127- * ALTER TABLE ADD COLUMN to inherited table put column in wrong place
145+ * ALTER TABLE ADD COLUMN to inherited table put column in wrong place [inherit]
128146* Add ALTER TABLE DROP/ALTER COLUMN feature
129- * Allow CLUSTER on all tables at once, and improve CLUSTER
130- * Generate error on CREATE OPERATOR of ~~, ~ and and ~*
147+ * Allow CLUSTER on all tables at once, and improve CLUSTER, loses NOT
148+ NULL specification on table [cluster]
131149* Add SIMILAR TO to allow character classes, 'pg_[a-c]%'
132150* Auto-destroy sequence on DROP of table with SERIAL(Ryan)
133151* Allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison
134152* Allow INSERT/UPDATE of system-generated oid value for a row
135- * Allow ESCAPE '\' at the end of LIKE for ANSI compliance
153+ * Allow ESCAPE '\' at the end of LIKE for ANSI compliance [like]
136154* Rewrite the LIKE handling by rewriting the user string with the
137- supplied ESCAPE
138- * Move LIKE index optimization handling to the optimizer
155+ supplied ESCAPE [like]
156+ * - Move LIKE index optimization handling to the optimizer(Tom)
139157* Allow RULE recompilation
140158* Support UNION/INTERSECT/EXCEPT in sub-selects
159+ * Allow DELETE and UPDATE to use inheritance using tablename*
141160
142161CLIENTS
143162
@@ -147,15 +166,15 @@ CLIENTS
147166* Update reltuples from COPY command
148167* Allow psql \copy to allow delimiters
149168* Add a function to return the last inserted oid, for use in psql scripts
150- * Allow psql to print nulls as distinct from ""(?)
151- * PQrequestCancel() be able to terminate backend waiting for lock
169+ * Allow psql to print nulls as distinct from "" [null]
152170
153171EXOTIC FEATURES
154172
155173* Add sql3 recursive unions
156174* Add the concept of dataspaces
157175* Add replication of distributed databases
158176* Allow queries across multiple databases
177+ * Allow nested transactions
159178
160179MISC
161180
@@ -164,61 +183,63 @@ MISC
164183* Create a background process for each database that runs while
165184 database is idle, finding superceeded rows, gathering stats and vacuuming
166185* Add UNIQUE capability to non-btree indexes
167- * Certain indexes will not shrink, i.e. oid indexes with many inserts
186+ * - Certain indexes will not shrink, i.e. oid indexes with many inserts(Vadim)
168187* Restore unused oid's on backend exit if no one else has gotten oids
169188* Have UPDATE/DELETE clean out indexes
170- * Allow WHERE restriction on ctid
189+ * - Allow WHERE restriction on ctid(Hiroshi)
171190* Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
172191* Allow PQrequestCancel() to terminate when in waiting-for-lock state
173- * Transaction log, so re-do log can be on a separate disk by
174- with after-row images(Vadim)
192+ * - Transaction log, so re-do log can be on a separate disk by
193+ with after-row images(Vadim) [logging](Vadim)
175194* Populate backend status area and write program to dump status data
176195* Make oid use unsigned int more reliably, pg_atoi()
177196* Allow subqueries in target list
178- * Put sort files, large objects in their on directory
179- * Do autocommit so always in a transaction block
180- * Show location of syntax error in query
181- * Redesign the function call interface to handle NULLs better(Jan)
182- * Document/trigger/rule so changes to pg_shadow create pg_pwd
183- * Missing optimizer selectivities for date, r-tree, etc.
197+ * Put sort files, large objects in their own directory
198+ * Do autocommit so always in a transaction block(?)
199+ * Show location of syntax error in query [yacc]
200+ * Redesign the function call interface to handle NULLs better [function]
201+ * Document/trigger/rule so changes to pg_shadow recreate pg_pwd [pg_shadow]
202+ * Missing optimizer selectivities for date, r-tree, etc. [optimizer]
184203* Overhaul mdmgr/smgr to fix double unlinking and double opens, cleanup
185204* Overhaul bufmgr/lockmgr/transaction manager
186205* Add PL/Perl(Mark Hollomon)
187206* Make postgres user have a password by default
188207* Add configure test to check for C++ need for *.h and namespaces
189208* Allow BLCKSZ <= 64k, not <= 32k
190209* redesign UNION structures to have separarate target lists
210+ * Allow multi-level query trees for INSERT INTO ... SELECT
191211
192212PERFORMANCE
193213-----------
194214
195215FSYNC
196216
197- * Allow transaction commits with rollback with no-fsync performance
198- * Prevent fsync in SELECT-only queries
217+ * - Allow transaction commits with rollback with no-fsync performance [fsync](Vadim)
218+ * - Prevent fsync in SELECT-only queries(Vadim)
199219
200220INDEXES
201221
202222* Use indexes in ORDER BY for restrictive data sets, min(), max()
203223* Pull requested data directly from indexes, bypassing heap data
204224* Use index to restrict rows returned by multi-key index when used with
205225 non-consecutive keys or OR clauses, so fewer heap accesses
206- * Convert function(constant) into a constant for index use
226+ * - Convert function(constant) into a constant for index use(Tom)
207227* Allow LIMIT ability on single-table queries that have no ORDER BY to use
208- a matching index
209- * Improve LIMIT processing by using index to limit rows processed
210- * Have optimizer take LIMIT into account when considering index scans
228+ a matching index [limit]
229+ * Improve LIMIT processing by using index to limit rows processed [limit]
230+ * Have optimizer take LIMIT into account when considering index scans [limit]
211231* Make index creation use psort code, because it is now faster(Vadim)
212232* Allow creation of sort temp tables > 1 Gig
213233* Create more system table indexes for faster cache lookups
214234* fix indexscan() so it does leak memory by not requiring caller to free
215235* Improve _bt_binsrch() to handle equal keys better, remove _bt_firsteq()(Tom)
216- * Allow SELECT * FROM tab WHERE int2col = 4 use int2col index
217- * Allow optimizer to prefer plans that match ORDER BY
236+ * Allow SELECT * FROM tab WHERE int2col = 4 use int2col index, int8,
237+ float4, numeric/decimal too [optimizer]
238+ * -Allow optimizer to prefer plans that match ORDER BY(Tom)
218239
219240CACHE
220241
221- * Cache most recent query plan(s?)
242+ * Cache most recent query plan(s) [prepare]
222243* Shared catalog cache, reduce lseek()'s by caching table size in shared area
223244* elog() flushes cache, try invalidating just entries from current xact,
224245 perhaps using invalidation cache
@@ -227,33 +248,37 @@ CACHE
227248MISC
228249
229250* Allow compression of log and meta data
230- * Update pg_statistic table to remove operator column
231251* Allow char() not to use variable-sized header to reduce disk size
232252* Do async I/O to do better read-ahead of data
233- * -Fix memory exhaustion when using many OR's
253+ * -Fix memory exhaustion when using many OR's [cnfify](Tom)
234254* Get faster regex() code from Henry Spencer <henry@zoo.utoronto.ca>
235255 when it is available
236256* Use mmap() rather than SYSV shared memory(?)
237- * Process const = const parts of OR clause in separate pass
257+ * - Process const = const parts of OR clause in separate pass(Tom)
238258* Make oid use oidin/oidout not int4in/int4out in pg_type.h
239259* Improve Subplan list handling
240260* Allow Subplans to use efficient joins(hash, merge) with upper variable
261+ [subquery]
241262* use fmgr_info()/fmgr_faddr() instead of fmgr() calls in high-traffic
242263 places, like GROUP BY, UNIQUE, index processing, etc.
243264* improve dynamic memory allocation by introducing tuple-context memory
244- allocation
265+ allocation [memory]
245266* fix memory leak in cache code when non-existant table is referenced
246267* In WHERE tab1.x=3 AND tab1.x=tab2.y, add tab2.y=3
247- * pass atttypmod through parser in more cases(Bruce)
268+ * pass atttypmod through parser in more cases [atttypmod]
248269* remove duplicate type in/out functions for disk and net
270+ * Allow persistent backends [persistent]
271+ * Misc [performance]
249272
250273SOURCE CODE
251274-----------
252275* Add use of 'const' for varibles in source tree
253- * Fix C optimizer problem where fmgr_ptr calls return different types
254- * Add needed includes and removed unneede include files(Bruce)
276+ * Fix C optimizer problem where fmgr_ptr calls return different types [alpha]
277+ * - Add needed includes and removed unneeded include files(Bruce)
255278* Make configure --enable-debug add -g on compile line
256-
279+ * Does Mariposa source contain any other bug fixes?
280+ * Remove SET KSQO option if OR processing is improved(Tom)
281+ * rename 'createuser' to 'pg_createuser', and add 'pg_' to other commands
257282---------------------------------------------------------------------------
258283
259284
0 commit comments