1
1
TODO list for PostgreSQL
2
2
========================
3
- Last updated: Mon Sep 6 23:55:43 EDT 1999
3
+ Last updated: Sun Oct 10 16:40:40 EDT 1999
4
4
5
5
Current maintainer: Bruce Momjian (
[email protected] )
6
6
@@ -9,6 +9,9 @@ the PostgreSQL web site, http://www.PostgreSQL.org.
9
9
10
10
A dash(-) marks changes that will appear in the next release.
11
11
12
+ Names in brackets "[]" indicate more detailed information is available in
13
+ the directory pgsql/doc/TODO.detail/ under that name.
14
+
12
15
13
16
RELIABILITY
14
17
-----------
@@ -17,7 +20,7 @@ RESOURCES
17
20
18
21
* Elog() does not free all its memory(Jan)
19
22
* 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)
21
24
22
25
PARSER
23
26
@@ -26,57 +29,69 @@ PARSER
26
29
* SELECT pg_class FROM pg_class generates strange error
27
30
* Alter TABLE ADD COLUMN does not honor DEFAULT, add CONSTRAINT
28
31
* 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)
32
35
* Creating index of TIMESTAMP & RELTIME fails, or rename to DATETIME(Thomas)
33
36
* 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)
36
39
* UNION with LIMIT fails
37
40
* Unique index on base column not honored on inserts from inherited table
38
41
INSERT INTO inherit_table (unique_index_col) VALUES (dup) should fail
42
+ [inherit]
39
43
* CREATE TABLE x AS SELECT 1 UNION SELECT 2 fails
40
44
* CREATE TABLE test(col char(2) DEFAULT user) fails in length restriction
45
+ * mismatched types in CREATE TABLE ... DEFAULT causes problems [default]
41
46
* SELECT ... UNION ... ORDER BY fails when sort expr not in result list
42
47
* Be smarter about promoting types when UNION merges different data types
43
48
* SELECT ... UNION ... GROUP BY fails if column types disagree
44
49
* redesign INSERT ... SELECT to have two levels of target list
45
50
* -select * from pg_class where oid in (0,-1)
46
51
* 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)
47
57
48
58
VIEWS
49
59
50
60
* Views containing aggregates sometimes fail(Jan)
51
61
* Views with spaces in view name fail when referenced
62
+ * Creating view and inheriting the view causes view* to show
63
+ duplicates(inherit)
52
64
53
65
MISC
54
66
55
67
* User who can create databases can modify pg_database table
56
68
* Plpgsql does not handle quoted mixed-case identifiers
57
69
* Fix btree to give a useful elog when key > 1/2 (page - overhead)
58
70
* pg_dump should preserve primary key information
71
+ * plpgsql regression tests fail on BSD/OS
72
+ * database names with spaces fail
59
73
60
74
ENHANCEMENTS
61
75
------------
62
76
63
77
URGENT
64
78
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)
67
81
* Allow long tuples by chaining or auto-storing outside db (chaining,large objs)
68
82
* 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)
70
85
71
86
ADMIN
72
87
73
88
* Better interface for adding to pg_group
74
89
* More access control over who can create tables and access the database
75
- * Add syslog functionality
90
+ * Test syslog functionality
76
91
* Allow elog() to return error codes, not just messages
77
92
* 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]
80
95
81
96
TYPES
82
97
@@ -99,11 +114,14 @@ TYPES
99
114
* Add support for & operator
100
115
* Allow LOCALE on a per-column basis, default to ASCII
101
116
* Allow array on int8[]
117
+ * Allow nulls in arrays
118
+ * Allow arrays to be ORDER'ed
102
119
* Remove Money type, add money formatting for decimal type
103
120
* Declare typein/out functions in pg_proc with a special "C string" data type
104
121
* Add non-large-object binary field
105
- * Add index on NUMERIC/DECIMAL type
122
+ * - Add index on NUMERIC/DECIMAL type(Jan)
106
123
* Make Absolutetime/Relativetime int4 because time_t can be int8 on some ports
124
+ * Functions returning sets don't really work right[function]
107
125
108
126
VIEWS
109
127
@@ -116,28 +134,29 @@ INDEXES
116
134
* Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
117
135
fails index can't store constant parameters
118
136
* Allow creation of functional indexes to use default types
119
- * Permissions on indexes - prevent them?
137
+ * Permissions on indexes, prevent them?
120
138
* Allow SQL function indexes
121
139
* Add FILLFACTOR to index creation
122
140
* Allow indexing of LIKE with localle character sets
123
141
* Allow indexing of more than eight columns
124
142
125
143
COMMANDS
126
144
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]
128
146
* 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]
131
149
* Add SIMILAR TO to allow character classes, 'pg_[a-c]%'
132
150
* Auto-destroy sequence on DROP of table with SERIAL(Ryan)
133
151
* Allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison
134
152
* 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]
136
154
* 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)
139
157
* Allow RULE recompilation
140
158
* Support UNION/INTERSECT/EXCEPT in sub-selects
159
+ * Allow DELETE and UPDATE to use inheritance using tablename*
141
160
142
161
CLIENTS
143
162
@@ -147,15 +166,15 @@ CLIENTS
147
166
* Update reltuples from COPY command
148
167
* Allow psql \copy to allow delimiters
149
168
* 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]
152
170
153
171
EXOTIC FEATURES
154
172
155
173
* Add sql3 recursive unions
156
174
* Add the concept of dataspaces
157
175
* Add replication of distributed databases
158
176
* Allow queries across multiple databases
177
+ * Allow nested transactions
159
178
160
179
MISC
161
180
@@ -164,61 +183,63 @@ MISC
164
183
* Create a background process for each database that runs while
165
184
database is idle, finding superceeded rows, gathering stats and vacuuming
166
185
* 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)
168
187
* Restore unused oid's on backend exit if no one else has gotten oids
169
188
* Have UPDATE/DELETE clean out indexes
170
- * Allow WHERE restriction on ctid
189
+ * - Allow WHERE restriction on ctid(Hiroshi)
171
190
* Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
172
191
* 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)
175
194
* Populate backend status area and write program to dump status data
176
195
* Make oid use unsigned int more reliably, pg_atoi()
177
196
* 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]
184
203
* Overhaul mdmgr/smgr to fix double unlinking and double opens, cleanup
185
204
* Overhaul bufmgr/lockmgr/transaction manager
186
205
* Add PL/Perl(Mark Hollomon)
187
206
* Make postgres user have a password by default
188
207
* Add configure test to check for C++ need for *.h and namespaces
189
208
* Allow BLCKSZ <= 64k, not <= 32k
190
209
* redesign UNION structures to have separarate target lists
210
+ * Allow multi-level query trees for INSERT INTO ... SELECT
191
211
192
212
PERFORMANCE
193
213
-----------
194
214
195
215
FSYNC
196
216
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)
199
219
200
220
INDEXES
201
221
202
222
* Use indexes in ORDER BY for restrictive data sets, min(), max()
203
223
* Pull requested data directly from indexes, bypassing heap data
204
224
* Use index to restrict rows returned by multi-key index when used with
205
225
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)
207
227
* 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]
211
231
* Make index creation use psort code, because it is now faster(Vadim)
212
232
* Allow creation of sort temp tables > 1 Gig
213
233
* Create more system table indexes for faster cache lookups
214
234
* fix indexscan() so it does leak memory by not requiring caller to free
215
235
* 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)
218
239
219
240
CACHE
220
241
221
- * Cache most recent query plan(s?)
242
+ * Cache most recent query plan(s) [prepare]
222
243
* Shared catalog cache, reduce lseek()'s by caching table size in shared area
223
244
* elog() flushes cache, try invalidating just entries from current xact,
224
245
perhaps using invalidation cache
@@ -227,33 +248,37 @@ CACHE
227
248
MISC
228
249
229
250
* Allow compression of log and meta data
230
- * Update pg_statistic table to remove operator column
231
251
* Allow char() not to use variable-sized header to reduce disk size
232
252
* 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)
234
254
* Get faster regex() code from Henry Spencer <
[email protected] >
235
255
when it is available
236
256
* 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)
238
258
* Make oid use oidin/oidout not int4in/int4out in pg_type.h
239
259
* Improve Subplan list handling
240
260
* Allow Subplans to use efficient joins(hash, merge) with upper variable
261
+ [subquery]
241
262
* use fmgr_info()/fmgr_faddr() instead of fmgr() calls in high-traffic
242
263
places, like GROUP BY, UNIQUE, index processing, etc.
243
264
* improve dynamic memory allocation by introducing tuple-context memory
244
- allocation
265
+ allocation [memory]
245
266
* fix memory leak in cache code when non-existant table is referenced
246
267
* 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]
248
269
* remove duplicate type in/out functions for disk and net
270
+ * Allow persistent backends [persistent]
271
+ * Misc [performance]
249
272
250
273
SOURCE CODE
251
274
-----------
252
275
* 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)
255
278
* 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
257
282
---------------------------------------------------------------------------
258
283
259
284
0 commit comments