TODO 10.3 KB
Newer Older
1 2
TODO list for PostgreSQL
========================
Bruce Momjian's avatar
Bruce Momjian committed
3
Last updated:		Sat May  6 16:20:00 EDT 2000
Marc G. Fournier's avatar
Marc G. Fournier committed
4

Bruce Momjian's avatar
Bruce Momjian committed
5
Current maintainer:	Bruce Momjian (pgman@candle.pha.pa.us)
Marc G. Fournier's avatar
Marc G. Fournier committed
6

Bruce Momjian's avatar
Bruce Momjian committed
7
The most recent version of this document can be viewed at
Bruce Momjian's avatar
Bruce Momjian committed
8
the PostgreSQL web site, http://www.PostgreSQL.org.
Bruce Momjian's avatar
Bruce Momjian committed
9

Bruce Momjian's avatar
Bruce Momjian committed
10
A dash(-) marks changes that will appear in the upcoming 7.0 release.
Bruce Momjian's avatar
Bruce Momjian committed
11

Bruce Momjian's avatar
Bruce Momjian committed
12 13 14
Names in brackets "[]" indicate more detailed information is available in
the directory pgsql/doc/TODO.detail/ under that name.

Bruce Momjian's avatar
Bruce Momjian committed
15

Marc G. Fournier's avatar
Marc G. Fournier committed
16 17
RELIABILITY
-----------
18 19 20 21

PARSER

* SELECT pg_class FROM pg_class generates strange error
Bruce Momjian's avatar
Bruce Momjian committed
22
* Alter TABLE ADD COLUMN does not honor DEFAULT, add CONSTRAINT
23
* Creating index of TIMESTAMP & RELTIME fails, or rename to DATETIME(Thomas)
Bruce Momjian's avatar
Bruce Momjian committed
24
* SELECT foo UNION SELECT foo is incorrectly simplified to SELECT foo
25 26
* Unique index on base column not honored on inserts from inherited table
  INSERT INTO inherit_table (unique_index_col) VALUES (dup) should fail
Bruce Momjian's avatar
Bruce Momjian committed
27
  [inherit] 
Bruce Momjian's avatar
Bruce Momjian committed
28
* Be smarter about promoting types when UNION merges different data types
Bruce Momjian's avatar
Bruce Momjian committed
29
* redesign INSERT ... SELECT to have two levels of target list
Bruce Momjian's avatar
Bruce Momjian committed
30
* have INTERSECT/EXCEPT prevent duplicates unless ALL is specified
Bruce Momjian's avatar
Bruce Momjian committed
31
* SELECT DISTINCT ON col1 col1 col2 FROM tab1 is broken [distinct]
Bruce Momjian's avatar
Bruce Momjian committed
32
* SELECT col::DECIMAL(12,10); fails
33 34 35 36

VIEWS

* Views containing aggregates sometimes fail(Jan)
37 38
* Creating view and inheriting the view causes view* to show
  duplicates(inherit) 
Bruce Momjian's avatar
Bruce Momjian committed
39
* Disallow LOCK on view
Bruce Momjian's avatar
Bruce Momjian committed
40

41 42 43
MISC

* Plpgsql does not handle quoted mixed-case identifiers
Bruce Momjian's avatar
Bruce Momjian committed
44 45
* Buffer reference counting bugfixes
* Fix libpq bug that causes it to drop backend error message sent
Bruce Momjian's avatar
Bruce Momjian committed
46 47
  just before connection closure (ie, any FATAL error message)
* SELECT ... UNION ... ORDER BY fails when sort expr not in result list
Bruce Momjian's avatar
Bruce Momjian committed
48 49
* SELECT ... UNION ... GROUP BY fails if column types disagree, no type
  promotion occurs
Bruce Momjian's avatar
Bruce Momjian committed
50 51
* Modification  of  pg_class  can  happen while table in use by
  another backend.  Might  lead  to  MVCC  inside  of  syscache
