PostgreSQL TODO List
====================
Current maintainer: Bruce Momjian (bruce@momjian.us)
-Last updated: Mon Nov 26 18:31:05 EST 2007
+Last updated: Fri Dec 7 12:52:05 EST 2007
The most recent version of this document can be viewed at
http://www.postgresql.org/docs/faqs.TODO.html.
* Configuration files
- o -Allow commenting of variables in postgresql.conf to restore them
- to defaults
o Allow pg_hba.conf to specify host names along with IP addresses
Host name lookup could occur when the postmaster reads the
requires a tool that will call that function and connect to each
database to find the objects in each database for that tablespace.
- o -Add a GUC variable to control the tablespace for temporary objects
- and sort files
o Allow WAL replay of CREATE TABLESPACE to work when the directory
structure on the recovery computer is different from the original
http://archives.postgresql.org/pgsql-hackers/2006-12/msg00497.php
-Monitoring
-==========
-
-* -Allow server log information to be output as CSV format
-* -Add ability to monitor the use of temporary sort files
Data Types
* Fix data types where equality comparison isn't intuitive, e.g. box
* Allow user-defined types to specify a type modifier at table creation
time
-* -Allow user-defined types to accept 'typmod' parameters
-
- http://archives.postgresql.org/pgsql-hackers/2005-08/msg01142.php
- http://archives.postgresql.org/pgsql-hackers/2005-09/msg00012.php
- http://archives.postgresql.org/pgsql-hackers/2006-08/msg00149.php
-
* Add support for public SYNONYMs
http://archives.postgresql.org/pgsql-hackers/2006-03/msg00519.php
http://archives.postgresql.org/pgsql-hackers/2006-05/msg00072.php
http://archives.postgresql.org/pgsql-hackers/2006-09/msg01681.php
-* -Add Globally/Universally Unique Identifier (GUID/UUID)
-
- http://archives.postgresql.org/pgsql-patches/2006-09/msg00209.php
- http://archives.postgresql.org/pgsql-general/2007-01/msg00853.php
-
* Add support for SQL-standard GENERATED/IDENTITY columns
http://archives.postgresql.org/pgsql-hackers/2006-07/msg00543.php
http://archives.postgresql.org/pgsql-hackers/2007-05/msg00344.php
http://archives.postgresql.org/pgsql-patches/2007-05/msg00076.php
-* -Support a data type with specific enumerated values (ENUM)
* Improve XML support
http://developer.postgresql.org/index.php/XML_Support
http://archives.postgresql.org/pgsql-patches/2007-05/msg00114.php
- o -Add support for arrays of complex types
o Allow single-byte header storage for array elements
* MONEY data type
- o -Make 64-bit version of the MONEY data type
* Add locale-aware MONEY type, and support multiple currencies
http://archives.postgresql.org/pgsql-general/2005-08/msg01432.php
o to_char(INTERVAL '43 hours 20 minutes', 'WK:DD:HR:MI') => 0:1:19:20
o to_char(INTERVAL '3 years 5 months','MM') => 41
-* -Add ISO day of week format 'ID' to to_char() where Monday = 1
-* -Add a field 'isoyear' to extract(), based on the ISO week
* Implement inlining of set-returning functions defined in SQL
* Allow SQL-language functions to return results from RETURNING queries
* Add NOVICE output level for helpful messages like automatic sequence/index
creation
-* -Add RESET SESSION command to reset all session state
* Add GUC to issue notice about statements that use unjoined tables
* Allow EXPLAIN to identify tables that were skipped because of
constraint_exclusion
* CLUSTER
- o -Make CLUSTER preserve recently-dead tuples per MVCC requirements
o Automatically maintain clustering on a table
This might require some background daemon to maintain clustering
o %Add VERBOSE option to report tables as they are processed,
like VACUUM VERBOSE
- o -Add more logical syntax CLUSTER table USING index;
- support current syntax for backward compatibility
* COPY
* CURSOR
- o -Allow UPDATE/DELETE WHERE CURRENT OF cursor
o Prevent DROP TABLE from dropping a row referenced by its own open
cursor?
http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php
o Add single-step debugging of functions
- o -Add support for MOVE cursors
o Add support for SCROLL cursors
o Add support for WITH HOLD cursors
o Allow RETURN to return row or record functions
http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php
- o -Allow PL/PythonU to return boolean rather than 1/0
o Allow data to be passed in native language formats, rather
than only text
http://archives.postgresql.org/pgsql-hackers/2004-11/msg00014.php
http://archives.postgresql.org/pgsql-hackers/2004-11/msg00014.php
- o -Allow psql \pset boolean variables to set to fixed values, rather
- than toggle
o Consistently display privilege information for all objects in psql
o Add auto-expanded mode so expanded output is used if the row
length is wider than the screen width.
o Stop dumping CASCADE on DROP TYPE commands in clean mode
o Allow pg_dump --clean to drop roles that own objects or have
privileges
- o -Add -f to pg_dumpall
o Change pg_dump so that a comment on the dumped database is
applied to the loaded database, even if the database has a
different name. This will require new backend syntax, perhaps
-Dependency Checking
-===================
-
-* -Flush cached query plans when the dependent objects change or
- when new ANALYZE statistics are available
-* -Track dependencies in function bodies and recompile/invalidate
-* -Invalidate prepared queries, like INSERT, when the table definition
- is altered
-
Indexes
=======
http://archives.postgresql.org/pgsql-patches/2005-07/msg00512.php
http://archives.postgresql.org/pgsql-hackers/2006-12/msg01107.php
-* -Allow use of indexes to search for NULLs
* Allow accurate statistics to be collected on indexes with more than
one column or expression indexes, perhaps using per-index statistics
http://archives.postgresql.org/pgsql-performance/2006-10/msg00222.php
http://archives.postgresql.org/pgsql-hackers/2007-03/msg01131.php
-* -Allow the creation of indexes with mixed ascending/descending
- specifiers
* Consider compressing indexes by storing key values duplicated in
several rows as a single index entry
* %Add an option to sync() before fsync()'ing checkpoint files
* Add program to test if fsync has a delay compared to non-fsync
-* -Reduce checkpoint performance degredation by forcing data to disk
- more evenly
Cache Usage
o Query execute plan
o Query results
-* -Allow sequential scans to take advantage of other concurrent
- sequential scans, also called "Synchronised Scanning"
* Consider increasing internal areas when shared buffers is increased
http://archives.postgresql.org/pgsql-hackers/2005-10/msg01419.php
in hopes that empty pages at the end can be truncated by VACUUM
* Allow FSM page return free space based on table clustering, to assist
in maintaining clustering?
-* -Consider shrinking expired tuples to just their headers
-* -Allow heap reuse of UPDATEd rows if no indexed columns are changed,
- and old and new versions are on the same heap page
* Improve dead row detection during multi-statement transactions usage
http://archives.postgresql.org/pgsql-patches/2007-03/msg00358.php
-* -Reduce XID consumption of read-only queries
* Prevent long-lived temporary tables from causing frozen-xid advancement
starvation
o %Issue log message to suggest VACUUM FULL if a table is nearly
empty?
o Consider logging activity either to the logs or a system view
- o -Turn on by default
- o -Allow multiple vacuums so large tables do not starve small
- tables
o Improve control of auto-vacuum
http://archives.postgresql.org/pgsql-hackers/2006-12/msg00876.php
http://archives.postgresql.org/pgsql-hackers/2007-03/msg01589.php
-* -Allow the pg_xlog directory location to be specified during initdb
- with a symlink back to the /data location
* Allow WAL information to recover corrupted pg_controldata
http://archives.postgresql.org/pgsql-patches/2006-06/msg00025.php
rotation to fsync again. One idea is to write the WAL to different
offsets that might reduce the rotational delay.
-* -Allow buffered WAL writes and fsync
* Allow WAL logging to be turned off for a table, but the table
might be dropped or truncated during crash recovery [walcontrol]
====================
* Improve selectivity functions for geometric operators
-* -Allow ORDER BY ... LIMIT # to select high/low value without sort or
- index using a sequential scan for highest/lowest values
* Precompile SQL functions to avoid overhead
* Create utility to compute accurate random_page_cost value
* Improve ability to display optimizer analysis using OPTIMIZER_DEBUG
could hit disk before WAL is written.
* Add a script to ask system configuration questions and tune postgresql.conf
-* -Merge xmin/xmax/cmin/cmax back into three header fields
* Consider ways of storing rows more compactly on disk
- o -Support a smaller header for short variable-length fields
o Reduce the row header size?
o Consider reducing on-disk varlena length from four bytes to
two because a heap row cannot be more than 64k in length
http://archives.postgresql.org/pgsql-docs/2006-12/msg00152.php
-* -Move NAMEDATALEN from postgres_ext.h to pg_config_manual.h
* Consider making NAMEDATALEN more configurable in future releases
* Update our code to handle 64-bit timezone files to match the zic
source code, which now uses them
http://archives.postgresql.org/pgsql-patches/2007-05/msg00046.php
-* -Fix problem with excessive logging during SSL disconnection
-
- http://archives.postgresql.org/pgsql-bugs/2006-12/msg00122.php
- http://archives.postgresql.org/pgsql-bugs/2007-05/msg00065.php
-
* Support scoped IPv6 addresses
http://archives.postgresql.org/pgsql-bugs/2007-05/msg00111.php
http://archives.postgresql.org/pgsql-patches/2005-06/msg00027.php
- o -Add long file support for binary pg_dump output
* Wire Protocol Changes
<body bgcolor="#FFFFFF" text="#000000" link="#FF0000" vlink="#A00000" alink="#0000FF">
<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/>
-Last updated: Mon Nov 26 18:31:05 EST 2007
+Last updated: Fri Dec 7 12:52:05 EST 2007
</p>
<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>.
</li></ul>
</li><li>Configuration files
<ul>
- <li>-<em>Allow commenting of variables in postgresql.conf to restore them</em>
- to defaults
- </li><li>Allow pg_hba.conf to specify host names along with IP addresses
+ <li>Allow pg_hba.conf to specify host names along with IP addresses
<p> Host name lookup could occur when the postmaster reads the
pg_hba.conf file, or when the backend starts. Another
solution would be to reverse lookup the connection IP and
requires a tool that will call that function and connect to each
database to find the objects in each database for that tablespace.
</p>
- </li><li>-<em>Add a GUC variable to control the tablespace for temporary objects</em>
- and sort files
</li><li>Allow WAL replay of CREATE TABLESPACE to work when the directory
structure on the recovery computer is different from the original
</li><li>Allow per-tablespace quotas
</p>
</li></ul>
</li></ul>
-<h1><a name="section_3">Monitoring</a></h1>
-
-<ul>
- <li>-<em>Allow server log information to be output as CSV format</em>
- </li><li>-<em>Add ability to monitor the use of temporary sort files</em>
-</li></ul>
-<h1><a name="section_4">Data Types</a></h1>
+<h1><a name="section_3">Data Types</a></h1>
<ul>
<li>Change NUMERIC to enforce the maximum precision
</li><li>Fix data types where equality comparison isn't intuitive, e.g. box
</li><li>Allow user-defined types to specify a type modifier at table creation
time
- </li><li>-<em>Allow user-defined types to accept 'typmod' parameters</em>
-<p> <a href="http://archives.postgresql.org/pgsql-hackers/2005-08/msg01142.php">http://archives.postgresql.org/pgsql-hackers/2005-08/msg01142.php</a>
- <a href="http://archives.postgresql.org/pgsql-hackers/2005-09/msg00012.php">http://archives.postgresql.org/pgsql-hackers/2005-09/msg00012.php</a>
- <a href="http://archives.postgresql.org/pgsql-hackers/2006-08/msg00149.php">http://archives.postgresql.org/pgsql-hackers/2006-08/msg00149.php</a>
-</p>
</li><li>Add support for public SYNONYMs
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-03/msg00519.php">http://archives.postgresql.org/pgsql-hackers/2006-03/msg00519.php</a>
</p>
</li><li>Fix CREATE CAST on DOMAINs
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-05/msg00072.php">http://archives.postgresql.org/pgsql-hackers/2006-05/msg00072.php</a>
<a href="http://archives.postgresql.org/pgsql-hackers/2006-09/msg01681.php">http://archives.postgresql.org/pgsql-hackers/2006-09/msg01681.php</a>
-</p>
- </li><li>-<em>Add Globally/Universally Unique Identifier (GUID/UUID)</em>
-<p> <a href="http://archives.postgresql.org/pgsql-patches/2006-09/msg00209.php">http://archives.postgresql.org/pgsql-patches/2006-09/msg00209.php</a>
- <a href="http://archives.postgresql.org/pgsql-general/2007-01/msg00853.php">http://archives.postgresql.org/pgsql-general/2007-01/msg00853.php</a>
</p>
</li><li>Add support for SQL-standard GENERATED/IDENTITY columns
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-07/msg00543.php">http://archives.postgresql.org/pgsql-hackers/2006-07/msg00543.php</a>
<a href="http://archives.postgresql.org/pgsql-hackers/2007-05/msg00344.php">http://archives.postgresql.org/pgsql-hackers/2007-05/msg00344.php</a>
<a href="http://archives.postgresql.org/pgsql-patches/2007-05/msg00076.php">http://archives.postgresql.org/pgsql-patches/2007-05/msg00076.php</a>
</p>
- </li><li>-<em>Support a data type with specific enumerated values (ENUM)</em>
</li><li>Improve XML support
<p> <a href="http://developer.postgresql.org/index.php/XML_Support">http://developer.postgresql.org/index.php/XML_Support</a>
</p>
</li><li>Add support for arrays of domains
<p> <a href="http://archives.postgresql.org/pgsql-patches/2007-05/msg00114.php">http://archives.postgresql.org/pgsql-patches/2007-05/msg00114.php</a>
</p>
- </li><li>-<em>Add support for arrays of complex types</em>
</li><li>Allow single-byte header storage for array elements
</li></ul>
</li><li>Binary Data
</li></ul>
</li><li>MONEY data type
<ul>
- <li>-<em>Make 64-bit version of the MONEY data type</em>
- <ul>
- <li>Add locale-aware MONEY type, and support multiple currencies
+ <li>Add locale-aware MONEY type, and support multiple currencies
<p> <a href="http://archives.postgresql.org/pgsql-general/2005-08/msg01432.php">http://archives.postgresql.org/pgsql-general/2005-08/msg01432.php</a>
<a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg01181.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg01181.php</a>
</p>
- </li><li>MONEY dumps in a locale-specific format making it difficult to
+ </li><li>MONEY dumps in a locale-specific format making it difficult to
restore to a system with a different locale
- </li><li>Allow MONEY to be cast to/from other numeric data types
- </li></ul>
+ </li><li>Allow MONEY to be cast to/from other numeric data types
</li></ul>
</li></ul>
</li></ul>
-<h1><a name="section_5">Functions</a></h1>
+<h1><a name="section_4">Functions</a></h1>
<ul>
<li>Allow INET subnet tests using non-constants to be indexed
</li><li>to_char(INTERVAL '43 hours 20 minutes', 'WK:DD:HR:MI') => 0:1:19:20
</li><li>to_char(INTERVAL '3 years 5 months','MM') => 41
</li></ul>
- </li><li>-<em>Add ISO day of week format 'ID' to to_char() where Monday = 1</em>
- </li><li>-<em>Add a field 'isoyear' to extract(), based on the ISO week</em>
</li><li>Implement inlining of set-returning functions defined in SQL
</li><li>Allow SQL-language functions to return results from RETURNING queries
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-10/msg00665.php">http://archives.postgresql.org/pgsql-hackers/2006-10/msg00665.php</a>
<p> <a href="http://archives.postgresql.org/pgsql-patches/2007-08/msg00012.php">http://archives.postgresql.org/pgsql-patches/2007-08/msg00012.php</a>
</p>
</li></ul>
-<h1><a name="section_6">Multi-Language Support</a></h1>
+<h1><a name="section_5">Multi-Language Support</a></h1>
<ul>
<li>Add NCHAR (as distinguished from ordinary varchar),
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg00767.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg00767.php</a>
</p>
</li></ul>
-<h1><a name="section_7">Views / Rules</a></h1>
+<h1><a name="section_6">Views / Rules</a></h1>
<ul>
<li>Automatically create rules on views so they are updateable, per SQL99
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-09/msg00577.php">http://archives.postgresql.org/pgsql-hackers/2007-09/msg00577.php</a>
</p>
</li></ul>
-<h1><a name="section_8">SQL Commands</a></h1>
+<h1><a name="section_7">SQL Commands</a></h1>
<ul>
<li>Add CORRESPONDING BY to UNION/INTERSECT/EXCEPT
</p>
</li><li>Add NOVICE output level for helpful messages like automatic sequence/index
creation
- </li><li>-<em>Add RESET SESSION command to reset all session state</em>
</li><li>Add GUC to issue notice about statements that use unjoined tables
</li><li>Allow EXPLAIN to identify tables that were skipped because of
constraint_exclusion
</li></ul>
</li><li>CLUSTER
<ul>
- <li>-<em>Make CLUSTER preserve recently-dead tuples per MVCC requirements</em>
- </li><li>Automatically maintain clustering on a table
+ <li>Automatically maintain clustering on a table
<p> This might require some background daemon to maintain clustering
during periods of low usage. It might also require tables to be only
partially filled for easier reorganization. Another idea would
</p>
</li><li>%Add VERBOSE option to report tables as they are processed,
like VACUUM VERBOSE
- </li><li>-<em>Add more logical syntax CLUSTER table USING index;</em>
- support current syntax for backward compatibility
</li></ul>
</li><li>COPY
<ul>
</li></ul>
</li><li>CURSOR
<ul>
- <li>-<em>Allow UPDATE/DELETE WHERE CURRENT OF cursor</em>
- </li><li>Prevent DROP TABLE from dropping a row referenced by its own open
+ <li>Prevent DROP TABLE from dropping a row referenced by its own open
cursor?
</li></ul>
</li><li>INSERT
<a href="http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php">http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php</a>
</p>
</li><li>Add single-step debugging of functions
- </li><li>-<em>Add support for MOVE cursors</em>
</li><li>Add support for SCROLL cursors
</li><li>Add support for WITH HOLD cursors
</li><li>Allow RETURN to return row or record functions
</li><li>Add PL/PythonU tracebacks
<p> <a href="http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php">http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php</a>
</p>
- </li><li>-<em>Allow PL/PythonU to return boolean rather than 1/0</em>
</li><li>Allow data to be passed in native language formats, rather
than only text
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php">http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php</a>
</li></ul>
</li></ul>
</li></ul>
-<h1><a name="section_9">Clients</a></h1>
+<h1><a name="section_8">Clients</a></h1>
<ul>
<li>Have pg_ctl look at PGHOST in case it is a socket directory?
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2004-11/msg00014.php">http://archives.postgresql.org/pgsql-hackers/2004-11/msg00014.php</a>
<a href="http://archives.postgresql.org/pgsql-hackers/2004-11/msg00014.php">http://archives.postgresql.org/pgsql-hackers/2004-11/msg00014.php</a>
</p>
- </li><li>-<em>Allow psql \pset boolean variables to set to fixed values, rather</em>
- than toggle
</li><li>Consistently display privilege information for all objects in psql
</li><li>Add auto-expanded mode so expanded output is used if the row
length is wider than the screen width.
</li><li>Stop dumping CASCADE on DROP TYPE commands in clean mode
</li><li>Allow pg_dump --clean to drop roles that own objects or have
privileges
- </li><li>-<em>Add -f to pg_dumpall</em>
</li><li>Change pg_dump so that a comment on the dumped database is
applied to the loaded database, even if the database has a
different name. This will require new backend syntax, perhaps
</p>
</li></ul>
</p></ul>
-<h1><a name="section_10">Triggers</a></h1>
+<h1><a name="section_9">Triggers</a></h1>
<ul>
<li>Add deferred trigger queue file
<p> <a href="http://archives.postgresql.org/pgsql-general/2007-02/msg01466.php">http://archives.postgresql.org/pgsql-general/2007-02/msg01466.php</a>
</p>
</li></ul>
-<h1><a name="section_11">Dependency Checking</a></h1>
-
-<ul>
- <li>-<em>Flush cached query plans when the dependent objects change or</em>
- when new ANALYZE statistics are available
- </li><li>-<em>Track dependencies in function bodies and recompile/invalidate</em>
- </li><li>-<em>Invalidate prepared queries, like INSERT, when the table definition</em>
- is altered
-</li></ul>
-<h1><a name="section_12">Indexes</a></h1>
+<h1><a name="section_10">Indexes</a></h1>
<ul>
<li>Add UNIQUE capability to non-btree indexes
<p> <a href="http://archives.postgresql.org/pgsql-patches/2005-07/msg00512.php">http://archives.postgresql.org/pgsql-patches/2005-07/msg00512.php</a>
<a href="http://archives.postgresql.org/pgsql-hackers/2006-12/msg01107.php">http://archives.postgresql.org/pgsql-hackers/2006-12/msg01107.php</a>
</p>
- </li><li>-<em>Allow use of indexes to search for NULLs</em>
</li><li>Allow accurate statistics to be collected on indexes with more than
one column or expression indexes, perhaps using per-index statistics
<p> <a href="http://archives.postgresql.org/pgsql-performance/2006-10/msg00222.php">http://archives.postgresql.org/pgsql-performance/2006-10/msg00222.php</a>
<a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg01131.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg01131.php</a>
</p>
- </li><li>-<em>Allow the creation of indexes with mixed ascending/descending</em>
- specifiers
</li><li>Consider compressing indexes by storing key values duplicated in
several rows as a single index entry
<p> This is difficult because it requires datatype-specific knowledge.
</p>
</li></ul>
</li></ul>
-<h1><a name="section_13">Fsync</a></h1>
+<h1><a name="section_11">Fsync</a></h1>
<ul>
<li>Improve commit_delay handling to reduce fsync()
</p>
</li><li>%Add an option to sync() before fsync()'ing checkpoint files
</li><li>Add program to test if fsync has a delay compared to non-fsync
- </li><li>-<em>Reduce checkpoint performance degredation by forcing data to disk</em>
- more evenly
</li></ul>
-<h1><a name="section_14">Cache Usage</a></h1>
+<h1><a name="section_12">Cache Usage</a></h1>
<ul>
<li>Allow free-behind capability for large sequential scans to avoid
</li><li>Query execute plan
</li><li>Query results
</li></ul>
- </li><li>-<em>Allow sequential scans to take advantage of other concurrent</em>
- sequential scans, also called "Synchronised Scanning"
</li><li>Consider increasing internal areas when shared buffers is increased
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2005-10/msg01419.php">http://archives.postgresql.org/pgsql-hackers/2005-10/msg01419.php</a>
</p>
<a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php</a>
</p>
</li></ul>
-<h1><a name="section_15">Vacuum</a></h1>
+<h1><a name="section_13">Vacuum</a></h1>
<ul>
<li>Improve speed with indexes
in hopes that empty pages at the end can be truncated by VACUUM
</li><li>Allow FSM page return free space based on table clustering, to assist
in maintaining clustering?
- </li><li>-<em>Consider shrinking expired tuples to just their headers</em>
- </li><li>-<em>Allow heap reuse of UPDATEd rows if no indexed columns are changed,</em>
- and old and new versions are on the same heap page
</li><li>Improve dead row detection during multi-statement transactions usage
<p> <a href="http://archives.postgresql.org/pgsql-patches/2007-03/msg00358.php">http://archives.postgresql.org/pgsql-patches/2007-03/msg00358.php</a>
</p>
- </li><li>-<em>Reduce XID consumption of read-only queries</em>
</li><li>Prevent long-lived temporary tables from causing frozen-xid advancement
starvation
</li></ul>
</li><li>%Issue log message to suggest VACUUM FULL if a table is nearly
empty?
</li><li>Consider logging activity either to the logs or a system view
- </li><li>-<em>Turn on by default</em>
- </li><li>-<em>Allow multiple vacuums so large tables do not starve small</em>
- tables
</li><li>Improve control of auto-vacuum
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-12/msg00876.php">http://archives.postgresql.org/pgsql-hackers/2006-12/msg00876.php</a>
</p>
</p>
</li></ul>
</li></ul>
-<h1><a name="section_16">Locking</a></h1>
+<h1><a name="section_14">Locking</a></h1>
<ul>
<li>Fix priority ordering of read and write light-weight locks (Neil)
</li><li>Add idle_in_transaction_timeout GUC so locks are not held for long
periods of time
</li></ul>
-<h1><a name="section_17">Startup Time Improvements</a></h1>
+<h1><a name="section_15">Startup Time Improvements</a></h1>
<ul>
<li>Experiment with multi-threaded backend for backend creation [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?thread">thread</a>]
existing backends is one of the difficulties with a backend approach.
</p>
</li></ul>
-<h1><a name="section_18">Write-Ahead Log</a></h1>
+<h1><a name="section_16">Write-Ahead Log</a></h1>
<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>]
entire rows
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg01589.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg01589.php</a>
</p>
- </li><li>-<em>Allow the pg_xlog directory location to be specified during initdb</em>
- with a symlink back to the /data location
</li><li>Allow WAL information to recover corrupted pg_controldata
<p> <a href="http://archives.postgresql.org/pgsql-patches/2006-06/msg00025.php">http://archives.postgresql.org/pgsql-patches/2006-06/msg00025.php</a>
</p>
rotation to fsync again. One idea is to write the WAL to different
offsets that might reduce the rotational delay.
</p>
- </li><li>-<em>Allow buffered WAL writes and fsync</em>
</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>]
<p> Allow tables to bypass WAL writes and just fsync() dirty pages on
of indexes on TOAST tables.
</p>
</li></ul>
-<h1><a name="section_19">Optimizer / Executor</a></h1>
+<h1><a name="section_17">Optimizer / Executor</a></h1>
<ul>
<li>Improve selectivity functions for geometric operators
- </li><li>-<em>Allow ORDER BY ... LIMIT # to select high/low value without sort or</em>
- index using a sequential scan for highest/lowest values
</li><li>Precompile SQL functions to avoid overhead
</li><li>Create utility to compute accurate random_page_cost value
</li><li>Improve ability to display optimizer analysis using OPTIMIZER_DEBUG
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg00096.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg00096.php</a>
</p>
</li></ul>
-<h1><a name="section_20">Miscellaneous Performance</a></h1>
+<h1><a name="section_18">Miscellaneous Performance</a></h1>
<ul>
<li>Do async I/O for faster random read-ahead of data
could hit disk before WAL is written.
</p>
</li><li>Add a script to ask system configuration questions and tune postgresql.conf
- </li><li>-<em>Merge xmin/xmax/cmin/cmax back into three header fields</em>
</li><li>Consider ways of storing rows more compactly on disk
<ul>
- <li>-<em>Support a smaller header for short variable-length fields</em>
- </li><li>Reduce the row header size?
+ <li>Reduce the row header size?
</li><li>Consider reducing on-disk varlena length from four bytes to
two because a heap row cannot be more than 64k in length
</li></ul>
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php</a>
</p>
</li></ul>
-<h1><a name="section_21">Source Code</a></h1>
+<h1><a name="section_19">Source Code</a></h1>
<ul>
<li>Add use of 'const' for variables in source tree
</li><li>Consider changing documentation format from SGML to XML
<p> <a href="http://archives.postgresql.org/pgsql-docs/2006-12/msg00152.php">http://archives.postgresql.org/pgsql-docs/2006-12/msg00152.php</a>
</p>
- </li><li>-<em>Move NAMEDATALEN from postgres_ext.h to pg_config_manual.h</em>
</li><li>Consider making NAMEDATALEN more configurable in future releases
</li><li>Update our code to handle 64-bit timezone files to match the zic
source code, which now uses them
</li><li>Have configure choose integer datetimes by default
<p> <a href="http://archives.postgresql.org/pgsql-patches/2007-05/msg00046.php">http://archives.postgresql.org/pgsql-patches/2007-05/msg00046.php</a>
-</p>
- </li><li>-<em>Fix problem with excessive logging during SSL disconnection</em>
-<p> <a href="http://archives.postgresql.org/pgsql-bugs/2006-12/msg00122.php">http://archives.postgresql.org/pgsql-bugs/2006-12/msg00122.php</a>
- <a href="http://archives.postgresql.org/pgsql-bugs/2007-05/msg00065.php">http://archives.postgresql.org/pgsql-bugs/2007-05/msg00065.php</a>
</p>
</li><li>Support scoped IPv6 addresses
<p> <a href="http://archives.postgresql.org/pgsql-bugs/2007-05/msg00111.php">http://archives.postgresql.org/pgsql-bugs/2007-05/msg00111.php</a>
</li><li>Improve signal handling
<p> <a href="http://archives.postgresql.org/pgsql-patches/2005-06/msg00027.php">http://archives.postgresql.org/pgsql-patches/2005-06/msg00027.php</a>
</p>
- </li><li>-<em>Add long file support for binary pg_dump output</em>
</li></ul>
</li><li>Wire Protocol Changes
<ul>
of result sets using new statement protocol
</li></ul>
</li></ul>
-<h1><a name="section_22">Exotic Features</a></h1>
+<h1><a name="section_20">Exotic Features</a></h1>
<ul>
<li>Add pre-parsing phase that converts non-ISO syntax to supported
<a href="http://archives.postgresql.org/pgsql-hackers/2006-10/msg01527.php">http://archives.postgresql.org/pgsql-hackers/2006-10/msg01527.php</a>
</p>
</li></ul>
-<h1><a name="section_23">Features We Do <u>Not</u> Want</a></h1>
+<h1><a name="section_21">Features We Do <u>Not</u> Want</a></h1>
<ul>
<li>All backends running as threads in a single process (not wanted)