Commit 883b6a8a authored by Bruce Momjian's avatar Bruce Momjian

Remove TODO.detail references; instead add TODO URLs pointing to the

archives.  We have been using URLs for a while for new items.
parent 05ace733
PostgreSQL TODO List PostgreSQL TODO List
==================== ====================
Current maintainer: Bruce Momjian (bruce@momjian.us) Current maintainer: Bruce Momjian (bruce@momjian.us)
Last updated: Thu Apr 17 16:56:51 EDT 2008 Last updated: Sat Apr 19 08:15:19 EDT 2008
The most recent version of this document can be viewed at The most recent version of this document can be viewed at
http://www.postgresql.org/docs/faqs.TODO.html. http://www.postgresql.org/docs/faqs.TODO.html.
...@@ -9,8 +9,6 @@ http://www.postgresql.org/docs/faqs.TODO.html. ...@@ -9,8 +9,6 @@ http://www.postgresql.org/docs/faqs.TODO.html.
#A hyphen, "-", marks changes that will appear in the upcoming 8.3 release.# #A hyphen, "-", marks changes that will appear in the upcoming 8.3 release.#
#A percent sign, "%", marks items that are easier to implement.# #A percent sign, "%", marks items that are easier to implement.#
Bracketed items, "[]", have more detail.
This list contains all known PostgreSQL bugs and feature requests. If This list contains all known PostgreSQL bugs and feature requests. If
you would like to work on an item, please read the Developer's FAQ you would like to work on an item, please read the Developer's FAQ
first. There is also a developer's wiki at first. There is also a developer's wiki at
...@@ -162,7 +160,6 @@ Administration ...@@ -162,7 +160,6 @@ Administration
* Point-In-Time Recovery (PITR) * Point-In-Time Recovery (PITR)
o Allow a warm standby system to also allow read-only statements o Allow a warm standby system to also allow read-only statements
[pitr]
http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php
...@@ -275,10 +272,11 @@ Data Types ...@@ -275,10 +272,11 @@ Data Types
o Merge hardwired timezone names with the TZ database; allow either o Merge hardwired timezone names with the TZ database; allow either
kind everywhere a TZ name is currently taken kind everywhere a TZ name is currently taken
o Allow TIMESTAMP WITH TIME ZONE to store the original timezone o Allow TIMESTAMP WITH TIME ZONE to store the original timezone
information, either zone name or offset from UTC [timezone] information, either zone name or offset from UTC
If the TIMESTAMP value is stored with a time zone name, interval If the TIMESTAMP value is stored with a time zone name, interval
computations should adjust based on the time zone rules. computations should adjust based on the time zone rules.
http://archives.postgresql.org/pgsql-hackers/2004-10/msg00705.php
o Fix SELECT '0.01 years'::interval, '0.01 months'::interval o Fix SELECT '0.01 years'::interval, '0.01 months'::interval
o Add a GUC variable to allow output of interval values in ISO8601 o Add a GUC variable to allow output of interval values in ISO8601
...@@ -503,18 +501,23 @@ Multi-Language Support ...@@ -503,18 +501,23 @@ Multi-Language Support
database creation might have locale-aware indexes. The indexes would database creation might have locale-aware indexes. The indexes would
need to be reindexed to match the new locale. need to be reindexed to match the new locale.
* Allow encoding on a per-column basis optionally using the ICU library * Allow encoding on a per-column basis optionally using the ICU library;
Add CREATE COLLATE
Right now only one encoding is allowed per database. [locale] Right now only one encoding is allowed per database.
http://archives.postgresql.org/pgsql-hackers/2005-03/msg00932.php http://archives.postgresql.org/pgsql-hackers/2005-03/msg00932.php
http://archives.postgresql.org/pgsql-patches/2005-08/msg00039.php
http://archives.postgresql.org/pgsql-patches/2005-08/msg00309.php http://archives.postgresql.org/pgsql-patches/2005-08/msg00309.php
http://archives.postgresql.org/pgsql-hackers/2005-09/msg00110.php
http://archives.postgresql.org/pgsql-patches/2005-09/msg00020.php
http://archives.postgresql.org/pgsql-hackers/2005-12/msg01121.php
http://archives.postgresql.org/pgsql-hackers/2006-01/msg00767.php
http://archives.postgresql.org/pgsql-patches/2006-03/msg00233.php http://archives.postgresql.org/pgsql-patches/2006-03/msg00233.php
http://archives.postgresql.org/pgsql-hackers/2006-09/msg00662.php http://archives.postgresql.org/pgsql-hackers/2006-09/msg00662.php
http://wiki.postgresql.org/wiki/Todo:Collate http://wiki.postgresql.org/wiki/Todo:Collate
http://wiki.postgresql.org/wiki/Todo:ICU http://wiki.postgresql.org/wiki/Todo:ICU
* Add CREATE COLLATE? [locale]
* Support multiple simultaneous character sets, per SQL92 * Support multiple simultaneous character sets, per SQL92
* Improve UTF8 combined character handling? * Improve UTF8 combined character handling?
* Add octet_length_server() and octet_length_client() * Add octet_length_server() and octet_length_client()
...@@ -601,20 +604,16 @@ SQL Commands ...@@ -601,20 +604,16 @@ SQL Commands
http://archives.postgresql.org/pgsql-hackers/2006-11/msg00092.php http://archives.postgresql.org/pgsql-hackers/2006-11/msg00092.php
* Add a GUC variable to warn about non-standard SQL usage in queries * Add a GUC variable to warn about non-standard SQL usage in queries
* Add SQL-standard MERGE command, typically used to merge two tables * Add SQL-standard MERGE/REPLACE/UPSERT command
[merge]
This is similar to UPDATE, then for unmatched rows, INSERT.
Whether concurrent access allows modifications which could cause
row loss is implementation independent.
* Add REPLACE or UPSERT command that does UPDATE, or on failure, INSERT
[merge]
MERGE is typically used to merge two tables. REPLACE or UPSERT
command does UPDATE, or on failure, INSERT. This is similar to UPDATE,
then for unmatched rows, INSERT. Whether concurrent access allows
modifications which could cause row loss is implementation independent.
To implement this cleanly requires that the table have a unique index To implement this cleanly requires that the table have a unique index
so duplicate checking can be easily performed. It is possible to so duplicate checking can be easily performed. It is possible to do it
do it without a unique index if we require the user to LOCK the table without a unique index if we require the user to LOCK the table before
before the MERGE. the MERGE.
http://archives.postgresql.org/pgsql-hackers/2005-11/msg00501.php http://archives.postgresql.org/pgsql-hackers/2005-11/msg00501.php
http://archives.postgresql.org/pgsql-hackers/2005-11/msg00536.php http://archives.postgresql.org/pgsql-hackers/2005-11/msg00536.php
...@@ -1007,10 +1006,11 @@ Clients ...@@ -1007,10 +1006,11 @@ Clients
* psql * psql
o Have psql show current values for a sequence o Have psql show current values for a sequence
o Move psql backslash database information into the backend, use o Move psql backslash database information into the backend, use
mnemonic commands? [psql] mnemonic commands?
This would allow non-psql clients to pull the same information out This would allow non-psql clients to pull the same information out
of the database as psql. of the database as psql.
http://archives.postgresql.org/pgsql-hackers/2004-01/msg00191.php
o Make psql's \d commands more consistent o Make psql's \d commands more consistent
...@@ -1539,7 +1539,7 @@ Locking ...@@ -1539,7 +1539,7 @@ Locking
Startup Time Improvements Startup Time Improvements
========================= =========================
* Experiment with multi-threaded backend for backend creation [thread] * Experiment with multi-threaded backend for backend creation
This would prevent the overhead associated with process creation. Most This would prevent the overhead associated with process creation. Most
operating systems have trivial process creation time compared to operating systems have trivial process creation time compared to
...@@ -1552,12 +1552,13 @@ Startup Time Improvements ...@@ -1552,12 +1552,13 @@ Startup Time Improvements
Write-Ahead Log Write-Ahead Log
=============== ===============
* Eliminate need to write full pages to WAL before page modification [wal] * Eliminate need to write full pages to WAL before page modification
Currently, to protect against partial disk page writes, we write Currently, to protect against partial disk page writes, we write
full page images to WAL before they are modified so we can correct any full page images to WAL before they are modified so we can correct any
partial page writes during recovery. These pages can also be partial page writes during recovery. These pages can also be
eliminated from point-in-time archive files. eliminated from point-in-time archive files.
http://archives.postgresql.org/pgsql-hackers/2002-06/msg00655.php
o When off, write CRC to WAL and check file system blocks o When off, write CRC to WAL and check file system blocks
on recovery on recovery
...@@ -1590,9 +1591,10 @@ Write-Ahead Log ...@@ -1590,9 +1591,10 @@ Write-Ahead Log
Currently fsync of WAL requires the disk platter to perform a full Currently fsync of WAL requires the disk platter to perform a full
rotation to fsync again. One idea is to write the WAL to different rotation to fsync again. One idea is to write the WAL to different
offsets that might reduce the rotational delay. offsets that might reduce the rotational delay.
http://archives.postgresql.org/pgsql-hackers/2002-11/msg00483.php
* Allow WAL logging to be turned off for a table, but the table * Allow WAL logging to be turned off for a table, but the table
might be dropped or truncated during crash recovery [walcontrol] might be dropped or truncated during crash recovery
Allow tables to bypass WAL writes and just fsync() dirty pages on Allow tables to bypass WAL writes and just fsync() dirty pages on
commit. This should be implemented using ALTER TABLE, e.g. ALTER commit. This should be implemented using ALTER TABLE, e.g. ALTER
...@@ -1600,15 +1602,17 @@ Write-Ahead Log ...@@ -1600,15 +1602,17 @@ Write-Ahead Log
non-default logging should not use referential integrity with non-default logging should not use referential integrity with
default-logging tables. A table without dirty buffers during a default-logging tables. A table without dirty buffers during a
crash could perhaps avoid the drop/truncate. crash could perhaps avoid the drop/truncate.
http://archives.postgresql.org/pgsql-hackers/2005-12/msg01016.php
* Allow WAL logging to be turned off for a table, but the table would * Allow WAL logging to be turned off for a table, but the table would
avoid being truncated/dropped [walcontrol] avoid being truncated/dropped
To do this, only a single writer can modify the table, and writes To do this, only a single writer can modify the table, and writes
must happen only on new pages so the new pages can be removed during must happen only on new pages so the new pages can be removed during
crash recovery. Readers can continue accessing the table. Such crash recovery. Readers can continue accessing the table. Such
tables probably cannot have indexes. One complexity is the handling tables probably cannot have indexes. One complexity is the handling
of indexes on TOAST tables. of indexes on TOAST tables.
http://archives.postgresql.org/pgsql-hackers/2005-12/msg01016.php
* Speed WAL recovery by allowing more than one page to be prefetched * Speed WAL recovery by allowing more than one page to be prefetched
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<body bgcolor="#FFFFFF" text="#000000" link="#FF0000" vlink="#A00000" alink="#0000FF"> <body bgcolor="#FFFFFF" text="#000000" link="#FF0000" vlink="#A00000" alink="#0000FF">
<h1><a name="section_1">PostgreSQL TODO List</a></h1> <h1><a name="section_1">PostgreSQL TODO List</a></h1>
<p>Current maintainer: Bruce Momjian (<a href="mailto:bruce@momjian.us">bruce@momjian.us</a>)<br/> <p>Current maintainer: Bruce Momjian (<a href="mailto:bruce@momjian.us">bruce@momjian.us</a>)<br/>
Last updated: Thu Apr 17 16:56:51 EDT 2008 Last updated: Sat Apr 19 08:15:19 EDT 2008
</p> </p>
<p>The most recent version of this document can be viewed at<br/> <p>The most recent version of this document can be viewed at<br/>
<a href="http://www.postgresql.org/docs/faqs.TODO.html">http://www.postgresql.org/docs/faqs.TODO.html</a>. <a href="http://www.postgresql.org/docs/faqs.TODO.html">http://www.postgresql.org/docs/faqs.TODO.html</a>.
...@@ -16,8 +16,6 @@ Last updated: Thu Apr 17 16:56:51 EDT 2008 ...@@ -16,8 +16,6 @@ Last updated: Thu Apr 17 16:56:51 EDT 2008
<p><strong>A hyphen, "-", marks changes that will appear in the upcoming 8.3 release.</strong><br/> <p><strong>A hyphen, "-", marks changes that will appear in the upcoming 8.3 release.</strong><br/>
<strong>A percent sign, "%", marks items that are easier to implement.</strong> <strong>A percent sign, "%", marks items that are easier to implement.</strong>
</p> </p>
<p>Bracketed items, "[<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?"></a>]", have more detail.
</p>
<p>This list contains all known PostgreSQL bugs and feature requests. If<br/> <p>This list contains all known PostgreSQL bugs and feature requests. If<br/>
you would like to work on an item, please read the Developer's FAQ<br/> you would like to work on an item, please read the Developer's FAQ<br/>
first. There is also a developer's wiki at<br/> first. There is also a developer's wiki at<br/>
...@@ -149,7 +147,6 @@ first. There is also a developer's wiki at<br/> ...@@ -149,7 +147,6 @@ first. There is also a developer's wiki at<br/>
</li><li>Point-In-Time Recovery (PITR) </li><li>Point-In-Time Recovery (PITR)
<ul> <ul>
<li>Allow a warm standby system to also allow read-only statements <li>Allow a warm standby system to also allow read-only statements
[<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?pitr">pitr</a>]
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php</a> <p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php</a>
</p> </p>
</li><li>%Create dump tool for write-ahead logs for use in determining </li><li>%Create dump tool for write-ahead logs for use in determining
...@@ -241,9 +238,10 @@ first. There is also a developer's wiki at<br/> ...@@ -241,9 +238,10 @@ first. There is also a developer's wiki at<br/>
</li><li>Merge hardwired timezone names with the TZ database; allow either </li><li>Merge hardwired timezone names with the TZ database; allow either
kind everywhere a TZ name is currently taken kind everywhere a TZ name is currently taken
</li><li>Allow TIMESTAMP WITH TIME ZONE to store the original timezone </li><li>Allow TIMESTAMP WITH TIME ZONE to store the original timezone
information, either zone name or offset from UTC [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?timezone">timezone</a>] information, either zone name or offset from UTC
<p> If the TIMESTAMP value is stored with a time zone name, interval <p> If the TIMESTAMP value is stored with a time zone name, interval
computations should adjust based on the time zone rules. computations should adjust based on the time zone rules.
<a href="http://archives.postgresql.org/pgsql-hackers/2004-10/msg00705.php">http://archives.postgresql.org/pgsql-hackers/2004-10/msg00705.php</a>
</p> </p>
</li><li>Fix SELECT '0.01 years'::interval, '0.01 months'::interval </li><li>Fix SELECT '0.01 years'::interval, '0.01 months'::interval
</li><li>Add a GUC variable to allow output of interval values in ISO8601 </li><li>Add a GUC variable to allow output of interval values in ISO8601
...@@ -439,17 +437,22 @@ first. There is also a developer's wiki at<br/> ...@@ -439,17 +437,22 @@ first. There is also a developer's wiki at<br/>
database creation might have locale-aware indexes. The indexes would database creation might have locale-aware indexes. The indexes would
need to be reindexed to match the new locale. need to be reindexed to match the new locale.
</p> </p>
</li><li>Allow encoding on a per-column basis optionally using the ICU library </li><li>Allow encoding on a per-column basis optionally using the ICU library;
<p> Right now only one encoding is allowed per database. [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?locale">locale</a>] Add CREATE COLLATE
<p> Right now only one encoding is allowed per database.
</p> </p>
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2005-03/msg00932.php">http://archives.postgresql.org/pgsql-hackers/2005-03/msg00932.php</a> <p> <a href="http://archives.postgresql.org/pgsql-hackers/2005-03/msg00932.php">http://archives.postgresql.org/pgsql-hackers/2005-03/msg00932.php</a>
<a href="http://archives.postgresql.org/pgsql-patches/2005-08/msg00039.php">http://archives.postgresql.org/pgsql-patches/2005-08/msg00039.php</a>
<a href="http://archives.postgresql.org/pgsql-patches/2005-08/msg00309.php">http://archives.postgresql.org/pgsql-patches/2005-08/msg00309.php</a> <a href="http://archives.postgresql.org/pgsql-patches/2005-08/msg00309.php">http://archives.postgresql.org/pgsql-patches/2005-08/msg00309.php</a>
<a href="http://archives.postgresql.org/pgsql-hackers/2005-09/msg00110.php">http://archives.postgresql.org/pgsql-hackers/2005-09/msg00110.php</a>
<a href="http://archives.postgresql.org/pgsql-patches/2005-09/msg00020.php">http://archives.postgresql.org/pgsql-patches/2005-09/msg00020.php</a>
<a href="http://archives.postgresql.org/pgsql-hackers/2005-12/msg01121.php">http://archives.postgresql.org/pgsql-hackers/2005-12/msg01121.php</a>
<a href="http://archives.postgresql.org/pgsql-hackers/2006-01/msg00767.php">http://archives.postgresql.org/pgsql-hackers/2006-01/msg00767.php</a>
<a href="http://archives.postgresql.org/pgsql-patches/2006-03/msg00233.php">http://archives.postgresql.org/pgsql-patches/2006-03/msg00233.php</a> <a href="http://archives.postgresql.org/pgsql-patches/2006-03/msg00233.php">http://archives.postgresql.org/pgsql-patches/2006-03/msg00233.php</a>
<a href="http://archives.postgresql.org/pgsql-hackers/2006-09/msg00662.php">http://archives.postgresql.org/pgsql-hackers/2006-09/msg00662.php</a> <a href="http://archives.postgresql.org/pgsql-hackers/2006-09/msg00662.php">http://archives.postgresql.org/pgsql-hackers/2006-09/msg00662.php</a>
<a href="http://wiki.postgresql.org/wiki/Todo:Collate">http://wiki.postgresql.org/wiki/Todo:Collate</a> <a href="http://wiki.postgresql.org/wiki/Todo:Collate">http://wiki.postgresql.org/wiki/Todo:Collate</a>
<a href="http://wiki.postgresql.org/wiki/Todo:ICU">http://wiki.postgresql.org/wiki/Todo:ICU</a> <a href="http://wiki.postgresql.org/wiki/Todo:ICU">http://wiki.postgresql.org/wiki/Todo:ICU</a>
</p> </p>
</li><li>Add CREATE COLLATE? [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?locale">locale</a>]
</li><li>Support multiple simultaneous character sets, per SQL92 </li><li>Support multiple simultaneous character sets, per SQL92
</li><li>Improve UTF8 combined character handling? </li><li>Improve UTF8 combined character handling?
</li><li>Add octet_length_server() and octet_length_client() </li><li>Add octet_length_server() and octet_length_client()
...@@ -523,18 +526,15 @@ first. There is also a developer's wiki at<br/> ...@@ -523,18 +526,15 @@ first. There is also a developer's wiki at<br/>
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-11/msg00092.php">http://archives.postgresql.org/pgsql-hackers/2006-11/msg00092.php</a> <p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-11/msg00092.php">http://archives.postgresql.org/pgsql-hackers/2006-11/msg00092.php</a>
</p> </p>
</li><li>Add a GUC variable to warn about non-standard SQL usage in queries </li><li>Add a GUC variable to warn about non-standard SQL usage in queries
</li><li>Add SQL-standard MERGE command, typically used to merge two tables </li><li>Add SQL-standard MERGE/REPLACE/UPSERT command
[<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?merge">merge</a>] <p> MERGE is typically used to merge two tables. REPLACE or UPSERT
<p> This is similar to UPDATE, then for unmatched rows, INSERT. command does UPDATE, or on failure, INSERT. This is similar to UPDATE,
Whether concurrent access allows modifications which could cause then for unmatched rows, INSERT. Whether concurrent access allows
row loss is implementation independent. modifications which could cause row loss is implementation independent.
</p> To implement this cleanly requires that the table have a unique index
</li><li>Add REPLACE or UPSERT command that does UPDATE, or on failure, INSERT so duplicate checking can be easily performed. It is possible to do it
[<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?merge">merge</a>] without a unique index if we require the user to LOCK the table before
<p> To implement this cleanly requires that the table have a unique index the MERGE.
so duplicate checking can be easily performed. It is possible to
do it without a unique index if we require the user to LOCK the table
before the MERGE.
</p> </p>
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2005-11/msg00501.php">http://archives.postgresql.org/pgsql-hackers/2005-11/msg00501.php</a> <p> <a href="http://archives.postgresql.org/pgsql-hackers/2005-11/msg00501.php">http://archives.postgresql.org/pgsql-hackers/2005-11/msg00501.php</a>
<a href="http://archives.postgresql.org/pgsql-hackers/2005-11/msg00536.php">http://archives.postgresql.org/pgsql-hackers/2005-11/msg00536.php</a> <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 @@ first. There is also a developer's wiki at<br/> ...@@ -872,9 +872,10 @@ first. There is also a developer's wiki at<br/>
<ul> <ul>
<li>Have psql show current values for a sequence <li>Have psql show current values for a sequence
</li><li>Move psql backslash database information into the backend, use </li><li>Move psql backslash database information into the backend, use
mnemonic commands? [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?psql">psql</a>] mnemonic commands?
<p> This would allow non-psql clients to pull the same information out <p> This would allow non-psql clients to pull the same information out
of the database as psql. of the database as psql.
<a href="http://archives.postgresql.org/pgsql-hackers/2004-01/msg00191.php">http://archives.postgresql.org/pgsql-hackers/2004-01/msg00191.php</a>
</p> </p>
</li><li>Make psql's \d commands more consistent </li><li>Make psql's \d commands more consistent
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2004-11/msg00014.php">http://archives.postgresql.org/pgsql-hackers/2004-11/msg00014.php</a> <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 @@ first. There is also a developer's wiki at<br/> ...@@ -1331,7 +1332,7 @@ first. There is also a developer's wiki at<br/>
<h1><a name="section_17">Startup Time Improvements</a></h1> <h1><a name="section_17">Startup Time Improvements</a></h1>
<ul> <ul>
<li>Experiment with multi-threaded backend for backend creation [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?thread">thread</a>] <li>Experiment with multi-threaded backend for backend creation
<p> This would prevent the overhead associated with process creation. Most <p> This would prevent the overhead associated with process creation. Most
operating systems have trivial process creation time compared to operating systems have trivial process creation time compared to
database startup overhead, but a few operating systems (Win32, database startup overhead, but a few operating systems (Win32,
...@@ -1342,11 +1343,12 @@ first. There is also a developer's wiki at<br/> ...@@ -1342,11 +1343,12 @@ first. There is also a developer's wiki at<br/>
<h1><a name="section_18">Write-Ahead Log</a></h1> <h1><a name="section_18">Write-Ahead Log</a></h1>
<ul> <ul>
<li>Eliminate need to write full pages to WAL before page modification [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?wal">wal</a>] <li>Eliminate need to write full pages to WAL before page modification
<p> Currently, to protect against partial disk page writes, we write <p> Currently, to protect against partial disk page writes, we write
full page images to WAL before they are modified so we can correct any full page images to WAL before they are modified so we can correct any
partial page writes during recovery. These pages can also be partial page writes during recovery. These pages can also be
eliminated from point-in-time archive files. eliminated from point-in-time archive files.
<a href="http://archives.postgresql.org/pgsql-hackers/2002-06/msg00655.php">http://archives.postgresql.org/pgsql-hackers/2002-06/msg00655.php</a>
</p> </p>
<ul> <ul>
<li>When off, write CRC to WAL and check file system blocks <li>When off, write CRC to WAL and check file system blocks
...@@ -1376,23 +1378,26 @@ first. There is also a developer's wiki at<br/> ...@@ -1376,23 +1378,26 @@ first. There is also a developer's wiki at<br/>
<p> Currently fsync of WAL requires the disk platter to perform a full <p> Currently fsync of WAL requires the disk platter to perform a full
rotation to fsync again. One idea is to write the WAL to different rotation to fsync again. One idea is to write the WAL to different
offsets that might reduce the rotational delay. offsets that might reduce the rotational delay.
<a href="http://archives.postgresql.org/pgsql-hackers/2002-11/msg00483.php">http://archives.postgresql.org/pgsql-hackers/2002-11/msg00483.php</a>
</p> </p>
</li><li>Allow WAL logging to be turned off for a table, but the table </li><li>Allow WAL logging to be turned off for a table, but the table
might be dropped or truncated during crash recovery [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?walcontrol">walcontrol</a>] might be dropped or truncated during crash recovery
<p> Allow tables to bypass WAL writes and just fsync() dirty pages on <p> Allow tables to bypass WAL writes and just fsync() dirty pages on
commit. This should be implemented using ALTER TABLE, e.g. ALTER commit. This should be implemented using ALTER TABLE, e.g. ALTER
TABLE PERSISTENCE [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo? DROP | TRUNCATE | DEFAULT "> DROP | TRUNCATE | DEFAULT </a>]. Tables using TABLE PERSISTENCE [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo? DROP | TRUNCATE | DEFAULT "> DROP | TRUNCATE | DEFAULT </a>]. Tables using
non-default logging should not use referential integrity with non-default logging should not use referential integrity with
default-logging tables. A table without dirty buffers during a default-logging tables. A table without dirty buffers during a
crash could perhaps avoid the drop/truncate. crash could perhaps avoid the drop/truncate.
<a href="http://archives.postgresql.org/pgsql-hackers/2005-12/msg01016.php">http://archives.postgresql.org/pgsql-hackers/2005-12/msg01016.php</a>
</p> </p>
</li><li>Allow WAL logging to be turned off for a table, but the table would </li><li>Allow WAL logging to be turned off for a table, but the table would
avoid being truncated/dropped [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?walcontrol">walcontrol</a>] avoid being truncated/dropped
<p> To do this, only a single writer can modify the table, and writes <p> To do this, only a single writer can modify the table, and writes
must happen only on new pages so the new pages can be removed during must happen only on new pages so the new pages can be removed during
crash recovery. Readers can continue accessing the table. Such crash recovery. Readers can continue accessing the table. Such
tables probably cannot have indexes. One complexity is the handling tables probably cannot have indexes. One complexity is the handling
of indexes on TOAST tables. of indexes on TOAST tables.
<a href="http://archives.postgresql.org/pgsql-hackers/2005-12/msg01016.php">http://archives.postgresql.org/pgsql-hackers/2005-12/msg01016.php</a>
</p> </p>
</li><li>Speed WAL recovery by allowing more than one page to be prefetched </li><li>Speed WAL recovery by allowing more than one page to be prefetched
<p> This should be done utilizing the same infrastructure used for <p> This should be done utilizing the same infrastructure used for
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment