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
1 changed files with 48 additions and 40 deletions

View File

@ -1,7 +1,7 @@
PostgreSQL TODO List
====================
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
http://www.postgresql.org/docs/faqs.TODO.html.
@ -20,7 +20,7 @@ http://developer.postgresql.org.
Administration
==============
* Allow major upgrades without dump/reload, perhaps using pg_upgrade
* Allow major upgrades without dump/reload, perhaps using pg_upgrade
[pg_upgrade]
* Check for unreferenced table files created by transactions that were
in-progress when the server terminated abruptly
@ -28,7 +28,7 @@ Administration
http://archives.postgresql.org/pgsql-patches/2006-06/msg00096.php
* 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
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
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.
* Allow custom variable classes that can restrict who can set the values
@ -171,11 +171,7 @@ Administration
Monitoring
==========
* Allow server log information to be output as INSERT statements
This would allow server log information to be easily loaded into
a database for analysis.
* -Allow server log information to be output as CSV format
* -Add ability to monitor the use of temporary sort files
@ -239,16 +235,16 @@ Data Types
* Dates and Times
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
o Allow TIMESTAMP WITH TIME ZONE to store the original 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.
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
o Have timestamp subtraction not call justify_hours()?
@ -358,12 +354,12 @@ Functions
requested
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
the uneven number of days in a month.
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 '3 years 5 months','MM') => 41
@ -531,7 +527,7 @@ SQL Commands
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
* Allow EXPLAIN to identify tables that were skipped because of
constraint_exclusion
* Allow EXPLAIN output to be more easily processed by scripts, perhaps XML
* Enable standard_conforming_strings
@ -670,8 +666,8 @@ SQL Commands
On crash recovery, the table involved in the COPY would
be removed or have its heap and index files truncated. One
issue is that no other backend should be able to add to
the table at the same time, which is something that is
issue is that no other backend should be able to add to
the table at the same time, which is something that is
currently allowed.
@ -795,7 +791,7 @@ SQL Commands
o Add support for polymorphic arguments and return types to
languages other than PL/PgSQL
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
o Add PL/PythonU tracebacks
@ -843,7 +839,7 @@ Clients
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.
length is wider than the screen width.
Consider using auto-expanded mode for backslash commands like \df+.
@ -913,13 +909,13 @@ Clients
o Add PQescapeIdentifierConn()
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
o Allow statement results to be automatically batched to the client
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
use of the first result rows while the rest are transferred, or
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
Currently indexes do not have enough tuple visibility information
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
to indicate if a tuple is currently visible to all transactions
when the first valid heap lookup happens. This bit would have to
be cleared when a heap tuple is expired.
Currently indexes do not have enough tuple visibility information
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
to indicate if a tuple is currently visible to all transactions
when the first valid heap lookup happens. This bit would have to
be cleared when a heap tuple is expired.
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
add someday to determine which heap pages need vacuuming. Frequently
accessed bitmaps would have to be stored in shared memory. One 8k
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:
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/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?
* 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
http://archives.postgresql.org/pgsql-hackers/2007-08/msg00516.php
* Auto-vacuum
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]
Allow tables to bypass WAL writes and just fsync() dirty pages on
commit. This should be implemented using ALTER TABLE, e.g. ALTER
TABLE PERSISTENCE [ DROP | TRUNCATE | DEFAULT ]. Tables using
non-default logging should not use referential integrity with
commit. This should be implemented using ALTER TABLE, e.g. ALTER
TABLE PERSISTENCE [ DROP | TRUNCATE | DEFAULT ]. Tables using
non-default logging should not use referential integrity with
default-logging tables. A table without dirty buffers during a
crash could perhaps avoid the drop/truncate.
* Allow WAL logging to be turned off for a table, but the table would
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
crash recovery. Readers can continue accessing the table. Such
tables probably cannot have indexes. One complexity is the handling
crash recovery. Readers can continue accessing the table. Such
tables probably cannot have indexes. One complexity is the handling
of indexes on TOAST tables.
@ -1373,7 +1381,7 @@ Optimizer / Executor
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
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 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
* Consider increasing NUM_CLOG_BUFFERS
@ -1486,7 +1494,7 @@ Source Code
* -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
* Update our code to handle 64-bit timezone files to match the zic
source code, which now uses them
* 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
server requires multiple processes and a stable pool of resources to
run reliabily and efficiently. Stripping down the PostgreSQL server
to run in the same process address space as the client application
run reliabily and efficiently. Stripping down the PostgreSQL server
to run in the same process address space as the client application
would add too much complexity and failure cases.