Update TODO with lost change, mostly completed items and whitespace

corrections.  Not sure why these were not in CVS.  Researching.
This commit is contained in:
Bruce Momjian 2007-08-28 03:00:36 +00:00
parent 28662b850c
commit 76534c61b3

View File

@ -1,7 +1,7 @@
PostgreSQL TODO List PostgreSQL TODO List
==================== ====================
Current maintainer: Bruce Momjian (bruce@momjian.us) Current maintainer: Bruce Momjian (bruce@momjian.us)
Last updated: Wed Aug 1 19:13:20 EDT 2007 Last updated: Mon Aug 27 22:56:24 EDT 2007
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.
@ -20,7 +20,7 @@ http://developer.postgresql.org.
Administration Administration
============== ==============
* Allow major upgrades without dump/reload, perhaps using pg_upgrade * Allow major upgrades without dump/reload, perhaps using pg_upgrade
[pg_upgrade] [pg_upgrade]
* Check for unreferenced table files created by transactions that were * Check for unreferenced table files created by transactions that were
in-progress when the server terminated abruptly in-progress when the server terminated abruptly
@ -28,7 +28,7 @@ Administration
http://archives.postgresql.org/pgsql-patches/2006-06/msg00096.php http://archives.postgresql.org/pgsql-patches/2006-06/msg00096.php
* Allow administrators to safely terminate individual sessions either * Allow administrators to safely terminate individual sessions either
via an SQL function or SIGTERM via an SQL function or SIGTERM
Lock table corruption following SIGTERM of an individual backend Lock table corruption following SIGTERM of an individual backend
has been reported in 8.0. A possible cause was fixed in 8.1, but has been reported in 8.0. A possible cause was fixed in 8.1, but
@ -73,7 +73,7 @@ Administration
Currently ALTER USER and ALTER DATABASE support per-user and Currently ALTER USER and ALTER DATABASE support per-user and
per-database defaults. Consider adding per-user-and-database per-database defaults. Consider adding per-user-and-database
defaults so things like search_path can be defaulted for a defaults so things like search_path can be defaulted for a
specific user connecting to a specific database. specific user connecting to a specific database.
* Allow custom variable classes that can restrict who can set the values * Allow custom variable classes that can restrict who can set the values
@ -171,11 +171,7 @@ Administration
Monitoring Monitoring
========== ==========
* Allow server log information to be output as INSERT statements * -Allow server log information to be output as CSV format
This would allow server log information to be easily loaded into
a database for analysis.
* -Add ability to monitor the use of temporary sort files * -Add ability to monitor the use of temporary sort files
@ -239,16 +235,16 @@ Data Types
* Dates and Times * Dates and Times
o Allow infinite dates and intervals just like infinite timestamps o Allow infinite dates and intervals just like infinite timestamps
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 [timezone]
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.
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
format format
o Have timestamp subtraction not call justify_hours()? o Have timestamp subtraction not call justify_hours()?
@ -358,12 +354,12 @@ Functions
requested requested
Some special format flag would be required to request such Some special format flag would be required to request such
accumulation. Such functionality could also be added to EXTRACT. accumulation. Such functionality could also be added to EXTRACT.
Prevent accumulation that crosses the month/day boundary because of Prevent accumulation that crosses the month/day boundary because of
the uneven number of days in a month. the uneven number of days in a month.
o to_char(INTERVAL '1 hour 5 minutes', 'MI') => 65 o to_char(INTERVAL '1 hour 5 minutes', 'MI') => 65
o to_char(INTERVAL '43 hours 20 minutes', 'MI' ) => 2600 o to_char(INTERVAL '43 hours 20 minutes', 'MI' ) => 2600
o to_char(INTERVAL '43 hours 20 minutes', 'WK:DD:HR:MI') => 0:1:19:20 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 o to_char(INTERVAL '3 years 5 months','MM') => 41
@ -531,7 +527,7 @@ SQL Commands
creation creation
* -Add RESET SESSION command to reset all session state * -Add RESET SESSION command to reset all session state
* Add GUC to issue notice about statements that use unjoined tables * Add GUC to issue notice about statements that use unjoined tables
* Allow EXPLAIN to identify tables that were skipped because of * Allow EXPLAIN to identify tables that were skipped because of
constraint_exclusion constraint_exclusion
* Allow EXPLAIN output to be more easily processed by scripts, perhaps XML * Allow EXPLAIN output to be more easily processed by scripts, perhaps XML
* Enable standard_conforming_strings * Enable standard_conforming_strings
@ -670,8 +666,8 @@ SQL Commands
On crash recovery, the table involved in the COPY would On crash recovery, the table involved in the COPY would
be removed or have its heap and index files truncated. One be removed or have its heap and index files truncated. One
issue is that no other backend should be able to add to issue is that no other backend should be able to add to
the table at the same time, which is something that is the table at the same time, which is something that is
currently allowed. currently allowed.
@ -795,7 +791,7 @@ SQL Commands
o Add support for polymorphic arguments and return types to o Add support for polymorphic arguments and return types to
languages other than PL/PgSQL languages other than PL/PgSQL
o Add capability to create and call PROCEDURES o Add capability to create and call PROCEDURES
o Add support for OUT and INOUT parameters to languages other o Add support for OUT and INOUT parameters to languages other
than PL/PgSQL than PL/PgSQL
o Add PL/PythonU tracebacks o Add PL/PythonU tracebacks
@ -843,7 +839,7 @@ Clients
than toggle than toggle
o Consistently display privilege information for all objects in psql o Consistently display privilege information for all objects in psql
o Add auto-expanded mode so expanded output is used if the row o Add auto-expanded mode so expanded output is used if the row
length is wider than the screen width. length is wider than the screen width.
Consider using auto-expanded mode for backslash commands like \df+. Consider using auto-expanded mode for backslash commands like \df+.
@ -913,13 +909,13 @@ Clients
o Add PQescapeIdentifierConn() o Add PQescapeIdentifierConn()
o Prevent PQfnumber() from lowercasing unquoted the column name o Prevent PQfnumber() from lowercasing unquoted the column name
PQfnumber() should never have been doing lowercasing, but PQfnumber() should never have been doing lowercasing, but
historically it has so we need a way to prevent it historically it has so we need a way to prevent it
o Allow statement results to be automatically batched to the client o Allow statement results to be automatically batched to the client
Currently all statement results are transferred to the libpq Currently all statement results are transferred to the libpq
client before libpq makes the results available to the client before libpq makes the results available to the
application. This feature would allow the application to make application. This feature would allow the application to make
use of the first result rows while the rest are transferred, or use of the first result rows while the rest are transferred, or
held on the server waiting for them to be requested by libpq. held on the server waiting for them to be requested by libpq.
@ -1123,20 +1119,27 @@ Cache Usage
* Allow data to be pulled directly from indexes * Allow data to be pulled directly from indexes
Currently indexes do not have enough tuple visibility information Currently indexes do not have enough tuple visibility information
to allow data to be pulled from the index without also accessing to allow data to be pulled from the index without also accessing
the heap. One way to allow this is to set a bit on index tuples the heap. One way to allow this is to set a bit on index tuples
to indicate if a tuple is currently visible to all transactions to indicate if a tuple is currently visible to all transactions
when the first valid heap lookup happens. This bit would have to when the first valid heap lookup happens. This bit would have to
be cleared when a heap tuple is expired. be cleared when a heap tuple is expired.
Another idea is to maintain a bitmap of heap pages where all rows Another idea is to maintain a bitmap of heap pages where all rows
are visible to all backends, and allow index lookups to reference are visible to all backends, and allow index lookups to reference
that bitmap to avoid heap lookups, perhaps the same bitmap we might that bitmap to avoid heap lookups, perhaps the same bitmap we might
add someday to determine which heap pages need vacuuming. Frequently add someday to determine which heap pages need vacuuming. Frequently
accessed bitmaps would have to be stored in shared memory. One 8k accessed bitmaps would have to be stored in shared memory. One 8k
page of bitmaps could track 512MB of heap pages. page of bitmaps could track 512MB of heap pages.
A third idea would be for a heap scan to check if all rows are visible
and if so set a per-table flag which can be checked by index scans.
Any change to the table would have to clear the flag. To detect
changes during the heap scan a counter could be set at the start and
checked at the end --- if it is the same, the table has not been
modified --- any table change would increment the counter.
* Consider automatic caching of statements at various levels: * Consider automatic caching of statements at various levels:
o Parsed query tree o Parsed query tree
@ -1215,12 +1218,17 @@ Vacuum
http://archives.postgresql.org/pgsql-hackers/2006-06/msg01305.php http://archives.postgresql.org/pgsql-hackers/2006-06/msg01305.php
http://archives.postgresql.org/pgsql-hackers/2006-06/msg01534.php http://archives.postgresql.org/pgsql-hackers/2006-06/msg01534.php
* Reuse index tuples that point to heap tuples that are not visible to * Reuse index tuples that point to heap tuples that are not visible to
anyone? anyone?
* Improve dead row detection during multi-statement transactions usage * Improve dead row detection during multi-statement transactions usage
http://archives.postgresql.org/pgsql-patches/2007-03/msg00358.php http://archives.postgresql.org/pgsql-patches/2007-03/msg00358.php
* Reduce XID consumption of read-only queries
http://archives.postgresql.org/pgsql-hackers/2007-08/msg00516.php
* Auto-vacuum * Auto-vacuum
o Use free-space map information to guide refilling o Use free-space map information to guide refilling
@ -1335,19 +1343,19 @@ Write-Ahead Log
might be dropped or truncated during crash recovery [walcontrol] might be dropped or truncated during crash recovery [walcontrol]
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
TABLE PERSISTENCE [ DROP | TRUNCATE | DEFAULT ]. Tables using TABLE PERSISTENCE [ DROP | TRUNCATE | DEFAULT ]. 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.
* 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 [walcontrol]
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.
@ -1373,7 +1381,7 @@ Optimizer / Executor
This might replace GEQO, http://sixdemonbag.org/Djinni. This might replace GEQO, http://sixdemonbag.org/Djinni.
* Improve merge join performance by allowing mark/restore of * Improve merge join performance by allowing mark/restore of
tuple sources tuple sources
http://archives.postgresql.org/pgsql-hackers/2007-01/msg00096.php http://archives.postgresql.org/pgsql-hackers/2007-01/msg00096.php
@ -1411,7 +1419,7 @@ Miscellaneous Performance
o -Support a smaller header for short variable-length fields o -Support a smaller header for short variable-length fields
o Reduce the row header size? o Reduce the row header size?
o Consider reducing on-disk varlena length from four bytes to o Consider reducing on-disk varlena length from four bytes to
two because a heap row cannot be more than 64k in length two because a heap row cannot be more than 64k in length
* Consider increasing NUM_CLOG_BUFFERS * Consider increasing NUM_CLOG_BUFFERS
@ -1486,7 +1494,7 @@ Source Code
* -Move NAMEDATALEN from postgres_ext.h to pg_config_manual.h * -Move NAMEDATALEN from postgres_ext.h to pg_config_manual.h
* Consider making NAMEDATALEN more configurable in future releases * Consider making NAMEDATALEN more configurable in future releases
* Update our code to handle 64-bit timezone files to match the zic * Update our code to handle 64-bit timezone files to match the zic
source code, which now uses them source code, which now uses them
* Have configure choose integer datetimes by default * Have configure choose integer datetimes by default
@ -1597,6 +1605,6 @@ Features We Do _Not_ Want
While PostgreSQL clients runs fine in limited-resource environments, the While PostgreSQL clients runs fine in limited-resource environments, the
server requires multiple processes and a stable pool of resources to server requires multiple processes and a stable pool of resources to
run reliabily and efficiently. Stripping down the PostgreSQL server run reliabily and efficiently. Stripping down the PostgreSQL server
to run in the same process address space as the client application to run in the same process address space as the client application
would add too much complexity and failure cases. would add too much complexity and failure cases.