TODO 19.9 KB
Newer Older
Bruce Momjian's avatar
Bruce Momjian committed
1
TODO list for PostgreSQL
2
========================
Bruce Momjian's avatar
Added  
Bruce Momjian committed
3
Last updated:		Sat Dec 29 00:22:31 EST 2001
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.2 release.
Bruce Momjian's avatar
Bruce Momjian committed
11

Bruce Momjian's avatar
Bruce Momjian committed
12
Bracketed items "[]" have more detailed.
Bruce Momjian's avatar
Bruce Momjian committed
13

Bruce Momjian's avatar
Bruce Momjian committed
14

Marc G. Fournier's avatar
Marc G. Fournier committed
15 16
RELIABILITY
-----------
17

Bruce Momjian's avatar
Bruce Momjian committed
18
* -SELECT pg_class FROM pg_class generates strange error (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
19

Bruce Momjian's avatar
Bruce Momjian committed
20

Marc G. Fournier's avatar
Marc G. Fournier committed
21 22
ENHANCEMENTS
------------
23 24 25

URGENT

Bruce Momjian's avatar
Bruce Momjian committed
26
* Add replication of distributed databases [replication]
Bruce Momjian's avatar
Bruce Momjian committed
27
	o automatic failover
Bruce Momjian's avatar
Bruce Momjian committed
28 29 30 31 32 33
	o load balancing
	o master/slave replication
	o multi-master replication
	o partition data across servers
	o sample implementation in contrib/rserv
	o queries across databases or servers (two-phase commit)
Bruce Momjian's avatar
Bruce Momjian committed
34
	o http://gborg.postgresql.org/project/pgreplication/projdisplay.php
Bruce Momjian's avatar
Bruce Momjian committed
35
* Point-in-time data recovery using backup and write-ahead log
Bruce Momjian's avatar
Bruce Momjian committed
36
* Allow row re-use without vacuum (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
37

38 39
ADMIN

Bruce Momjian's avatar
Bruce Momjian committed
40
* Improve control over user privileges, including table creation and
Bruce Momjian's avatar
Bruce Momjian committed
41
  lock use [privileges] (Karel, others)
Bruce Momjian's avatar
Bruce Momjian committed
42
* Make it easier to create a database owned by someone who can't createdb
Bruce Momjian's avatar
Bruce Momjian committed
43
* -Permission to DELETE table also allows UPDATE (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
44
* Allow elog() to return error codes, module name, file name, line
Bruce Momjian's avatar
Bruce Momjian committed
45 46 47
  number, not just messages (Peter E)
* -Allow international error message support (Peter E)
* Add error codes (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
48 49
* -Remove unused sort files on postmaster startup (Bruce)
* Remove unreferenced table files and temp tables during database vacuum
Bruce Momjian's avatar
Bruce Momjian committed
50
  or postmaster startup (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
51
* -Remove unreferenced sort files during postmaster startup (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
52
* Add table name mapping for numeric file names (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
53
* -Better document pg_hba.conf host-based authentication (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
54
* -Encrpyt passwords in pg_shadow table using MD5 (Bruce, Vince)
Bruce Momjian's avatar
Bruce Momjian committed
55
* Incremental backups
Bruce Momjian's avatar
Bruce Momjian committed
56 57
* Remove behavior of postmaster -o after making postmaster/postgres
  flags unique
Bruce Momjian's avatar
Bruce Momjian committed
58
* Allow usernames to be specified directly in pg_hba.conf (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
59
* Add function to return compressed length of TOAST data values (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
60
* Change DEBUG tag used in server logs
Bruce Momjian's avatar
Bruce Momjian committed
61

Bruce Momjian's avatar
Bruce Momjian committed
62
DATA TYPES
63

Bruce Momjian's avatar
Bruce Momjian committed
64
* Add domain capability [domain]
Bruce Momjian's avatar
Bruce Momjian committed
65
* Add IPv6 capability to INET/CIDR types
Bruce Momjian's avatar
Bruce Momjian committed
66
* -Add conversion function from text to inet
Bruce Momjian's avatar
Bruce Momjian committed
67
* Store binary-compatible type information in the system
Bruce Momjian's avatar
Bruce Momjian committed
68
* Allow better handling of numeric constants, type conversion [typeconv]
Bruce Momjian's avatar
Bruce Momjian committed
69
* Support construction of array result values in expressions
70
* Remove Money type, add money formatting for decimal type
Bruce Momjian's avatar
Bruce Momjian committed
71
* SELECT cash_out(2) crashes because of opaque
72
* Declare typein/out functions in pg_proc with a special "C string" data type
Bruce Momjian's avatar
Bruce Momjian committed
73
* Functions returning sets do not totally work
Bruce Momjian's avatar
Bruce Momjian committed
74
* SELECT col FROM tab WHERE numeric_col = 10.1 fails, requires quotes
Bruce Momjian's avatar
Bruce Momjian committed
75
* Missing optimizer selectivities for date, r-tree, etc. [optimizer]
Bruce Momjian's avatar
Bruce Momjian committed
76
* -Add SQL standard function bit_length() (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
77
* -Make oid use unsigned int more reliably (Tom)
78
* ARRAYS
Bruce Momjian's avatar
Bruce Momjian committed
79 80
	o Allow nulls in arrays
	o Allow arrays to be ORDER'ed
Bruce Momjian's avatar
Bruce Momjian committed
81
	o Ensure we have array-eq operators for every built-in array type
Bruce Momjian's avatar
Bruce Momjian committed
82
* BINARY DATA
Bruce Momjian's avatar
Bruce Momjian committed
83 84
	o -Add non-large-object binary field (already exists -- bytea)
	o -Make binary interface for TOAST columns (base64)
Bruce Momjian's avatar
Bruce Momjian committed
85
	o Improve vacuum of large objects, like /contrib/vacuumlo
Bruce Momjian's avatar
Bruce Momjian committed
86 87 88 89
	o Add security checking for large objects
	o Make file in/out interface for TOAST columns, similar to large object
	  interface (force out-of-line storage and no compression)
	o Auto-delete large objects when referencing row is deleted
Bruce Momjian's avatar
Bruce Momjian committed
90

Bruce Momjian's avatar
Bruce Momjian committed
91
MULTI-LANGUAGE SUPPORT
Bruce Momjian's avatar
Bruce Momjian committed
92

93
* Add NCHAR (as distinguished from ordinary varchar),
Bruce Momjian's avatar
Bruce Momjian committed
94
* Allow LOCALE on a per-column basis, default to ASCII
Bruce Momjian's avatar
Bruce Momjian committed
95
* Support multiple simultaneous character sets, per SQL92
Bruce Momjian's avatar
Bruce Momjian committed
96
* -Reject character sequences those are not valid in their charset (Tatsuo)
Bruce Momjian's avatar
Bruce Momjian committed
97
* -Make functions more multi-byte aware, e.g. trim() (Tatsuo)
Bruce Momjian's avatar
Bruce Momjian committed
98
* -Make n of CHAR(n)/VARCHAR(n) the number of letters, not bytes (Tatsuo)
Bruce Momjian's avatar
Bruce Momjian committed
99
* Allow setting database character set without multibyte enabled
Bruce Momjian's avatar
Bruce Momjian committed
100
* Improve Unicode combined character handling
Bruce Momjian's avatar
Bruce Momjian committed
101
* Optimize locale to have minimal performance impact when not used (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
102
* -Optimize textlength(), etc. for single-byte encodings (Tatsuo)
Bruce Momjian's avatar
Bruce Momjian committed
103
* Add octet_length_server() and octet_length_client() (Thomas, Tatsuo)
Bruce Momjian's avatar
Bruce Momjian committed
104
* Make octet_length_client the same as octet_length() (?)
105

Bruce Momjian's avatar
Bruce Momjian committed
106
VIEWS / RULES
Bruce Momjian's avatar
Bruce Momjian committed
107

Bruce Momjian's avatar
Bruce Momjian committed
108
* Automatically create rules on views so they are updateable, per SQL92 [view]
Bruce Momjian's avatar
Bruce Momjian committed
109
* Add the functionality for WITH CHECK OPTION clause of CREATE VIEW
Bruce Momjian's avatar
Bruce Momjian committed
110
* Allow NOTIFY in rules involving conditionals
Bruce Momjian's avatar
Bruce Momjian committed
111
* -Evaluate INSERT rules at end of query, rather than beginning (Jan)
Bruce Momjian's avatar
Bruce Momjian committed
112
* Allow temporary views
Bruce Momjian's avatar
Bruce Momjian committed
113
* Move psql backslash information into views
Bruce Momjian's avatar
Bruce Momjian committed
114 115
* Allow RULE recompilation
* Remove brackets as multi-statement rule grouping, must use parens
Bruce Momjian's avatar
Bruce Momjian committed
116

117
INDEXES
Bruce Momjian's avatar
Bruce Momjian committed
118 119

* Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
120
  fails index can't store constant parameters
Bruce Momjian's avatar
Bruce Momjian committed
121
* Order duplicate index entries by tid for faster heap lookups
Bruce Momjian's avatar
Bruce Momjian committed
122
* -Re-enable partial indexes
Bruce Momjian's avatar
Bruce Momjian committed
123
* -Prevent pg_attribute from having duplicate oids for indexes (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
124 125
* Allow inherited tables to inherit index, UNIQUE constraint, and primary
  key, foreign key  [inheritance]
Bruce Momjian's avatar
Bruce Momjian committed
126 127 128
* UNIQUE INDEX on base column not honored on inserts from inherited table
  INSERT INTO inherit_table (unique_index_col) VALUES (dup) should fail
  [inheritance]
Bruce Momjian's avatar
Bruce Momjian committed
129
* Have UPDATE/DELETE clean out indexes
Bruce Momjian's avatar
Bruce Momjian committed
130 131
* Allow UPDATE/DELETE on inherited table
* Add UNIQUE capability to non-btree indexes
Bruce Momjian's avatar
Bruce Momjian committed
132 133
* Add btree index support for reltime, tinterval, regproc
* Add rtree index support for line, lseg, path, point
Bruce Momjian's avatar
Bruce Momjian committed
134
* Certain indexes will not shrink, e.g. oid indexes with many inserts
Bruce Momjian's avatar
Bruce Momjian committed
135
* Use indexes for min() and max() or convert to SELECT col FROM tab ORDER
Bruce Momjian's avatar
Bruce Momjian committed
136
  BY col DESC LIMIT 1 if appropriate index exists and WHERE clause acceptible
Bruce Momjian's avatar
Bruce Momjian committed
137
* Allow LIKE indexing optimization for non-ASCII locales
Bruce Momjian's avatar
Bruce Momjian committed
138 139 140
* Use index to restrict rows returned by multi-key index when used with
  non-consecutive keys or OR clauses, so fewer heap accesses
* Be smarter about insertion of already-ordered data into btree index
Bruce Momjian's avatar
Bruce Momjian committed
141
* -Gather more accurate dispersion statistics using indexes (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
142 143
* Add deleted bit to index tuples to reduce heap access
* Prevent index uniqueness checks when UPDATE does not modifying column
Bruce Momjian's avatar
Bruce Momjian committed
144
* Add bitmap indexes [performance]
Bruce Momjian's avatar
Bruce Momjian committed
145
* Improve handling of index scans for NULL
Bruce Momjian's avatar
Bruce Momjian committed
146 147 148
* Allow SELECT * FROM tab WHERE int2col = 4 to use int2col index, int8,
  float4, numeric/decimal too [optimizer]
* -Use indexes with CIDR '<<' (contains) operator
Bruce Momjian's avatar
Bruce Momjian committed
149
* Improve concurrency in GIST
Bruce Momjian's avatar
Bruce Momjian committed
150
* Add FILLFACTOR to index creation
Bruce Momjian's avatar
Bruce Momjian committed
151 152 153

SYSTEM TABLES

Bruce Momjian's avatar
Bruce Momjian committed
154
* -Add unique indexes to pg_shadow.usename and pg_shadow.usesysid or
Bruce Momjian's avatar
Bruce Momjian committed
155 156
  switch to pg_shadow.oid as user id (Tom)
* -Add unique indexes on pg_database (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
157
* -Check all system tables and add unique indexes as needed (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
158
* -Remove pg_listener index (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
159
* -Remove unused pg_variable, pg_inheritproc, pg_ipl tables (Bruce)
160 161

COMMANDS
Bruce Momjian's avatar
Bruce Momjian committed
162

163
* Add SIMILAR TO to allow character classes, 'pg_[a-c]%'
Bruce Momjian's avatar
Bruce Momjian committed
164
* Add BETWEEN ASYMMETRIC/SYMMETRIC
Bruce Momjian's avatar
Bruce Momjian committed
165
* -Allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison [lock]
Bruce Momjian's avatar
Bruce Momjian committed
166
* Remove LIMIT #,# and force use LIMIT and OFFSET clauses in 7.3 (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
167
* Allow LIMIT/OFFSET to use expressions
Bruce Momjian's avatar
Bruce Momjian committed
168
* -Allow GRANT/REVOKE to handle multiple user/group names (Vince)
Bruce Momjian's avatar
Bruce Momjian committed
169
* -Allow CREATEUSER/CREATEDB ordering in CREATE/ALTER USER (Vince)
Bruce Momjian's avatar
Bruce Momjian committed
170
* Disallow TRUNCATE on tables that are involved in referential constraints
Bruce Momjian's avatar
Bruce Momjian committed
171
* Add OR REPLACE clauses to non-FUNCTION object creation
Bruce Momjian's avatar
Bruce Momjian committed
172 173
* CREATE TABLE AS can not determine column lengths from expressions [atttypmod]
* Allow UPDATE to handle complex aggregates [update]
Bruce Momjian's avatar
Bruce Momjian committed
174
* ALTER
Bruce Momjian's avatar
Bruce Momjian committed
175 176
	o ALTER TABLE ADD COLUMN does not honor DEFAULT and non-CHECK CONSTRAINT
	o ALTER TABLE ADD COLUMN to inherited table put column in wrong place
Bruce Momjian's avatar
Bruce Momjian committed
177
	  [inheritance]
Bruce Momjian's avatar
Bruce Momjian committed
178
	o Add ALTER TABLE DROP COLUMN feature [drop] (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
179 180 181 182 183
	o Add ALTER FUNCTION
	o Add ALTER TABLE DROP non-CHECK CONSTRAINT
	o -Add ALTER TABLE DROP CHECK CONSTRAINT (Christopher Kings-Lynne)
	o ALTER TABLE ADD PRIMARY KEY (Christopher Kings-Lynne)
	o ALTER TABLE ADD UNIQUE (Christopher Kings-Lynne)
Bruce Momjian's avatar
Bruce Momjian committed
184
	o ALTER TABLE ADD COLUMN column SERIAL doesn't create sequence
Bruce Momjian's avatar
Bruce Momjian committed
185
	o ALTER TABLE ADD COLUMN column SET DEFAULT should fill existing
Bruce Momjian's avatar
Bruce Momjian committed
186
	  rows with DEFAULT value
Bruce Momjian's avatar
Added  
Bruce Momjian committed
187
	o Have ALTER TABLE OWNER change all dependant objects like indexes
Bruce Momjian's avatar
Bruce Momjian committed
188
* CLUSTER
Bruce Momjian's avatar
Bruce Momjian committed
189
	o cluster all tables at once
Bruce Momjian's avatar
Bruce Momjian committed
190
	o prevent lose of indexes, permissions, inheritance (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
191 192
	o Automatically keep clustering on a table
	o -Keep statistics about clustering (Tom) [optimizer]
Bruce Momjian's avatar
Bruce Momjian committed
193
* COPY
Bruce Momjian's avatar
Bruce Momjian committed
194 195
	o Allow specification of column names
	o Allow dump/load of CSV format
Bruce Momjian's avatar
Add  
Bruce Momjian committed
196
	o Change syntax to WITH DELIMITER, (keep old syntax around?)
Bruce Momjian's avatar
Bruce Momjian committed
197
* CURSOR
Bruce Momjian's avatar
Bruce Momjian committed
198 199 200 201
	o Allow BINARY option to SELECT, like we do with DECLARE
	o MOVE 0 should not move to end of cursor
	o Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
	o Allow DELETE WHERE CURRENT OF cursor
Bruce Momjian's avatar
Bruce Momjian committed
202
	o Prevent DROP of table being referenced by our own open cursor
Bruce Momjian's avatar
Bruce Momjian committed
203
* INSERT
Bruce Momjian's avatar
Bruce Momjian committed
204 205 206 207
	o Allow INSERT/UPDATE of system-generated oid value for a row
	o Allow INSERT INTO tab (col1, ..) VALUES (val1, ..), (val2, ..)
	o Allow INSERT INTO my_table VALUES (a, b, c, DEFAULT, x, y, z, ...)
	o Disallow missing columns in INSERT ... VALUES, per ANSI
Bruce Momjian's avatar
Bruce Momjian committed
208
	o Allow INSERT/UPDATE ... RETURNING new.col or old.col; handle
Bruce Momjian's avatar
Bruce Momjian committed
209
	  RULE cases (Philip)
Bruce Momjian's avatar
Bruce Momjian committed
210
* SHOW/SET
Bruce Momjian's avatar
Bruce Momjian committed
211 212 213 214 215 216 217
	o Add SHOW command to display locks
	o -Add SHOW command to show all settings
	o -Add a global RESET command for use with connection pooling
	o Add SET or BEGIN timeout parameter to cancel query
	o Add SET REAL_FORMAT and SET DOUBLE_PRECISION_FORMAT using printf args
	o Remove SET KSQO option now that OR processing is improved (Tom)
	o Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM
Bruce Momjian's avatar
Bruce Momjian committed
218
	  ANALYZE, and CLUSTER
Bruce Momjian's avatar
Bruce Momjian committed
219
	o Add SHOW command to see locale
Bruce Momjian's avatar
Bruce Momjian committed
220
* SERVER-SIDE LANGUAGES
Bruce Momjian's avatar
Bruce Momjian committed
221
	o Allow PL/PgSQL's RAISE function to take expressions
Bruce Momjian's avatar
Bruce Momjian committed
222
	o Fix PL/PgSQL to handle quoted mixed-case identifiers
Bruce Momjian's avatar
Bruce Momjian committed
223 224 225
	o Change PL/PgSQL to use palloc() instead of malloc()
	o Add untrusted version of plpython
	o Add plsh server-side shell language (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
226
	o Allow Java server-side programming (?) [java]
Bruce Momjian's avatar
Bruce Momjian committed
227

228 229
CLIENTS

Bruce Momjian's avatar
Bruce Momjian committed
230 231
* -Make NULL's come out at the beginning or end depending on the
  ORDER BY direction (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
232
* Have pg_dump use LEFT OUTER JOIN in multi-table SELECTs
Bruce Momjian's avatar
Bruce Momjian committed
233
  or multiple SELECTS to avoid bad system catalog entries
Bruce Momjian's avatar
Bruce Momjian committed
234
* Have pg_dump -C dump database location and encoding information
Bruce Momjian's avatar
Bruce Momjian committed
235 236 237
* Allow psql \d to show foreign keys
* Allow psql \d to show temporary table structure
* Add XML interface:  psql, pg_dump, COPY, separate server (?)
Bruce Momjian's avatar
Bruce Momjian committed
238
* -Fix libpq to properly handle socket failures under native MS Win32
Bruce Momjian's avatar
Bruce Momjian committed
239
* -Add MD5 to ODBC (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
240
* Add documentation for perl, including mention of DBI/DBD perl location
Bruce Momjian's avatar
Bruce Momjian committed
241 242
* Add PGPASSWORDFILE environment variable or ~/.pgpass to store
  user/host/password combinations
Bruce Momjian's avatar
Bruce Momjian committed
243
* Remove PGPASSWORD because is insecure on some OS's
Bruce Momjian's avatar
Bruce Momjian committed
244 245
* -Allow single-user access without passwords using Unix socket permissions
* Make single-user local access permissions the default (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
246
* JDBC
Bruce Momjian's avatar
Bruce Momjian committed
247 248
	o Comprehensive test suite. This may be available already.
	o Updateable resultSet (must be done in backend code)
Barry Lind's avatar
Barry Lind committed
249
	o -Improved DatabaseMetaData [java]
Bruce Momjian's avatar
Bruce Momjian committed
250 251
	o JDBC-standard BLOB support
	o Error Codes (pending backend implementation)
Barry Lind's avatar
Barry Lind committed
252
	o -Support for binary data/bytea
Bruce Momjian's avatar
Bruce Momjian committed
253
	o Move to using 'make' rather than 'ant'(?)
Barry Lind's avatar
Barry Lind committed
254 255 256 257
	o -Add MD5 capability
	o Fix LargeObject API to handle OIDs as unsigned ints
	o Implement cancel() method on Statement
	o Use cursors implicitly to avoid large results (see setCursorName())
258
        o Add support for CallableStatements
Bruce Momjian's avatar
Bruce Momjian committed
259
* ECPG
Bruce Momjian's avatar
Bruce Momjian committed
260 261
	o Implement set descriptor, using descriptor
	o Make casts work in variable initializations
Bruce Momjian's avatar
Bruce Momjian committed
262 263
	o -Allow variable to specify the connection name
	o -Fix variable handling in EXEC SQL AT statement
Bruce Momjian's avatar
Bruce Momjian committed
264
	o Implement SQLDA
Bruce Momjian's avatar
Bruce Momjian committed
265
	o -Allow SELECT of array of strings into a auto-sized variable
Bruce Momjian's avatar
Bruce Momjian committed
266
	o Solve cardinality > 1 for input descriptors / variables
Bruce Momjian's avatar
Bruce Momjian committed
267 268 269 270 271
	o Understand structure definitions outside a declare section
	o sqlwarn[6] should be 'W' if the PRECISION or SCALE value specified
	o Improve error handling
	o Allow :var[:index] or :var[<integer>] as cvariable for an array var
	o Add a semantic check level, e.g. check if a table really exists
Michael Meskes's avatar
Michael Meskes committed
272
	o -Remove space_or_nl and line_end from pgc.l
Bruce Momjian's avatar
Bruce Momjian committed
273 274
	o Fix nested C comments
	o Add SQLSTATE
Michael Meskes's avatar
Michael Meskes committed
275
	o fix handling of DB attributes taht are arrays
Bruce Momjian's avatar
Bruce Momjian committed
276

Bruce Momjian's avatar
Bruce Momjian committed
277 278
REFERENTIAL INTEGRITY

Bruce Momjian's avatar
Bruce Momjian committed
279
* Add MATCH PARTIAL referential integrity [foreign]
Bruce Momjian's avatar
Bruce Momjian committed
280
* -Check that primary key exists at foreign key definition time
Bruce Momjian's avatar
Bruce Momjian committed
281
* Add deferred trigger queue file (Jan)
Bruce Momjian's avatar
Bruce Momjian committed
282
* Allow oid to act as a foreign key
Bruce Momjian's avatar
Bruce Momjian committed
283
* Implement dirty reads and use them in RI triggers
Bruce Momjian's avatar
Bruce Momjian committed
284
* Make triggers refer to columns by number, not name
Bruce Momjian's avatar
Bruce Momjian committed
285
* Enforce referential integrity for system tables
Bruce Momjian's avatar
Bruce Momjian committed
286
* -INSERT & UPDATE/DELETE in transaction of primary key fails with
Bruce Momjian's avatar
Bruce Momjian committed
287
  deferredTriggerGetPreviousEvent or "change violation"
Bruce Momjian's avatar
Bruce Momjian committed
288
* Allow user to control trigger firing order
Bruce Momjian's avatar
Bruce Momjian committed
289
* Change foreign key constraint for array -> element to mean element
Bruce Momjian's avatar
Bruce Momjian committed
290
  in array
Bruce Momjian's avatar
Bruce Momjian committed
291
* Fix foreign key constraints to not error on intermediate db states (Stephan)
Bruce Momjian's avatar
Bruce Momjian committed
292

Bruce Momjian's avatar
Bruce Momjian committed
293
DEPENDENCY CHECKING
Bruce Momjian's avatar
Bruce Momjian committed
294

Bruce Momjian's avatar
Bruce Momjian committed
295 296
* Add pg_depend table for dependency recording; use sysrelid, oid,
  depend_sysrelid, depend_oid, name
Bruce Momjian's avatar
Bruce Momjian committed
297
* Auto-destroy sequence on DROP of table with SERIAL; perhaps a separate
Bruce Momjian's avatar
Bruce Momjian committed
298
  SERIAL type
Bruce Momjian's avatar
Bruce Momjian committed
299 300
* Have SERIAL generate non-colliding sequence names when we have 
  auto-destruction
Bruce Momjian's avatar
Bruce Momjian committed
301 302
* Prevent column dropping if column is used by foreign key
* Propagate column or table renaming to foreign key constraints
Bruce Momjian's avatar
Bruce Momjian committed
303
* Automatically drop constraints/functions when object is dropped
Bruce Momjian's avatar
Bruce Momjian committed
304 305 306
* Make constraints clearer in dump file
* Make foreign keys easier to identify

Bruce Momjian's avatar
Bruce Momjian committed
307 308 309 310
TRANSACTIONS

* Allow autocommit so always in a transaction block
* Overhaul bufmgr/lockmgr/transaction manager
Bruce Momjian's avatar
Bruce Momjian committed
311
* Allow nested transactions / savepoints [transactions]
Bruce Momjian's avatar
Bruce Momjian committed
312
* -Handle transaction rollover (Tom) [transactions]
Bruce Momjian's avatar
Bruce Momjian committed
313

314 315 316
EXOTIC FEATURES

* Add sql3 recursive unions
Bruce Momjian's avatar
Bruce Momjian committed
317
* Add the concept of dataspaces/tablespaces [tablespaces]
Bruce Momjian's avatar
Bruce Momjian committed
318
* Allow SQL92 schemas [schema]
319
* Allow queries across multiple databases
Bruce Momjian's avatar
Bruce Momjian committed
320
* Add pre-parsing phase that converts non-ANSI features to supported features
Bruce Momjian's avatar
Bruce Momjian committed
321
* Allow plug-in modules to emulate features from other databases
Bruce Momjian's avatar
Bruce Momjian committed
322
* SQL*Net listener that makes PostgreSQL appear as an Oracle database
Bruce Momjian's avatar
Bruce Momjian committed
323
  to clients
324

Bruce Momjian's avatar
Bruce Momjian committed
325
MISCELLANEOUS
326

Bruce Momjian's avatar
Bruce Momjian committed
327
* Increase identifier length (NAMEDATALEN) if small performance hit
Bruce Momjian's avatar
Bruce Momjian committed
328
* Increase maximum number of function parameters if little wasted space
Bruce Momjian's avatar
Bruce Momjian committed
329
* -Populate backend status area and write program to dump status data (Jan)
Bruce Momjian's avatar
Bruce Momjian committed
330
* -Put sort files in their own directory (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
331
* Show location of syntax error in query [yacc]
Bruce Momjian's avatar
Bruce Momjian committed
332
* Change representation of whole-tuple parameters to functions
333
* Add optional CRC checksum to heap and index pages
Bruce Momjian's avatar
Add  
Bruce Momjian committed
334
* Add WAL index reliability improvement to non-btree indexes
Bruce Momjian's avatar
Bruce Momjian committed
335

Bruce Momjian's avatar
Bruce Momjian committed
336 337
PERFORMANCE
-----------
338

Bruce Momjian's avatar
Bruce Momjian committed
339
FSYNC
340

Bruce Momjian's avatar
Bruce Momjian committed
341
* Delay fsync() when other backends are about to commit too [fsync]
Bruce Momjian's avatar
Bruce Momjian committed
342
	o Determine optimal commit_delay value
Bruce Momjian's avatar
Bruce Momjian committed
343
* Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options
Bruce Momjian's avatar
Bruce Momjian committed
344
	o Allow multiple blocks to be written to WAL with one write()
Bruce Momjian's avatar
Bruce Momjian committed
345

346 347
CACHE

Bruce Momjian's avatar
Bruce Momjian committed
348
* Cache most recent query plan(s) (Karel) [prepare]
349
* Shared catalog cache, reduce lseek()'s by caching table size in shared area
Bruce Momjian's avatar
Bruce Momjian committed
350
* Add free-behind capability for large sequential scans (Bruce)
Bruce Momjian's avatar
Add  
Bruce Momjian committed
351
* Allow binding query args over FE/BE protocol
Bruce Momjian's avatar
Bruce Momjian committed
352

Bruce Momjian's avatar
Bruce Momjian committed
353 354 355 356 357
VACUUM

* Improve speed with indexes (perhaps recreate index instead) [vacuum]
* Reduce lock time by moving tuples with read lock, then write
  lock and truncate table [vacuum]
Bruce Momjian's avatar
Bruce Momjian committed
358 359
* -Make ANALYZE a separate command (Tom)
* -Allow ANALYZE to ESTIMATE based on certain random precentage of rows (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
360
* Add LAZY VACUUM (Vadim) [performance]
Bruce Momjian's avatar
Bruce Momjian committed
361 362

MISCELLANEOUS
363

Bruce Momjian's avatar
Bruce Momjian committed
364
* -Allow compression of log and meta data (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
365
* Do async I/O to do better read-ahead of data
Bruce Momjian's avatar
Bruce Momjian committed
366
* Experiment with multi-threaded backend [thread]
Bruce Momjian's avatar
Bruce Momjian committed
367
* Get faster regex() code from Henry Spencer <henry@zoo.utoronto.ca>
368
  when it is available
Bruce Momjian's avatar
Bruce Momjian committed
369
* Use mmap() rather than SYSV shared memory(?) [mmap]
Bruce Momjian's avatar
Bruce Momjian committed
370
* Use mmap() to write WAL files (?) [mmap]
Bruce Momjian's avatar
Bruce Momjian committed
371
* Improve Subplan list handling
Bruce Momjian's avatar
Bruce Momjian committed
372
* Allow Subplans to use efficient joins(hash, merge) with upper variable
Bruce Momjian's avatar
Bruce Momjian committed
373
* Improve dynamic memory allocation by introducing tuple-context memory
Bruce Momjian's avatar
Bruce Momjian committed
374
  allocation (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
375
* -Allow GUC configuration of maximum number of open files (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
376
* -Improve statistics storage in pg_class [performance] (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
377
* Add connection pooling [pool]
Bruce Momjian's avatar
Bruce Momjian committed
378
* Allow persistent backends [persistent]
Bruce Momjian's avatar
Bruce Momjian committed
379 380
* Create a transaction processor to aid in persistent connections and
  connection pooling
Bruce Momjian's avatar
Bruce Momjian committed
381
* Make blind writes go through the file descriptor cache
Bruce Momjian's avatar
Bruce Momjian committed
382
* Allow logging of query durations
Bruce Momjian's avatar
Bruce Momjian committed
383
* Add hash for evaluating GROUP BY aggregates
Bruce Momjian's avatar
Bruce Momjian committed
384
* -Read pg_hba.conf only on postmaster startup or SIGHUP (Bruce)
385 386
* Have after-change WAL write()'s write only modified data to kernel
* Reduce number of after-change WAL writes; they exist only to gaurd against
Bruce Momjian's avatar
Bruce Momjian committed
387
  partial page writes
388
* Turn off after-change writes if fsync is disabled (?)
Bruce Momjian's avatar
Bruce Momjian committed
389
* -Improve spinlock code [performance] (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
390 391 392
* Do listen() in postmaster and accept() in pre-forked backend
* Have pre-forked backend pre-connect to last requested database or pass
  file descriptor to backend pre-forked for matching database
Bruce Momjian's avatar
Bruce Momjian committed
393 394
* Nested FULL OUTER JOINs don't work (Tom)
* Allow merge and hash joins on expressions not just simple variables (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
395 396
* Add new pg_proc cachable settings to specify whether function can be
  evaluated only once or once per query
Bruce Momjian's avatar
Added  
Bruce Momjian committed
397
* Change FIXED_CHAR_SEL to 0.20 from 0.04 to give better selectivity (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
398

399 400
SOURCE CODE
-----------
Bruce Momjian's avatar
Bruce Momjian committed
401
* Add use of 'const' for variables in source tree
Bruce Momjian's avatar
Bruce Momjian committed
402
* -Convert remaining fprintf(stderr,...)/perror() to elog() (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
403
* Fix problems with libpq non-blocking/async code [async]
Bruce Momjian's avatar
Bruce Momjian committed
404
* -Merge global and template BKI files (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
405
* -Fix username/password length limits in all areas, e.g. pg_passwd
Bruce Momjian's avatar
Bruce Momjian committed
406
* -Remove compile-time upper limit on number of backends (MAXBACKENDS) (Tom)
Bruce Momjian's avatar
Bruce Momjian committed
407
* Make sure all block numbers are unsigned to increase maximum table size
Bruce Momjian's avatar
Bruce Momjian committed
408
* Use BlockNumber rather than int where appropriate
Bruce Momjian's avatar
Bruce Momjian committed
409
* Merge LockMethodCtl and LockMethodTable into one shared structure (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
410
* HOLDER/HOLDERTAB rename to PROCLOCK/PROCLOCKTAG (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
411
* Remove LockMethodTable.prio field, not used (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
412
* Add version file format stamp to heap and other table types
Bruce Momjian's avatar
Bruce Momjian committed
413
* -Make elog(LOG) in WAL its own output type, distinct from DEBUG (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
414
* Rename some /contrib modules from pg* to pg_*
Bruce Momjian's avatar
Bruce Momjian committed
415
* Move some things from /contrib into main tree
Bruce Momjian's avatar
Bruce Momjian committed
416
* Remove warnings created by -Wcast-align
Bruce Momjian's avatar
Bruce Momjian committed
417
* Move platform-specific ps status display info from ps_status.c to ports
Bruce Momjian's avatar
Bruce Momjian committed
418
* Allow ps status display to work on Solaris/SVr4-based systems
Bruce Momjian's avatar
Bruce Momjian committed
419
* -Decide on spelling of indexes/indices (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
420
* -Add mention of VACUUM, log rotation to Administrator's Guide (Tom, Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
421
* Make one version of simple_prompt() in code (Bruce, Tom)
Bruce Momjian's avatar
Bruce Momjian committed
422
* Compile in syslog functionaility by default (?)
Bruce Momjian's avatar
Bruce Momjian committed
423
* Modify regression tests to prevent failures do to minor numeric rounding
Bruce Momjian's avatar
Bruce Momjian committed
424
* Remove USING clause from pg_get_indexdef() if index is btree (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
425
* Use our own getopt() for FreeBSD/OpenBSD to allow --xxx flags (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
426
* Add OpenBSD's getpeereid() call for local socket authentication (Bruce)
Bruce Momjian's avatar
Typo.  
Bruce Momjian committed
427
* Improve access-permissions check on data directory in Cygwin (Tom)
Bruce Momjian's avatar
Added  
Bruce Momjian committed
428
* Report failure to find readline or zlib at end of configure run
Bruce Momjian's avatar
Added  
Bruce Momjian committed
429
* Add --port flag to regression tests
430

431 432 433 434 435
---------------------------------------------------------------------------


Developers who have claimed items are:
--------------------------------------
Bruce Momjian's avatar
Bruce Momjian committed
436 437 438 439 440 441 442
* Billy is Billy G. Allie <Bill.Allie@mug.org>
* Bruce is Bruce Momjian<pgman@candle.pha.pa.us>
* D'Arcy is D'Arcy J.M. Cain <darcy@druid.net>
* Edmund is Edmund Mergl <E.Mergl@bawue.de>
* Hiroshi is Hiroshi Inoue <Inoue@tpf.co.jp>
* Karel is Karel Zak <zakkr@zf.jcu.cz>
* Jan is Jan Wieck <wieck@sapserv.debis.de>
Bruce Momjian's avatar
Bruce Momjian committed
443
* Liam is Liam Stewart <liams@redhat.com>
Bruce Momjian's avatar
Bruce Momjian committed
444 445
* Marc is Marc Fournier <scrappy@hub.org>
* Mark is Mark Hollomon <mhh@mindspring.com>
Bruce Momjian's avatar
Bruce Momjian committed
446
* Marko is Marko Kreen <marko@l-t.ee>
Bruce Momjian's avatar
Bruce Momjian committed
447 448 449 450 451 452 453 454 455 456 457
* Michael is Michael Meskes <meskes@postgresql.org>
* Oleg is Oleg Bartunov <oleg@sai.msu.su>
* Peter M is Peter T Mount <peter@retep.org.uk>
* Peter E is Peter Eisentraut<peter_e@gmx.net>
* Philip is Philip Warner <pjw@rhyme.com.au>
* Ross is Ross J. Reedstrom <reedstrm@wallace.ece.rice.edu>
* Ryan is Ryan Bradetich <rbrad@hpb50023.boi.hp.com>
* Stephan is Stephan Szabo <sszabo@megazone23.bigpanda.com>
* Tatsuo is Tatsuo Ishii <t-ishii@sra.co.jp>
* Thomas is Thomas Lockhart <lockhart@alumni.caltech.edu>
* Tom is Tom Lane <tgl@sss.pgh.pa.us>
Bruce Momjian's avatar
Bruce Momjian committed
458
* TomH is Tom I Helbekkmo <tih@Hamartun.Priv.no>
Bruce Momjian's avatar
Bruce Momjian committed
459
* Vadim is Vadim B. Mikheev <vadim4o@email.com>