]> granicus.if.org Git - postgresql/blob - doc/TODO
Fix for ACL length problem on different platforms.
[postgresql] / doc / TODO
1 TODO list for PostgreSQL
2 ========================
3 Last updated:           Thu Jul  8 01:04:06 EDT 1999
4
5 Current maintainer:     Bruce Momjian (maillist@candle.pha.pa.us)
6
7 The most recent version of this document can be viewed at
8 the PostgreSQL web site, http://www.postgreSQL.org.
9
10 A dash(-) marks changes that will appear in the next release.
11
12
13 RELIABILITY
14 -----------
15
16 RESOURCES
17
18 * Elog() does not free all its memory(Jan)
19 * spinlock stuck problem when elog(FATAL) and elog(ERROR) inside bufmgr
20 * Recover or force failure when disk space is exhausted
21
22 PARSER
23
24 * Disallow inherited columns with the same name as new columns
25 * INSERT INTO ... SELECT with AS columns matching result columns problem
26 * SELECT pg_class FROM pg_class generates strange error
27 * Alter TABLE ADD COLUMN does not honor DEFAULT, add CONSTRAINT
28 * 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 * Creating index of TIMESTAMP & RELTIME fails, or rename to DATETIME(Thomas)
33 * 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
36 * UNION with LIMIT fails
37
38 VIEWS
39
40 * Views containing aggregates sometimes fail(Jan)
41 * Views with spaces in view name fail when referenced
42
43 MISC
44
45 * User who can create databases can modify pg_database table
46 * Plpgsql does not handle quoted mixed-case identifiers
47
48 ENHANCEMENTS
49 ------------
50
51 URGENT
52
53 * Add referential integrity(Jan?)
54 * Add OUTER joins, left and right(Thomas, Bruce)
55 * Allow long tuples by chaining or auto-storing outside db (chaining,large objs)
56 * Eliminate limits on query length
57 * Fix memory leak for expressions?, aggregates?(Tom?)
58
59 ADMIN
60
61 * Better interface for adding to pg_group
62 * More access control over who can create tables and access the database
63 * Add syslog functionality
64 * Allow elog() to return error codes, not just messages
65 * Allow international error message support and add error codes
66 * Generate postmaster pid file and remove flock/fcntl lock code
67 * Add ability to specifiy location of lock/socket files
68
69 TYPES
70
71 * Add BIT, BIT VARYING
72 * Nchar (as distinguished from ordinary varchar),
73 * Domain capability
74 * Add STDDEV/VARIANCE() function for standard deviation computation/variance
75 * Allow compression of large fields or a compressed field type
76 * Large objects
77         o Fix large object mapping scheme, own typeid or reltype(Peter)
78         o Allow large text type to use large objects(Peter)
79         o Not to stuff everything as files in a single directory, hash dirs
80         o Allow large object vacuuming
81         o Tables that start with xinv confused to be large objects
82 * Allow pg_descriptions when creating types, tables, columns, and functions
83 * Add IPv6 capability to INET/CIDR types
84 * Make a separate SERIAL type?
85 * Store binary-compatible type information in the system
86 * Allow user to define char1 column
87 * Add support for & operator
88 * Allow LOCALE on a per-column basis, default to ASCII
89 * Allow array on int8[]
90 * Remove Money type, add money formatting for decimal type
91 * Declare typein/out functions in pg_proc with a special "C string" data type
92 * Add non-large-object binary field
93 * Add index on NUMERIC type
94
95 VIEWS
96
97 * Allow DISTINCT on views
98 * Allow views of aggregate columns
99 * Allow views with subselects
100
101 INDEXES
102
103 * Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
104   fails index can't store constant parameters
105 * Allow creation of functional indexes to use default types
106 * Permissions on indexes - prevent them?
107 * Allow SQL function indexes
108 * Add FILLFACTOR to index creation
109 * Allow indexing of LIKE with localle character sets
110 * Allow indexing of more than eight columns
111
112 COMMANDS
113
114 * ALTER TABLE ADD COLUMN to inherited table put column in wrong place
115 * Add ALTER TABLE DROP/ALTER COLUMN feature
116 * Allow CLUSTER on all tables at once, and improve CLUSTER
117 * Generate error on CREATE OPERATOR of ~~, ~ and and ~*
118 * Add SIMILAR TO to allow character classes, 'pg_[a-c]%'
119 * Auto-destroy sequence on DROP of table with SERIAL(Ryan)
120 * Allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison
121 * Allow INSERT/UPDATE of system-generated oid value for a row
122 * Allow ESCAPE '\' at the end of LIKE for ANSI compliance
123 * Rewrite the LIKE handling by rewriting the user string with the 
124   supplied ESCAPE
125 * Move LIKE index optimization handling to the optimizer
126 * Allow RULE recomplation
127   
128 CLIENTS
129
130 * Make NULL's come out at the beginning or end depending on the 
131   ORDER BY direction
132 * Allow flag to control COPY input/output of NULLs
133 * Update reltuples from COPY command
134 * Allow psql \copy to allow delimiters
135 * Add a function to return the last inserted oid, for use in psql scripts
136 * Allow psql to print nulls as distinct from ""(?)
137 * PQrequestCancel() be able to terminate backend waiting for lock
138
139 EXOTIC FEATURES
140
141 * Add sql3 recursive unions
142 * Add the concept of dataspaces
143 * Add replication of distributed databases
144 * Allow queries across multiple databases
145
146 MISC
147
148 * Increase identifier length(NAMEDATALEN) if small performance hit
149 * Allow row re-use without vacuum(Vadim)
150 * Create a background process for each database that runs while
151   database is idle, finding superceeded rows, gathering stats and vacuuming
152 * Add UNIQUE capability to non-btree indexes
153 * Certain indexes will not shrink, i.e. oid indexes with many inserts
154 * Restore unused oid's on backend exit if no one else has gotten oids
155 * Have UPDATE/DELETE clean out indexes
156 * Allow WHERE restriction on ctid
157 * Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
158 * Allow PQrequestCancel() to terminate when in waiting-for-lock state
159 * Transaction log, so re-do log can be on a separate disk by
160   with after-row images(Vadim)
161 * Populate backend status area and write program to dump status data
162 * Make oid use unsigned int more reliably, pg_atoi()
163 * Allow subqueries in target list
164 * Put sort files, large objects in their on directory
165 * Do autocommit so always in a transaction block
166 * Show location of syntax error in query
167 * Redesign the function call interface to handle NULLs better(Jan)
168 * Document/trigger/rule so changes to pg_shadow create pg_pwd
169 * Missing optimizer selectivities for date, r-tree, etc.
170 * Overhaul mdmgr/smgr to fix double unlinking and double opens, cleanup
171 * Overhaul bufmgr/lockmgr/transaction manager
172 * Add PL/Perl(Mark Hollomon)
173 * Make postgres user have a password by default
174
175
176 PERFORMANCE
177 -----------
178
179 FSYNC
180
181 * Allow transaction commits with rollback with no-fsync performance
182 * Prevent fsync in SELECT-only queries
183
184 INDEXES
185
186 * Use indexes in ORDER BY for restrictive data sets, min(), max()
187 * Pull requested data directly from indexes, bypassing heap data
188 * Use index to restrict rows returned by multi-key index when used with
189   non-consecutive keys or OR clauses, so fewer heap accesses
190 * Convert function(constant) into a constant for index use
191 * Allow LIMIT ability on single-table queries that have no ORDER BY to use
192   a matching index
193 * Improve LIMIT processing by using index to limit rows processed
194 * Have optimizer take LIMIT into account when considering index scans
195 * Make index creation use psort code, because it is now faster(Vadim)
196 * Allow creation of sort temp tables > 1 Gig
197 * Create more system table indexes for faster cache lookups
198 * fix indexscan() so it does leak memory by not requiring caller to free
199 * Improve _bt_binsrch() to handle equal keys better, remove _bt_firsteq()(Tom)
200
201 CACHE
202
203 * Cache most recent query plan(s?)
204 * Shared catalog cache, reduce lseek()'s by caching table size in shared area
205 * elog() flushes cache, try invalidating just entries from current xact,
206   perhaps using invalidation cache
207
208
209 MISC
210
211 * Allow compression of log and meta data
212 * Update pg_statistic table to remove operator column
213 * Allow char() not to use variable-sized header to reduce disk size
214 * Do async I/O to do better read-ahead of data
215 * Fix memory exhaustion when using many OR's
216 * Get faster regex() code from Henry Spencer <henry@zoo.utoronto.ca>
217   when it is available
218 * Use mmap() rather than SYSV shared memory(?)
219 * Process const = const parts of OR clause in separate pass
220 * Make oid use oidin/oidout not int4in/int4out in pg_type.h
221 * Improve Subplan list handling
222 * Allow Subplans to use efficient joins(hash, merge) with upper variable
223 * use fmgr_info()/fmgr_faddr() instead of fmgr() calls in high-traffic
224   places, like GROUP BY, UNIQUE, index processing, etc.
225 * improve dynamic memory allocation by introducing tuple-context memory
226   allocation
227 * fix memory leak in cache code when non-existant table is referenced
228 * In WHERE tab1.x=3 AND tab1.x=tab2.y, add tab2.y=3
229 * pass atttypmod through parser in more cases(Bruce)
230 * remove duplicate type in/out functions for disk and net
231
232 SOURCE CODE
233 -----------
234 * Add use of 'const' for varibles in source tree
235 * Fix C optimizer problem where fmgr_ptr calls return different types
236
237
238 ---------------------------------------------------------------------------
239
240
241 Developers who have claimed items are:
242 --------------------------------------
243         * Billy is Billy G. Allie <Bill.Allie@mug.org>
244         * Brook is Brook Milligan <brook@trillium.NMSU.Edu>
245         * Bruce is Bruce Momjian<maillist@candle.pha.pa.us>
246         * Bryan is Bryan Henderson<bryanh@giraffe.netgate.net>
247         * D'Arcy is D'Arcy J.M. Cain <darcy@druid.net>
248         * David is David Hartwig <daveh@insightdist.com>
249         * Edmund is Edmund Mergl <E.Mergl@bawue.de>
250         * Goran is Goran Thyni <goran@kyla.kiruna.se>
251         * Hiroshi is Hiroshi Inoue<Inoue@tpf.co.jp>
252         * Jan is Jan Wieck <wieck@sapserv.debis.de>
253         * Marc is Marc Fournier <scrappy@hub.org>
254         * Massimo Dal Zotto <dz@cs.unitn.it>
255         * Michael is Michael Meskes <meskes@postgresql.org>
256         * Oleg is Oleg Bartunov <oleg@sai.msu.su>
257         * Peter is Peter T Mount <peter@retep.org.uk>
258         * Ryan is Ryan Bradetich <rbrad@hpb50023.boi.hp.com>
259         * Stefan Simkovics <ssimkovi@rainbow.studorg.tuwien.ac.at>
260         * Tatsuo is Tatsuo Ishii <t-ishii@sra.co.jp>
261         * Tom is Tom Lane <tgl@sss.pgh.pa.us>
262         * Thomas is Thomas Lockhart <lockhart@alumni.caltech.edu>
263         * TomH is Tom I Helbekkmo <tih@Hamartun.Priv.NO>
264         * Vadim is "Vadim B. Mikheev" <vadim@krs.ru>
265
266