TODO 19.1 KB
Newer Older
Bruce Momjian's avatar
Bruce Momjian committed
1
TODO list for PostgreSQL
2
========================
Bruce Momjian's avatar
Bruce Momjian committed
3
Last updated:		Fri Feb 22 00:21:53 EST 2002
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

10
A dash (-) marks changes that will appear in the upcoming 7.3 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

15
URGENT
16
------
17

Bruce Momjian's avatar
Bruce Momjian committed
18
* Add replication of distributed databases [replication]
Bruce Momjian's avatar
Bruce Momjian committed
19
	o automatic failover
Bruce Momjian's avatar
Bruce Momjian committed
20 21 22 23 24 25
	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
26
	o http://gborg.postgresql.org/project/pgreplication/projdisplay.php
Bruce Momjian's avatar
Bruce Momjian committed
27
* Point-in-time data recovery using backup and write-ahead log
Bruce Momjian's avatar
Bruce Momjian committed
28

29

Bruce Momjian's avatar
Bruce Momjian committed
30
REPORTING
31
---------
Bruce Momjian's avatar
Bruce Momjian committed
32 33 34 35

* Allow elog() to return error codes, module name, file name, line
  number, not just messages (Peter E)
* Add error codes (Peter E)
36
* Change DEBUG startup tag to NOTICE (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
37 38
* Show location of syntax error in query [yacc]

39

Bruce Momjian's avatar
Bruce Momjian committed
40
PERMISSIONS
41
-----------
42

Bruce Momjian's avatar
Bruce Momjian committed
43
* Improve control over user privileges, including table creation and
Bruce Momjian's avatar
Bruce Momjian committed
44
  lock use [privileges] (Karel, others)
Bruce Momjian's avatar
Bruce Momjian committed
45 46 47 48
* Allow usernames to be specified directly in pg_hba.conf (Bruce)
* Add PGPASSWORDFILE environment variable or ~/.pgpass to store
  user/host/password combinations
* Remove PGPASSWORD because is insecure on some OS's
Bruce Momjian's avatar
Bruce Momjian committed
49 50
* Make single-user local access permissions the default by limiting
  permissions on the socket file (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
51
* Use thread-safe crypt() in libpq, if available
52
* -Allow permissions for functions (Peter E)
53

Bruce Momjian's avatar
Bruce Momjian committed
54
ADMIN
55
-----
Bruce Momjian's avatar
Bruce Momjian committed
56 57

* Incremental backups
Bruce Momjian's avatar
Bruce Momjian committed
58
* Make it easier to create a database owned by someone who can't createdb,
Bruce Momjian's avatar
Bruce Momjian committed
59
  perhaps CREATE DATABASE dbname WITH OWNER = "user" (Gavin)
Bruce Momjian's avatar
Add:  
Bruce Momjian committed
60
* Make equals sign optional in CREATE DATABASE WITH param = 'val'
Bruce Momjian's avatar
Bruce Momjian committed
61
* Remove unreferenced table files and temp tables during database vacuum
Bruce Momjian's avatar
Bruce Momjian committed
62 63
  or postmaster startup (Bruce)
* Add table name mapping for numeric file names (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
64 65
* Remove behavior of postmaster -o after making postmaster/postgres
  flags unique
Bruce Momjian's avatar
Bruce Momjian committed
66
* Allow logging of query durations
Bruce Momjian's avatar
Bruce Momjian committed
67 68
* Prevent SIGHUP and 'pg_ctl reload' from changing command line
  specified parameters to postgresql.conf defaults
Bruce Momjian's avatar
Bruce Momjian committed
69

70

Bruce Momjian's avatar
Bruce Momjian committed
71
DATA TYPES
72
----------
73

Bruce Momjian's avatar
Bruce Momjian committed
74
* Add domain capability [domain]
Bruce Momjian's avatar
Bruce Momjian committed
75
* Add IPv6 capability to INET/CIDR types
76
* Remove Money type, add money formatting for decimal type
Bruce Momjian's avatar
Bruce Momjian committed
77
* SELECT cash_out(2) crashes because of opaque
78
* Declare typein/out functions in pg_proc with a special "C string" data type
Bruce Momjian's avatar
Bruce Momjian committed
79
* Functions returning sets do not totally work
Bruce Momjian's avatar
Added  
Bruce Momjian committed
80
* Change factorial to return a numeric
Bruce Momjian's avatar
Bruce Momjian committed
81 82 83 84 85 86 87 88
* Add function to return compressed length of TOAST data values (Tom)

* CONVERSION
	o Store binary-compatible type information in the system
	o Allow better handling of numeric constants, type conversion 
	  [typeconv]
	o SELECT col FROM tab WHERE numeric_col = 10.1 fails, requires quotes

89
* ARRAYS
Bruce Momjian's avatar
Bruce Momjian committed
90 91
	o Allow nulls in arrays
	o Allow arrays to be ORDER'ed
Bruce Momjian's avatar
Bruce Momjian committed
92
	o Ensure we have array-eq operators for every built-in array type
Bruce Momjian's avatar
Bruce Momjian committed
93 94
	o Support construction of array result values in expressions

Bruce Momjian's avatar
Bruce Momjian committed
95
* BINARY DATA
Bruce Momjian's avatar
Bruce Momjian committed
96
	o Improve vacuum of large objects, like /contrib/vacuumlo
Bruce Momjian's avatar
Bruce Momjian committed
97 98 99 100
	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
101

102

Bruce Momjian's avatar
Bruce Momjian committed
103
MULTI-LANGUAGE SUPPORT
104
----------------------
Bruce Momjian's avatar
Bruce Momjian committed
105

106
* Add NCHAR (as distinguished from ordinary varchar),
Bruce Momjian's avatar
Bruce Momjian committed
107
* Allow LOCALE on a per-column basis, default to ASCII
Bruce Momjian's avatar
Bruce Momjian committed
108
* Support multiple simultaneous character sets, per SQL92
Bruce Momjian's avatar
Bruce Momjian committed
109
* Allow setting database character set without multibyte enabled
Bruce Momjian's avatar
Bruce Momjian committed
110
* Improve Unicode combined character handling
Bruce Momjian's avatar
Bruce Momjian committed
111
* Optimize locale to have minimal performance impact when not used (Peter E)
Bruce Momjian's avatar
Bruce Momjian committed
112
* Add octet_length_server() and octet_length_client() (Thomas, Tatsuo)
Bruce Momjian's avatar
Bruce Momjian committed
113
* Make octet_length_client the same as octet_length() (?)
114

115

Bruce Momjian's avatar
Bruce Momjian committed
116
VIEWS / RULES
117
-------------
Bruce Momjian's avatar
Bruce Momjian committed
118

Bruce Momjian's avatar
Bruce Momjian committed
119
* Automatically create rules on views so they are updateable, per SQL92 [view]
Bruce Momjian's avatar
Bruce Momjian committed
120
* Add the functionality for WITH CHECK OPTION clause of CREATE VIEW
Bruce Momjian's avatar
Bruce Momjian committed
121
* Allow NOTIFY in rules involving conditionals
Bruce Momjian's avatar
Bruce Momjian committed
122
* Allow temporary views
Bruce Momjian's avatar
Bruce Momjian committed
123
* Move psql backslash information into views
Bruce Momjian's avatar
Bruce Momjian committed
124 125
* Allow RULE recompilation
* Remove brackets as multi-statement rule grouping, must use parens
Bruce Momjian's avatar
Bruce Momjian committed
126

127

128
INDEXES
129
-------
Bruce Momjian's avatar
Bruce Momjian committed
130 131

* Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
132
  fails index can't store constant parameters
Bruce Momjian's avatar
Bruce Momjian committed
133
* Order duplicate index entries by tid for faster heap lookups
Bruce Momjian's avatar
Bruce Momjian committed
134 135
* Allow inherited tables to inherit index, UNIQUE constraint, and primary
  key, foreign key  [inheritance]
Bruce Momjian's avatar
Bruce Momjian committed
136 137 138
* 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
139
* Allow UPDATE/DELETE on inherited table
Bruce Momjian's avatar
Bruce Momjian committed
140
* Have UPDATE/DELETE clean out indexes
Bruce Momjian's avatar
Bruce Momjian committed
141
* Add UNIQUE capability to non-btree indexes
Bruce Momjian's avatar
Bruce Momjian committed
142 143
* Add btree index support for reltime, tinterval, regproc
* Add rtree index support for line, lseg, path, point
Bruce Momjian's avatar
Bruce Momjian committed
144
* Certain indexes will not shrink, e.g. oid indexes with many inserts
Bruce Momjian's avatar
Bruce Momjian committed
145
* Use indexes for min() and max() or convert to SELECT col FROM tab ORDER
Bruce Momjian's avatar
Bruce Momjian committed
146
  BY col DESC LIMIT 1 if appropriate index exists and WHERE clause acceptible
Bruce Momjian's avatar
Bruce Momjian committed
147
* Allow LIKE indexing optimization for non-ASCII locales
Bruce Momjian's avatar
Bruce Momjian committed
148 149 150 151 152
* 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
* 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
153
* Add bitmap indexes [performance]
Bruce Momjian's avatar
Bruce Momjian committed
154
* Improve handling of index scans for NULL
Bruce Momjian's avatar
Bruce Momjian committed
155 156
* Allow SELECT * FROM tab WHERE int2col = 4 to use int2col index, int8,
  float4, numeric/decimal too [optimizer]
Bruce Momjian's avatar
Bruce Momjian committed
157
* Improve concurrency in GIST
Bruce Momjian's avatar
Bruce Momjian committed
158
* Add FILLFACTOR to index creation
Bruce Momjian's avatar
Add:  
Bruce Momjian committed
159 160
* Improve concurrency of hash indexes
* Test hash index performance and recommend or discourage usage
Bruce Momjian's avatar
Bruce Momjian committed
161

162

163
COMMANDS
164
--------
Bruce Momjian's avatar
Bruce Momjian committed
165

166
* Add SIMILAR TO to allow character classes, 'pg_[a-c]%'
Bruce Momjian's avatar
Bruce Momjian committed
167
* Add BETWEEN ASYMMETRIC/SYMMETRIC
Bruce Momjian's avatar
Bruce Momjian committed
168
* Remove LIMIT #,# and force use LIMIT and OFFSET clauses in 7.3 (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
169
* Allow LIMIT/OFFSET to use expressions
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
* Prevent create/drop scripts from allowing extra args (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
175 176
* Allow command blocks to ignore certain types of errors

Bruce Momjian's avatar
Bruce Momjian committed
177
* ALTER
Bruce Momjian's avatar
Bruce Momjian committed
178 179
	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
180
	  [inheritance]
Bruce Momjian's avatar
Bruce Momjian committed
181
	o Add ALTER TABLE DROP COLUMN feature [drop] (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
182 183 184 185
	o Add ALTER FUNCTION
	o Add ALTER TABLE DROP non-CHECK CONSTRAINT
	o ALTER TABLE ADD PRIMARY KEY (Christopher Kings-Lynne)
	o ALTER TABLE ADD UNIQUE (Christopher Kings-Lynne)
Bruce Momjian's avatar
Bruce Momjian committed
186
	o ALTER TABLE ADD COLUMN column SERIAL doesn't create sequence
Bruce Momjian's avatar
Bruce Momjian committed
187
	o ALTER TABLE ADD COLUMN column SET DEFAULT should fill existing
Bruce Momjian's avatar
Bruce Momjian committed
188
	  rows with DEFAULT value
Bruce Momjian's avatar
Added  
Bruce Momjian committed
189
	o Have ALTER TABLE OWNER change all dependant objects like indexes
Bruce Momjian's avatar
Bruce Momjian committed
190

Bruce Momjian's avatar
Bruce Momjian committed
191
* CLUSTER
Bruce Momjian's avatar
Bruce Momjian committed
192
	o cluster all tables at once
Bruce Momjian's avatar
Bruce Momjian committed
193
	o prevent loss of indexes, permissions, inheritance (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
194 195
	o Automatically maintain clustering on a table

Bruce Momjian's avatar
Bruce Momjian committed
196
* COPY
Bruce Momjian's avatar
Bruce Momjian committed
197 198
	o Allow specification of column names
	o Allow dump/load of CSV format
Bruce Momjian's avatar
Add  
Bruce Momjian committed
199
	o Change syntax to WITH DELIMITER, (keep old syntax around?)
Bruce Momjian's avatar
Add:  
Bruce Momjian committed
200
	o Allow COPY to report error lines and continue;  optionally
201
	  allow error codes to be specified; requires savepoints or can
Bruce Momjian's avatar
Bruce Momjian committed
202
	  not be run in a multi-statement transaction
Bruce Momjian's avatar
Add:  
Bruce Momjian committed
203
	o Generate failure on short COPY lines rather than pad NULLs
Bruce Momjian's avatar
Bruce Momjian committed
204

Bruce Momjian's avatar
Bruce Momjian committed
205
* CURSOR
Bruce Momjian's avatar
Bruce Momjian committed
206
	o Allow BINARY option to SELECT, just like DECLARE
Bruce Momjian's avatar
Bruce Momjian committed
207 208
	o MOVE 0 should not move to end of cursor
	o Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
Bruce Momjian's avatar
Bruce Momjian committed
209
	o Allow UPDATE/DELETE WHERE CURRENT OF cursor using per-cursor tid
210
	  stored in the backend
Bruce Momjian's avatar
Bruce Momjian committed
211
	o Prevent DROP of table being referenced by our own open cursor
Bruce Momjian's avatar
Add:  
Bruce Momjian committed
212
	o Allow cursors outside transactions [cursor]
Bruce Momjian's avatar
Bruce Momjian committed
213

Bruce Momjian's avatar
Bruce Momjian committed
214
* INSERT
Bruce Momjian's avatar
Bruce Momjian committed
215 216 217 218
	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
219
	o Allow INSERT/UPDATE ... RETURNING new.col or old.col; handle
Bruce Momjian's avatar
Bruce Momjian committed
220
	  RULE cases (Philip)
Bruce Momjian's avatar
Bruce Momjian committed
221

Bruce Momjian's avatar
Bruce Momjian committed
222
* SHOW/SET
Bruce Momjian's avatar
Bruce Momjian committed
223 224 225 226 227
	o Add SHOW command to display locks
	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
228
	  ANALYZE, and CLUSTER
Bruce Momjian's avatar
Bruce Momjian committed
229
	o Add SHOW command to see locale
Bruce Momjian's avatar
Bruce Momjian committed
230

Bruce Momjian's avatar
Bruce Momjian committed
231
* SERVER-SIDE LANGUAGES
Bruce Momjian's avatar
Bruce Momjian committed
232
	o Allow PL/PgSQL's RAISE function to take expressions
Bruce Momjian's avatar
Bruce Momjian committed
233
	o Fix PL/PgSQL to handle quoted mixed-case identifiers
Bruce Momjian's avatar
Bruce Momjian committed
234 235 236
	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
237
	o Allow Java server-side programming (?) [java]
Bruce Momjian's avatar
Bruce Momjian committed
238

239

240
CLIENTS
241
-------
242

Bruce Momjian's avatar
Bruce Momjian committed
243
* Have pg_dump use LEFT OUTER JOIN in multi-table SELECTs
Bruce Momjian's avatar
Bruce Momjian committed
244
  or multiple SELECTS to avoid bad system catalog entries
Bruce Momjian's avatar
Bruce Momjian committed
245
* Have pg_dump -C dump database location and encoding information
Bruce Momjian's avatar
Bruce Momjian committed
246 247 248
* 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
249
* Add config file check for $ODBCINI, $HOME/.odbc.ini, installpath/etc/odbc.ini
Bruce Momjian's avatar
Bruce Momjian committed
250
* Have pg_dump use ADD PRIMARY KEY after COPY, for performance (Neil Conway)
Bruce Momjian's avatar
Bruce Momjian committed
251

Bruce Momjian's avatar
Bruce Momjian committed
252
* JDBC
Bruce Momjian's avatar
Bruce Momjian committed
253 254 255 256
	o Comprehensive test suite. This may be available already.
	o Updateable resultSet (must be done in backend code)
	o JDBC-standard BLOB support
	o Error Codes (pending backend implementation)
Bruce Momjian's avatar
Added  
Bruce Momjian committed
257
	o Support both 'make' and 'ant'
Barry Lind's avatar
Barry Lind committed
258 259 260
	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())
261
        o Add support for CallableStatements
Bruce Momjian's avatar
Bruce Momjian committed
262

Bruce Momjian's avatar
Bruce Momjian committed
263
* ECPG
Bruce Momjian's avatar
Bruce Momjian committed
264 265 266
	o Implement set descriptor, using descriptor
	o Make casts work in variable initializations
	o Implement SQLDA
Bruce Momjian's avatar
Bruce Momjian committed
267
	o Solve cardinality > 1 for input descriptors / variables
Bruce Momjian's avatar
Bruce Momjian committed
268 269 270 271 272 273 274
	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
	o Fix nested C comments
	o Add SQLSTATE
Bruce Momjian's avatar
Bruce Momjian committed
275
	o fix handling of DB attributes that are arrays
Bruce Momjian's avatar
Bruce Momjian committed
276

Bruce Momjian's avatar
Bruce Momjian committed
277 278 279 280 281
* ODBC
	o ODBC 3.0 support
	o Unicode(UCS-2) support
	o Updatable cursors support

282

Bruce Momjian's avatar
Bruce Momjian committed
283
REFERENTIAL INTEGRITY
284
---------------------
Bruce Momjian's avatar
Bruce Momjian committed
285

Bruce Momjian's avatar
Bruce Momjian committed
286
* Add MATCH PARTIAL referential integrity [foreign]
Bruce Momjian's avatar
Bruce Momjian committed
287
* Add deferred trigger queue file (Jan)
Bruce Momjian's avatar
Bruce Momjian committed
288
* Allow oid to act as a foreign key
Bruce Momjian's avatar
Bruce Momjian committed
289
* Implement dirty reads and use them in RI triggers
Bruce Momjian's avatar
Bruce Momjian committed
290
* Make triggers refer to columns by number, not name
Bruce Momjian's avatar
Bruce Momjian committed
291
* Enforce referential integrity for system tables
Bruce Momjian's avatar
Bruce Momjian committed
292
* Allow user to control trigger firing order
Bruce Momjian's avatar
Bruce Momjian committed
293
* Change foreign key constraint for array -> element to mean element
Bruce Momjian's avatar
Bruce Momjian committed
294
  in array
Bruce Momjian's avatar
Bruce Momjian committed
295
* Fix foreign key constraints to not error on intermediate db states (Stephan)
Bruce Momjian's avatar
Bruce Momjian committed
296

297

Bruce Momjian's avatar
Bruce Momjian committed
298
DEPENDENCY CHECKING
299
-------------------
Bruce Momjian's avatar
Bruce Momjian committed
300

Bruce Momjian's avatar
Bruce Momjian committed
301 302
* Add pg_depend table for dependency recording; use sysrelid, oid,
  depend_sysrelid, depend_oid, name
Bruce Momjian's avatar
Bruce Momjian committed
303
* Auto-destroy sequence on DROP of table with SERIAL; perhaps a separate
Bruce Momjian's avatar
Bruce Momjian committed
304
  SERIAL type
Bruce Momjian's avatar
Bruce Momjian committed
305 306
* Have SERIAL generate non-colliding sequence names when we have 
  auto-destruction
Bruce Momjian's avatar
Bruce Momjian committed
307 308
* 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
309
* Automatically drop constraints/functions when object is dropped
Bruce Momjian's avatar
Bruce Momjian committed
310 311
* Make constraints clearer in dump file
* Make foreign keys easier to identify
Bruce Momjian's avatar
Bruce Momjian committed
312
* Flush cached query plans when their underlying catalog data changes
313

Bruce Momjian's avatar
Bruce Momjian committed
314
TRANSACTIONS
315
------------
Bruce Momjian's avatar
Bruce Momjian committed
316 317 318

* Allow autocommit so always in a transaction block
* Overhaul bufmgr/lockmgr/transaction manager
Bruce Momjian's avatar
Bruce Momjian committed
319
* Allow savepoints / nested transactions [transactions]
Bruce Momjian's avatar
Bruce Momjian committed
320

321

322
EXOTIC FEATURES
323
---------------
324 325

* Add sql3 recursive unions
Bruce Momjian's avatar
Bruce Momjian committed
326
* Add the concept of dataspaces/tablespaces [tablespaces]
Bruce Momjian's avatar
Bruce Momjian committed
327
* Allow SQL92 schemas [schema]
328
* Allow queries across multiple databases [crossdb]
Bruce Momjian's avatar
Bruce Momjian committed
329
* Add pre-parsing phase that converts non-ANSI features to supported features
Bruce Momjian's avatar
Bruce Momjian committed
330
* Allow plug-in modules to emulate features from other databases
Bruce Momjian's avatar
Bruce Momjian committed
331
* SQL*Net listener that makes PostgreSQL appear as an Oracle database
Bruce Momjian's avatar
Bruce Momjian committed
332
  to clients
333

Bruce Momjian's avatar
Bruce Momjian committed
334

Bruce Momjian's avatar
Bruce Momjian committed
335
PERFORMANCE
336 337
===========

338

Bruce Momjian's avatar
Bruce Momjian committed
339
FSYNC
340
-----
341

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

347

348 349
CACHE
-----
Bruce Momjian's avatar
Bruce Momjian committed
350
* Cache most recent query plan(s) (Karel) [prepare]
351
* Shared catalog cache, reduce lseek()'s by caching table size in shared area
Bruce Momjian's avatar
Bruce Momjian committed
352
* Add free-behind capability for large sequential scans (Bruce)
Bruce Momjian's avatar
Add  
Bruce Momjian committed
353
* Allow binding query args over FE/BE protocol
Bruce Momjian's avatar
Bruce Momjian committed
354
* Consider use of open/fcntl(O_DIRECT) to minimize OS caching
Bruce Momjian's avatar
Bruce Momjian committed
355
* Make blind writes go through the file descriptor cache
Bruce Momjian's avatar
Bruce Momjian committed
356

357

Bruce Momjian's avatar
Bruce Momjian committed
358
VACUUM
359
------
Bruce Momjian's avatar
Bruce Momjian committed
360 361 362 363

* 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
364
* Add LAZY VACUUM (Vadim) [performance]
Bruce Momjian's avatar
Bruce Momjian committed
365
* Provide automatic scheduling of background vacuum (Tom)
366

367
LOCKING
368
-------
369 370 371

* Make locking of shared data structures more fine-grained
* Add code to detect an SMP machine and handle spinlocks accordingly
Bruce Momjian's avatar
Bruce Momjian committed
372 373
  from distributted.net, http://www1.distributed.net/source, 
  in client/common/cpucheck.cpp
374 375
* Research use of sched_yield() for spinlock acquisition failure

376

377
STARTUP TIME
378
------------
379

Bruce Momjian's avatar
Bruce Momjian committed
380
* Experiment with multi-threaded backend [thread]
Bruce Momjian's avatar
Bruce Momjian committed
381
* Add connection pooling [pool]
Bruce Momjian's avatar
Bruce Momjian committed
382
* Allow persistent backends [persistent]
Bruce Momjian's avatar
Bruce Momjian committed
383 384
* Create a transaction processor to aid in persistent connections and
  connection pooling
385 386 387
* 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
388
* -Cache system catalog information in per-database files (Tom)
389

390 391

WRITE-AHEAD LOG
392
---------------
393

394 395
* 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
396
  partial page writes
397
* Turn off after-change writes if fsync is disabled (?)
Bruce Momjian's avatar
Bruce Momjian committed
398
* Add WAL index reliability improvement to non-btree indexes
399
* -Reorder postgresql.conf WAL items in order of importance (Bruce)
Bruce Momjian's avatar
Add:  
Bruce Momjian committed
400 401 402 403
* Remove wal_files postgresql.conf option because WAL files are now recycled
* Find proper defaults for postgresql.conf WAL entries
* Add checkpoint_min_warning postgresql.conf option to warn about checkpoints
  that are too frequent
404

405 406 407

OPTIMIZER / EXECUTOR
--------------------
408 409 410 411 412 413

* Improve Subplan list handling
* Allow Subplans to use efficient joins(hash, merge) with upper variable
* Improve dynamic memory allocation by introducing tuple-context memory
  allocation (Tom)
* Add hash for evaluating GROUP BY aggregates
Bruce Momjian's avatar
Bruce Momjian committed
414 415
* 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
416 417
* 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
418
* Change FIXED_CHAR_SEL to 0.20 from 0.04 to give better selectivity (Bruce)
Bruce Momjian's avatar
Add  
Bruce Momjian committed
419
* Make IN/NOT IN have similar performance to EXISTS/NOT EXISTS [exists]
Bruce Momjian's avatar
Bruce Momjian committed
420
* Missing optimizer selectivities for date, r-tree, etc. [optimizer]
Bruce Momjian's avatar
Add:  
Bruce Momjian committed
421
* Allow ORDER BY ... LIMIT to select top values without sort or index
422
  using a sequential scan for highest/lowest values
Bruce Momjian's avatar
Bruce Momjian committed
423
* Inline simple SQL functions to avoid overhead (Neil Conway)
424

425

426
MISCELLANEOUS
427
-------------
428 429 430 431 432

* Do async I/O for faster random read-ahead of data
* Get faster regex() code from Henry Spencer <henry@zoo.utoronto.ca>
  when it is available
* Use mmap() rather than SYSV shared memory or to write WAL files (?) [mmap]
Bruce Momjian's avatar
Bruce Momjian committed
433
* Improve caching of attribute offsets when NULLs exist in the row
Bruce Momjian's avatar
Bruce Momjian committed
434

435
SOURCE CODE
436 437
===========

Bruce Momjian's avatar
Bruce Momjian committed
438
* Add use of 'const' for variables in source tree
Bruce Momjian's avatar
Bruce Momjian committed
439
* Fix problems with libpq non-blocking/async code [async]
Bruce Momjian's avatar
Bruce Momjian committed
440
* Make sure all block numbers are unsigned to increase maximum table size
Bruce Momjian's avatar
Bruce Momjian committed
441
* Use BlockNumber rather than int where appropriate
Bruce Momjian's avatar
Bruce Momjian committed
442
* Merge LockMethodCtl and LockMethodTable into one shared structure (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
443
* HOLDER/HOLDERTAB rename to PROCLOCK/PROCLOCKTAG (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
444
* Remove LockMethodTable.prio field, not used (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
445
* Add version file format stamp to heap and other table types
Bruce Momjian's avatar
Bruce Momjian committed
446
* Rename some /contrib modules from pg* to pg_*
Bruce Momjian's avatar
Bruce Momjian committed
447
* Move some things from /contrib into main tree
Bruce Momjian's avatar
Bruce Momjian committed
448
* Remove warnings created by -Wcast-align
Bruce Momjian's avatar
Bruce Momjian committed
449
* Move platform-specific ps status display info from ps_status.c to ports
Bruce Momjian's avatar
Bruce Momjian committed
450
* Allow ps status display to work on Solaris/SVr4-based systems
Bruce Momjian's avatar
Bruce Momjian committed
451
* Make one version of simple_prompt() in code (Bruce, Tom)
Bruce Momjian's avatar
Bruce Momjian committed
452
* Compile in syslog functionaility by default (?)
Bruce Momjian's avatar
Bruce Momjian committed
453
* Modify regression tests to prevent failures do to minor numeric rounding
Bruce Momjian's avatar
Bruce Momjian committed
454
* Remove USING clause from pg_get_indexdef() if index is btree (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
455
* Use our own getopt() for FreeBSD/OpenBSD to allow --xxx flags (Bruce)
Bruce Momjian's avatar
Bruce Momjian committed
456
* Add OpenBSD's getpeereid() call for local socket authentication (Bruce)
Bruce Momjian's avatar
Typo.  
Bruce Momjian committed
457
* Improve access-permissions check on data directory in Cygwin (Tom)
Bruce Momjian's avatar
Added  
Bruce Momjian committed
458
* Report failure to find readline or zlib at end of configure run
Bruce Momjian's avatar
Added  
Bruce Momjian committed
459
* Add --port flag to regression tests
Bruce Momjian's avatar
Bruce Momjian committed
460 461
* Increase identifier length (NAMEDATALEN) if small performance hit,
  perhaps to standard length of 128;  change struct pgNotify to use pid 
Bruce Momjian's avatar
Bruce Momjian committed
462
  first, breaks notify API;  [namedatalen]
Bruce Momjian's avatar
Bruce Momjian committed
463 464 465 466
* Increase maximum number of function parameters if little wasted space
* Add documentation for perl, including mention of DBI/DBD perl location
* Add optional CRC checksum to heap and index pages
* Change representation of whole-tuple parameters to functions
Bruce Momjian's avatar
Bruce Momjian committed
467
* Evaluate AIX cs() spinlock macro for performance optimizations (Tatsuo)
Bruce Momjian's avatar
Add:  
Bruce Momjian committed
468
* Clarify use of 'application' and 'command' tags in SGML docs
Bruce Momjian's avatar
Bruce Momjian committed
469
* Better document ability to build only certain interfaces (Marc)
470
* Remove or relicense modules that are not under the BSD license, if possible
Bruce Momjian's avatar
Add:  
Bruce Momjian committed
471

472

473 474 475 476 477
---------------------------------------------------------------------------


Developers who have claimed items are:
--------------------------------------
Bruce Momjian's avatar
Bruce Momjian committed
478 479 480 481 482 483 484
* 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
485
* Liam is Liam Stewart <liams@redhat.com>
Bruce Momjian's avatar
Bruce Momjian committed
486 487
* Marc is Marc Fournier <scrappy@hub.org>
* Mark is Mark Hollomon <mhh@mindspring.com>
Bruce Momjian's avatar
Bruce Momjian committed
488
* Marko is Marko Kreen <marko@l-t.ee>
Bruce Momjian's avatar
Bruce Momjian committed
489 490 491 492 493 494 495 496 497
* 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>
498
* Thomas is Thomas Lockhart <lockhart@fourpalms.org>
Bruce Momjian's avatar
Bruce Momjian committed
499
* Tom is Tom Lane <tgl@sss.pgh.pa.us>
Bruce Momjian's avatar
Bruce Momjian committed
500
* TomH is Tom I Helbekkmo <tih@Hamartun.Priv.no>
Bruce Momjian's avatar
Bruce Momjian committed
501
* Vadim is Vadim B. Mikheev <vadim4o@email.com>