Bruce Momjian's avatar
Bruce Momjian committed
52
* Permission to UPDATE table allows DELETE also
Bruce Momjian's avatar
Bruce Momjian committed
53
* Some database schema's are not dumpable;  do dumps in oid order
Bruce Momjian's avatar
Bruce Momjian committed
54 55


Marc G. Fournier's avatar
Marc G. Fournier committed
56 57
ENHANCEMENTS
------------
58 59 60

URGENT

Bruce Momjian's avatar
Bruce Momjian committed
61
* Add OUTER joins, left and right[outer](Thomas, Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
62
* Allow long tuples by chaining or auto-storing outside db (TOAST)(Jan)
Bruce Momjian's avatar
Bruce Momjian committed
63
* Fix memory leak for expressions[memory](Tom?) 
Bruce Momjian's avatar
Bruce Momjian committed
64

65 66
ADMIN

67
* More access control over who can create tables and access the database
Bruce Momjian's avatar
Bruce Momjian committed
68
* Test syslog functionality
Bruce Momjian's avatar
Bruce Momjian committed
69 70
* Allow elog() to return error codes, not just messages
* Allow international error message support and add error codes
Bruce Momjian's avatar
Bruce Momjian committed
71
* Add ability to specifiy location of lock/socket files [flock]
Bruce Momjian's avatar
Bruce Momjian committed
72
* Unify configuration into one configuration file (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
73

74 75
TYPES

Bruce Momjian's avatar
Bruce Momjian committed
76 77 78
* Nchar (as distinguished from ordinary varchar),
* Domain capability
* Add STDDEV/VARIANCE() function for standard deviation computation/variance
Bruce Momjian's avatar
Bruce Momjian committed
79
* Allow compression of large fields or a compressed field type
80
* Large objects
81
	o Fix large object mapping scheme, own typeid or reltype(Peter)
Bruce Momjian's avatar
Bruce Momjian committed
82 83
	o Not to stuff everything as files in a single directory, hash dirs
	o Allow large object vacuuming
84
	o Tables that start with xinv confused to be large objects
Bruce Momjian's avatar
Bruce Momjian committed
85 86 87 88
* Add IPv6 capability to INET/CIDR types
* Make a separate SERIAL type?
* Store binary-compatible type information in the system
* Add support for & operator
89
* Allow LOCALE on a per-column basis, default to ASCII
Bruce Momjian's avatar
Bruce Momjian committed
90
* Allow nulls in arrays
Bruce Momjian's avatar
Bruce Momjian committed
91
* Allow arrays to be ORDER'ed
92
* Remove Money type, add money formatting for decimal type
93
* Declare typein/out functions in pg_proc with a special "C string" data type
94
* Add non-large-object binary field
Bruce Momjian's avatar
Bruce Momjian committed
95
* Functions returning sets don't really work right[function]
96 97

VIEWS
Bruce Momjian's avatar
Bruce Momjian committed
98

Bruce Momjian's avatar
Bruce Momjian committed
99
* Allow DISTINCT on views
Bruce Momjian's avatar
Bruce Momjian committed
100
* Allow views of aggregate columns
Bruce Momjian's avatar
Bruce Momjian committed
101 102
* Allow views with subselects

103
INDEXES
Bruce Momjian's avatar
Bruce Momjian committed
104 105

* Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
106
  fails index can't store constant parameters
Bruce Momjian's avatar
Bruce Momjian committed
107 108
* Allow SQL function indexes
* Add FILLFACTOR to index creation
109 110

COMMANDS
Bruce Momjian's avatar
Bruce Momjian committed
111

Bruce Momjian's avatar
Bruce Momjian committed
112
* ALTER TABLE ADD COLUMN to inherited table put column in wrong place [inherit]
113
* Add ALTER TABLE DROP/ALTER COLUMN feature(Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
114
* Add ALTER TABLE command to change table ownership
Bruce Momjian's avatar
Bruce Momjian committed
115
* Allow CLUSTER on all tables at once, and improve CLUSTER, loses NOT
Bruce Momjian's avatar
Bruce Momjian committed
116
	NULL specification, indexes, permissions, etc on table[cluster]
Bruce Momjian's avatar
Bruce Momjian committed
117
* Add SIMILAR TO to allow character classes, 'pg_[a-c]%'
Bruce Momjian's avatar
Bruce Momjian committed
118
* Auto-destroy sequence on DROP of table with SERIAL(Ryan)
Bruce Momjian's avatar
Bruce Momjian committed
119 120
* Allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison
* Allow INSERT/UPDATE of system-generated oid value for a row
Bruce Momjian's avatar
Bruce Momjian committed
121
* Allow ESCAPE '\' at the end of LIKE for ANSI compliance [like]
Bruce Momjian's avatar
Bruce Momjian committed
122
* Rewrite the LIKE handling by rewriting the user string with the 
Bruce Momjian's avatar
Bruce Momjian committed
123
  supplied ESCAPE [like]
Bruce Momjian's avatar
Bruce Momjian committed
124
* Allow RULE recompilation
Bruce Momjian's avatar
Bruce Momjian committed
125
* Support UNION/INTERSECT/EXCEPT in sub-selects
Bruce Momjian's avatar
Bruce Momjian committed
126
* Allow DELETE and UPDATE to use inheritance using tablename*
Bruce Momjian's avatar
Bruce Momjian committed
127
* Allow INSERT INTO my_table VALUES (a, b, c, DEFAULT, x, y, z, ...)
Bruce Momjian's avatar
Bruce Momjian committed
128
* Allow BINARY option to SELECT, like we do with DECLARE
Bruce Momjian's avatar
Bruce Momjian committed
129
  
130 131
CLIENTS

Bruce Momjian's avatar
Bruce Momjian committed
132
* Make NULL's come out at the beginning or end depending on the 
133
  ORDER BY direction
Bruce Momjian's avatar
Bruce Momjian committed
134
* Update reltuples from COPY command
Bruce Momjian's avatar
Bruce Momjian committed
135
* fix array handling for ECPG
Bruce Momjian's avatar
Bruce Momjian committed
136
* add pg_dump option to dump type names as standard ANSI types
Bruce Momjian's avatar
Bruce Momjian committed
137
* allow psql \d to show primary and foreign keys
Bruce Momjian's avatar
Bruce Momjian committed
138
* allow psql \d to show temporary table schema
Bruce Momjian's avatar
Bruce Momjian committed
139

Bruce Momjian's avatar
Bruce Momjian committed
140 141 142 143 144 145 146 147 148 149 150
REFERENTIAL INTEGRITY

* Add MATCH PARTIAL referential integrity
* Foreign key does not check that columns referenced form a primary key
  or constrained by UNIQUE 
* Check that primary key exists at foreign key definition time
* Prevent column dropping if column is used by foreign key
* Propagate column or table renaming to foreign key constraints
* Emit a warning at foreign key creation time if no UNIQUE index
  exists on referenced primary key attributes

151 152 153 154 155 156
EXOTIC FEATURES

* Add sql3 recursive unions
* Add the concept of dataspaces
* Add replication of distributed databases
* Allow queries across multiple databases
Bruce Momjian's avatar
Bruce Momjian committed
157
* Allow nested transactions (Vadim)
158

159 160
MISC

Bruce Momjian's avatar
Bruce Momjian committed
161
* Increase identifier length(NAMEDATALEN) if small performance hit
Bruce Momjian's avatar
Bruce Momjian committed
162 163 164
* 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
Bruce Momjian's avatar
Bruce Momjian committed
165
* Add UNIQUE capability to non-btree indexes
Bruce Momjian's avatar
Bruce Momjian committed
166
* Certain indexes will not shrink, i.e. oid indexes with many inserts(Vadim)
Bruce Momjian's avatar
Bruce Momjian committed
167 168 169
* Restore unused oid's on backend exit if no one else has gotten oids
* Have UPDATE/DELETE clean out indexes
* Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
Bruce Momjian's avatar
Bruce Momjian committed
170
* Allow DELETE WHERE CURRENT OF cursor
Bruce Momjian's avatar
Bruce Momjian committed
171 172
* Transaction log, so re-do log can be on a separate disk by
  with after-row images(Vadim) [logging](Vadim)(in-progress)
Bruce Momjian's avatar
Bruce Momjian committed
173 174
* Populate backend status area and write program to dump status data
* Make oid use unsigned int more reliably, pg_atoi()
Bruce Momjian's avatar
Bruce Momjian committed
175 176
* Put sort files, large objects in their own directory
* Do autocommit so always in a transaction block(?)
Bruce Momjian's avatar
Bruce Momjian committed
177
* Show location of syntax error in query [yacc]
Bruce Momjian's avatar
Bruce Momjian committed
178
* Redesign the function call interface to handle NULLs better[function](Tom)
Bruce Momjian's avatar
Bruce Momjian committed
179
* Missing optimizer selectivities for date, r-tree, etc. [optimizer]
180
* Overhaul bufmgr/lockmgr/transaction manager
181
* Allow BLCKSZ <= 64k, not <= 32k
Bruce Momjian's avatar
Bruce Momjian committed
182
* redesign UNION structures to have separarate target lists
Bruce Momjian's avatar
Bruce Momjian committed
183
* Allow multi-level query trees for INSERT INTO ... SELECT
Bruce Momjian's avatar
Bruce Momjian committed
184
* Use IPC_EXCL when creating shared memory and semaphores
Bruce Momjian's avatar
Bruce Momjian committed
185
* have pg_upgrade use pg_ctl to stop/start postmaster
Bruce Momjian's avatar
Bruce Momjian committed
186
* Encrpyt passwords in pg_shadow table using MD5
Bruce Momjian's avatar
Bruce Momjian committed
187 188 189

PERFORMANCE
-----------
190 191 192

FSYNC

Bruce Momjian's avatar
Bruce Momjian committed
193
* Allow transaction commits with rollback with no-fsync performance [fsync](Vadim)
Bruce Momjian's avatar
Bruce Momjian committed
194

195 196
INDEXES

Bruce Momjian's avatar
Bruce Momjian committed
197
* Use indexes in ORDER BY for min(), max()
Bruce Momjian's avatar
Bruce Momjian committed
198
* Use index to restrict rows returned by multi-key index when used with
199
  non-consecutive keys or OR clauses, so fewer heap accesses
Bruce Momjian's avatar
Bruce Momjian committed
200 201
* Allow SELECT * FROM tab WHERE int2col = 4 use int2col index, int8,
  float4, numeric/decimal too [optimizer]
Bruce Momjian's avatar
Bruce Momjian committed
202
* Include heap CTID in btree index keys, remove equal-key cruft from btree
Bruce Momjian's avatar
Bruce Momjian committed
203

204 205
CACHE

Bruce Momjian's avatar
Bruce Momjian committed
206
* Cache most recent query plan(s) [prepare]
207
* Shared catalog cache, reduce lseek()'s by caching table size in shared area
Bruce Momjian's avatar
Bruce Momjian committed
208

209 210
MISC

211
* Allow compression of log and meta data
Bruce Momjian's avatar
Bruce Momjian committed
212 213 214
* Allow char() not to use variable-sized header to reduce disk size
* Do async I/O to do better read-ahead of data
* Get faster regex() code from Henry Spencer <henry@zoo.utoronto.ca>
215
  when it is available
Bruce Momjian's avatar
Bruce Momjian committed
216 217
* Use mmap() rather than SYSV shared memory(?)
* Make oid use oidin/oidout not int4in/int4out in pg_type.h
Bruce Momjian's avatar
Bruce Momjian committed
218
* Improve Subplan list handling
Bruce Momjian's avatar
Bruce Momjian committed
219
* Allow Subplans to use efficient joins(hash, merge) with upper variable
Bruce Momjian's avatar
Bruce Momjian committed
220
  [subquery]
Bruce Momjian's avatar
Bruce Momjian committed
221 222 223
* 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
Bruce Momjian's avatar
Bruce Momjian committed
224
  allocation [memory]
Bruce Momjian's avatar
Bruce Momjian committed
225
* In WHERE tab1.x=3 AND tab1.x=tab2.y, add tab2.y=3
Bruce Momjian's avatar
Bruce Momjian committed
226
* Allow persistent backends [persistent]
Bruce Momjian's avatar
Bruce Momjian committed
227 228
* prevent labels from being output for stored rules (Tom)
* allow configuration of maximum number of open files
229

Bruce Momjian's avatar
Bruce Momjian committed
230

231 232
SOURCE CODE
-----------
Bruce Momjian's avatar
Bruce Momjian committed
233
* Add use of 'const' for variables in source tree
Bruce Momjian's avatar
Bruce Momjian committed
234
* Fix C optimizer problem where fmgr_ptr calls return different types [alpha]
Bruce Momjian's avatar
Bruce Momjian committed
235
* Does Mariposa source contain any other bug fixes?
Bruce Momjian's avatar
Bruce Momjian committed
236
* Remove SET KSQO option now that OR processing is improved(Tom)
Bruce Momjian's avatar
Bruce Momjian committed
237
* Use macros to define NT open() file parameters, remove NT-specific defines
238
* Change CURRENT to OLD internally for rules
239

240 241 242 243 244 245 246
---------------------------------------------------------------------------


Developers who have claimed items are:
--------------------------------------
	* Billy is Billy G. Allie <Bill.Allie@mug.org>
	* Brook is Brook Milligan <brook@trillium.NMSU.Edu>
Bruce Momjian's avatar
Bruce Momjian committed
247
	* Bruce is Bruce Momjian<pgman@candle.pha.pa.us>
248 249 250 251 252
	* Bryan is Bryan Henderson<bryanh@giraffe.netgate.net>
	* D'Arcy is D'Arcy J.M. Cain <darcy@druid.net>
	* David is David Hartwig <daveh@insightdist.com>
	* Edmund is Edmund Mergl <E.Mergl@bawue.de>
	* Goran is Goran Thyni <goran@kyla.kiruna.se>
Bruce Momjian's avatar
Bruce Momjian committed
253
	* Hiroshi is Hiroshi Inoue<Inoue@tpf.co.jp>
254 255 256 257 258 259
	* Jan is Jan Wieck <wieck@sapserv.debis.de>
 	* Marc is Marc Fournier <scrappy@hub.org>
	* Massimo Dal Zotto <dz@cs.unitn.it>
	* Michael is Michael Meskes <meskes@postgresql.org>
	* Oleg is Oleg Bartunov <oleg@sai.msu.su>
	* Peter is Peter T Mount <peter@retep.org.uk>
Bruce Momjian's avatar
Bruce Momjian committed
260
	* Peter E is Peter Eisentraut<peter_e@gmx.net>
Bruce Momjian's avatar
Bruce Momjian committed
261
	* Ryan is Ryan Bradetich <rbrad@hpb50023.boi.hp.com>
262 263 264 265 266 267 268 269
	* Stefan Simkovics <ssimkovi@rainbow.studorg.tuwien.ac.at>
	* Tatsuo is Tatsuo Ishii <t-ishii@sra.co.jp>
	* Tom is Tom Lane <tgl@sss.pgh.pa.us>
	* Thomas is Thomas Lockhart <lockhart@alumni.caltech.edu>
	* TomH is Tom I Helbekkmo <tih@Hamartun.Priv.NO>
	* Vadim is "Vadim B. Mikheev" <vadim@krs.ru>