8
8
< body bgcolor ="#FFFFFF " text ="#000000 " link ="#FF0000 " vlink ="#A00000 " alink ="#0000FF ">
9
9
< h1 > < a name ="section_1 "> PostgreSQL TODO List</ a > </ h1 >
10
10
< p > Current maintainer: Bruce Momjian (< a href ="mailto:bruce@momjian.us "> bruce@momjian.us</ a > )< br />
11
- Last updated: Thu Apr 17 16:56:51 EDT 2008
11
+ Last updated: Sat Apr 19 08:15:19 EDT 2008
12
12
</ p >
13
13
< p > The most recent version of this document can be viewed at< br />
14
14
< a href ="http://www.postgresql.org/docs/faqs.TODO.html "> http://www.postgresql.org/docs/faqs.TODO.html</ a > .
15
15
</ p >
16
16
< p > < strong > A hyphen, "-", marks changes that will appear in the upcoming 8.3 release.</ strong > < br />
17
17
< strong > A percent sign, "%", marks items that are easier to implement.</ strong >
18
18
</ p >
19
- < p > Bracketed items, "[< a href ="http://momjian.postgresql.org/cgi-bin/pgtodo? "> </ a > ]", have more detail.
20
- </ p >
21
19
< p > This list contains all known PostgreSQL bugs and feature requests. If< br />
22
20
you would like to work on an item, please read the Developer's FAQ< br />
23
21
first. There is also a developer's wiki at< br />
@@ -149,7 +147,6 @@ <h1><a name="section_2">Administration</a></h1>
149
147
</ li > < li > Point-In-Time Recovery (PITR)
150
148
< ul >
151
149
< li > Allow a warm standby system to also allow read-only statements
152
- [< a href ="http://momjian.postgresql.org/cgi-bin/pgtodo?pitr "> pitr</ a > ]
153
150
< p > < a href ="http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php "> http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php</ a >
154
151
</ p >
155
152
</ li > < li > %Create dump tool for write-ahead logs for use in determining
@@ -241,9 +238,10 @@ <h1><a name="section_3">Data Types</a></h1>
241
238
</ li > < li > Merge hardwired timezone names with the TZ database; allow either
242
239
kind everywhere a TZ name is currently taken
243
240
</ li > < li > Allow TIMESTAMP WITH TIME ZONE to store the original timezone
244
- information, either zone name or offset from UTC [ < a href =" http://momjian.postgresql.org/cgi-bin/pgtodo?timezone " > timezone </ a > ]
241
+ information, either zone name or offset from UTC
245
242
< p > If the TIMESTAMP value is stored with a time zone name, interval
246
243
computations should adjust based on the time zone rules.
244
+ < a href ="http://archives.postgresql.org/pgsql-hackers/2004-10/msg00705.php "> http://archives.postgresql.org/pgsql-hackers/2004-10/msg00705.php</ a >
247
245
</ p >
248
246
</ li > < li > Fix SELECT '0.01 years'::interval, '0.01 months'::interval
249
247
</ li > < li > Add a GUC variable to allow output of interval values in ISO8601
@@ -439,17 +437,22 @@ <h1><a name="section_5">Multi-Language Support</a></h1>
439
437
database creation might have locale-aware indexes. The indexes would
440
438
need to be reindexed to match the new locale.
441
439
</ p >
442
- </ li > < li > Allow encoding on a per-column basis optionally using the ICU library
443
- < p > Right now only one encoding is allowed per database. [< a href ="http://momjian.postgresql.org/cgi-bin/pgtodo?locale "> locale</ a > ]
440
+ </ li > < li > Allow encoding on a per-column basis optionally using the ICU library;
441
+ Add CREATE COLLATE
442
+ < p > Right now only one encoding is allowed per database.
444
443
</ p >
445
444
< p > < a href ="http://archives.postgresql.org/pgsql-hackers/2005-03/msg00932.php "> http://archives.postgresql.org/pgsql-hackers/2005-03/msg00932.php</ a >
445
+ < a href ="http://archives.postgresql.org/pgsql-patches/2005-08/msg00039.php "> http://archives.postgresql.org/pgsql-patches/2005-08/msg00039.php</ a >
446
446
< a href ="http://archives.postgresql.org/pgsql-patches/2005-08/msg00309.php "> http://archives.postgresql.org/pgsql-patches/2005-08/msg00309.php</ a >
447
+ < a href ="http://archives.postgresql.org/pgsql-hackers/2005-09/msg00110.php "> http://archives.postgresql.org/pgsql-hackers/2005-09/msg00110.php</ a >
448
+ < a href ="http://archives.postgresql.org/pgsql-patches/2005-09/msg00020.php "> http://archives.postgresql.org/pgsql-patches/2005-09/msg00020.php</ a >
449
+ < a href ="http://archives.postgresql.org/pgsql-hackers/2005-12/msg01121.php "> http://archives.postgresql.org/pgsql-hackers/2005-12/msg01121.php</ a >
450
+ < a href ="http://archives.postgresql.org/pgsql-hackers/2006-01/msg00767.php "> http://archives.postgresql.org/pgsql-hackers/2006-01/msg00767.php</ a >
447
451
< a href ="http://archives.postgresql.org/pgsql-patches/2006-03/msg00233.php "> http://archives.postgresql.org/pgsql-patches/2006-03/msg00233.php</ a >
448
452
< a href ="http://archives.postgresql.org/pgsql-hackers/2006-09/msg00662.php "> http://archives.postgresql.org/pgsql-hackers/2006-09/msg00662.php</ a >
449
453
< a href ="http://wiki.postgresql.org/wiki/Todo:Collate "> http://wiki.postgresql.org/wiki/Todo:Collate</ a >
450
454
< a href ="http://wiki.postgresql.org/wiki/Todo:ICU "> http://wiki.postgresql.org/wiki/Todo:ICU</ a >
451
455
</ p >
452
- </ li > < li > Add CREATE COLLATE? [< a href ="http://momjian.postgresql.org/cgi-bin/pgtodo?locale "> locale</ a > ]
453
456
</ li > < li > Support multiple simultaneous character sets, per SQL92
454
457
</ li > < li > Improve UTF8 combined character handling?
455
458
</ li > < li > Add octet_length_server() and octet_length_client()
@@ -523,18 +526,15 @@ <h1><a name="section_7">SQL Commands</a></h1>
523
526
< p > < a href ="http://archives.postgresql.org/pgsql-hackers/2006-11/msg00092.php "> http://archives.postgresql.org/pgsql-hackers/2006-11/msg00092.php</ a >
524
527
</ p >
525
528
</ li > < li > Add a GUC variable to warn about non-standard SQL usage in queries
526
- </ li > < li > Add SQL-standard MERGE command, typically used to merge two tables
527
- [< a href ="http://momjian.postgresql.org/cgi-bin/pgtodo?merge "> merge</ a > ]
528
- < p > This is similar to UPDATE, then for unmatched rows, INSERT.
529
- Whether concurrent access allows modifications which could cause
530
- row loss is implementation independent.
531
- </ p >
532
- </ li > < li > Add REPLACE or UPSERT command that does UPDATE, or on failure, INSERT
533
- [< a href ="http://momjian.postgresql.org/cgi-bin/pgtodo?merge "> merge</ a > ]
534
- < p > To implement this cleanly requires that the table have a unique index
535
- so duplicate checking can be easily performed. It is possible to
536
- do it without a unique index if we require the user to LOCK the table
537
- before the MERGE.
529
+ </ li > < li > Add SQL-standard MERGE/REPLACE/UPSERT command
530
+ < p > MERGE is typically used to merge two tables. REPLACE or UPSERT
531
+ command does UPDATE, or on failure, INSERT. This is similar to UPDATE,
532
+ then for unmatched rows, INSERT. Whether concurrent access allows
533
+ modifications which could cause row loss is implementation independent.
534
+ To implement this cleanly requires that the table have a unique index
535
+ so duplicate checking can be easily performed. It is possible to do it
536
+ without a unique index if we require the user to LOCK the table before
537
+ the MERGE.
538
538
</ p >
539
539
< p > < a href ="http://archives.postgresql.org/pgsql-hackers/2005-11/msg00501.php "> http://archives.postgresql.org/pgsql-hackers/2005-11/msg00501.php</ a >
540
540
< a href ="http://archives.postgresql.org/pgsql-hackers/2005-11/msg00536.php "> http://archives.postgresql.org/pgsql-hackers/2005-11/msg00536.php</ a >
@@ -872,9 +872,10 @@ <h1><a name="section_10">Clients</a></h1>
872
872
< ul >
873
873
< li > Have psql show current values for a sequence
874
874
</ li > < li > Move psql backslash database information into the backend, use
875
- mnemonic commands? [ < a href =" http://momjian.postgresql.org/cgi-bin/pgtodo?psql " > psql </ a > ]
875
+ mnemonic commands?
876
876
< p > This would allow non-psql clients to pull the same information out
877
877
of the database as psql.
878
+ < a href ="http://archives.postgresql.org/pgsql-hackers/2004-01/msg00191.php "> http://archives.postgresql.org/pgsql-hackers/2004-01/msg00191.php</ a >
878
879
</ p >
879
880
</ li > < li > Make psql's \d commands more consistent
880
881
< p > < a href ="http://archives.postgresql.org/pgsql-hackers/2004-11/msg00014.php "> http://archives.postgresql.org/pgsql-hackers/2004-11/msg00014.php</ a >
@@ -1331,7 +1332,7 @@ <h1><a name="section_16">Locking</a></h1>
1331
1332
< h1 > < a name ="section_17 "> Startup Time Improvements</ a > </ h1 >
1332
1333
1333
1334
< ul >
1334
- < li > Experiment with multi-threaded backend for backend creation [ < a href =" http://momjian.postgresql.org/cgi-bin/pgtodo?thread " > thread </ a > ]
1335
+ < li > Experiment with multi-threaded backend for backend creation
1335
1336
< p > This would prevent the overhead associated with process creation. Most
1336
1337
operating systems have trivial process creation time compared to
1337
1338
database startup overhead, but a few operating systems (Win32,
@@ -1342,11 +1343,12 @@ <h1><a name="section_17">Startup Time Improvements</a></h1>
1342
1343
< h1 > < a name ="section_18 "> Write-Ahead Log</ a > </ h1 >
1343
1344
1344
1345
< ul >
1345
- < li > Eliminate need to write full pages to WAL before page modification [ < a href =" http://momjian.postgresql.org/cgi-bin/pgtodo?wal " > wal </ a > ]
1346
+ < li > Eliminate need to write full pages to WAL before page modification
1346
1347
< p > Currently, to protect against partial disk page writes, we write
1347
1348
full page images to WAL before they are modified so we can correct any
1348
1349
partial page writes during recovery. These pages can also be
1349
1350
eliminated from point-in-time archive files.
1351
+ < a href ="http://archives.postgresql.org/pgsql-hackers/2002-06/msg00655.php "> http://archives.postgresql.org/pgsql-hackers/2002-06/msg00655.php</ a >
1350
1352
</ p >
1351
1353
< ul >
1352
1354
< li > When off, write CRC to WAL and check file system blocks
@@ -1376,23 +1378,26 @@ <h1><a name="section_18">Write-Ahead Log</a></h1>
1376
1378
< p > Currently fsync of WAL requires the disk platter to perform a full
1377
1379
rotation to fsync again. One idea is to write the WAL to different
1378
1380
offsets that might reduce the rotational delay.
1381
+ < a href ="http://archives.postgresql.org/pgsql-hackers/2002-11/msg00483.php "> http://archives.postgresql.org/pgsql-hackers/2002-11/msg00483.php</ a >
1379
1382
</ p >
1380
1383
</ li > < li > Allow WAL logging to be turned off for a table, but the table
1381
- might be dropped or truncated during crash recovery [ < a href =" http://momjian.postgresql.org/cgi-bin/pgtodo?walcontrol " > walcontrol </ a > ]
1384
+ might be dropped or truncated during crash recovery
1382
1385
< p > Allow tables to bypass WAL writes and just fsync() dirty pages on
1383
1386
commit. This should be implemented using ALTER TABLE, e.g. ALTER
1384
1387
TABLE PERSISTENCE [< a href ="http://momjian.postgresql.org/cgi-bin/pgtodo? DROP | TRUNCATE | DEFAULT "> DROP | TRUNCATE | DEFAULT </ a > ]. Tables using
1385
1388
non-default logging should not use referential integrity with
1386
1389
default-logging tables. A table without dirty buffers during a
1387
1390
crash could perhaps avoid the drop/truncate.
1391
+ < a href ="http://archives.postgresql.org/pgsql-hackers/2005-12/msg01016.php "> http://archives.postgresql.org/pgsql-hackers/2005-12/msg01016.php</ a >
1388
1392
</ p >
1389
1393
</ li > < li > Allow WAL logging to be turned off for a table, but the table would
1390
- avoid being truncated/dropped [ < a href =" http://momjian.postgresql.org/cgi-bin/pgtodo?walcontrol " > walcontrol </ a > ]
1394
+ avoid being truncated/dropped
1391
1395
< p > To do this, only a single writer can modify the table, and writes
1392
1396
must happen only on new pages so the new pages can be removed during
1393
1397
crash recovery. Readers can continue accessing the table. Such
1394
1398
tables probably cannot have indexes. One complexity is the handling
1395
1399
of indexes on TOAST tables.
1400
+ < a href ="http://archives.postgresql.org/pgsql-hackers/2005-12/msg01016.php "> http://archives.postgresql.org/pgsql-hackers/2005-12/msg01016.php</ a >
1396
1401
</ p >
1397
1402
</ li > < li > Speed WAL recovery by allowing more than one page to be prefetched
1398
1403
< p > This should be done utilizing the same infrastructure used for
0 commit comments