From 76534c61b3cd54faa347aac673c3c23ba758a256 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Tue, 28 Aug 2007 03:00:36 +0000 Subject: [PATCH] Update TODO with lost change, mostly completed items and whitespace corrections. Not sure why these were not in CVS. Researching. --- doc/TODO | 88 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 48 insertions(+), 40 deletions(-) diff --git a/doc/TODO b/doc/TODO index deffc49ac0..79ee582e79 100644 --- a/doc/TODO +++ b/doc/TODO @@ -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.