From 88d7b711a01683da6efe76d01c238c0befd18e4b Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Fri, 26 Aug 2005 18:59:48 +0000 Subject: [PATCH] Remove completed items: < * -Allow limits on per-db/role connections 43d41 < * -Prevent dropping user that still owns objects, or auto-drop the objects 49d46 < * -Add the client IP address and port to pg_stat_activity < * -Add session start time and last statement time to pg_stat_activity < * -Add a function that returns the start time of the postmaster 230d224 < o -Allow MIN()/MAX() on arrays < o -Modify array literal representation to handle array index lower bound < of other than one 253d244 < * -Add function to return compressed length of TOAST data values < * -Prevent to_char() on interval from returning meaningless values < < For example, to_char('1 month', 'mon') is meaningless. Basically, < most date-related parameters to to_char() are meaningless for < intervals because interval is not anchored to a date. < < * -Have views on temporary tables exist in the temporary namespace < * -Allow temporary views on non-temporary tables 329d311 < * -Add BETWEEN SYMMETRIC/ASYMMETRIC < * -Add E'' escape string marker so eventually ordinary strings can treat < backslashes literally, for portability < < * -Allow additional tables to be specified in DELETE for joins < < UPDATE already allows this (UPDATE...FROM) but we need similar < functionality in DELETE. It's been agreed that the keyword should < be USING, to avoid anything as confusing as DELETE FROM a FROM b. < 341d313 < * -Allow REINDEX to rebuild all database indexes < * -Add an option to automatically use savepoints for each statement in a < multi-statement transaction. < < When enabled, this would allow errors in multi-statement transactions < to be automatically ignored. < 426d391 < o -Allow FOR UPDATE queries to do NOWAIT locks 473d437 < o -Allow COPY to understand \x as a hex byte < o -Allow COPY to optionally include column headings in the first line < o -Allow COPY FROM ... CSV to interpret newlines and carriage < returns in data 525d485 < o -Have SHOW ALL show descriptions for server-side variables < o -Allow PL/PgSQL's RAISE function to take expressions < < Currently only constants are supported. < < o -Change PL/PgSQL to use palloc() instead of malloc() 545d499 < o -Allow PL/pgSQL EXECUTE query_var INTO record_var; 550d503 < o -Pass arrays natively instead of as text between plperl and postgres 598d550 < o -Add dumping and restoring of LOB comments 638d589 < * -Implement shared row locks and use them in RI triggers 642d592 < * -Allow triggers to be disabled < * -Add two-phase commit < < < * -Prevent inherited tables from expanding temporary subtables of other < sessions < * -Use indexes for MIN() and MAX() < < MIN/MAX queries can already be rewritten as SELECT col FROM tab ORDER < BY col {DESC} LIMIT 1. Completing this item involves doing this < transformation automatically. < < * -Use index to restrict rows returned by multi-key index when used with < non-consecutive keys to reduce heap accesses < < For an index on col1,col2,col3, and a WHERE clause of col1 = 5 and < col3 = 9, spin though the index checking for col1 and col3 matches, < rather than just col1; also called skip-scanning. < < * -Fetch heap pages matching index entries in sequential order < < Rather than randomly accessing heap pages based on index entries, mark < heap pages needing access in a bitmap and do the lookups in sequential < order. Another method would be to sort heap ctids matching the index < before accessing the heap rows. < < * -Allow non-bitmap indexes to be combined by creating bitmaps in memory < < This feature allows separate indexes to be ANDed or ORed together. This < is particularly useful for data warehousing applications that need to < query the database in an many permutations. This feature scans an index < and creates an in-memory bitmap, and allows that bitmap to be combined < with other bitmap created in a similar way. The bitmap can either index < all TIDs, or be lossy, meaning it records just page numbers and each < page tuple has to be checked for validity in a separate pass. < < * -Fix incorrect rtree results due to wrong assumptions about "over" < operator semantics 782d694 < o -Add concurrency to GIST 813d724 < * -Allow multiple blocks to be written to WAL with one write() < * -Consider use of open/fcntl(O_DIRECT) to minimize OS caching, < for WAL writes < < O_DIRECT doesn't have the same media write guarantees as fsync, so it < is in addition to the fsync method, not in place of it. < < * -Cache last known per-tuple offsets to speed long tuple access < * -Allow the size of the buffer cache used by temporary objects to be < specified as a GUC variable < < Larger local buffer cache sizes requires more efficient handling of < local cache lookups. < < * -Improve the background writer < < Allow the background writer to more efficiently write dirty buffers < from the end of the LRU cache and use a clock sweep algorithm to < write other dirty buffers to reduced checkpoint I/O < 897d788 < * -Add a warning when the free space map is too small 917d807 < o -Move into the backend code < * -Make locking of shared data structures more fine-grained < < This requires that more locks be acquired but this would reduce lock < contention, improving concurrency. < < * -Improve SMP performance on i386 machines < < i386-based SMP machines can generate excessive context switching < caused by lock failure in high concurrency situations. This may be < caused by CPU cache line invalidation inefficiencies. < 979d857 < o -Add ability to turn off full page writes < * -Eliminate WAL logging for CREATE TABLE AS when not doing WAL archiving < * -Change WAL to use 32-bit CRC, for performance reasons < < * -Use CHECK constraints to influence optimizer decisions < < CHECK constraints contain information about the distribution of values < within the table. This is also useful for implementing subtables where < a tables content is distributed across several subtables. < 1045d913 < * -ANALYZE should record a pg_statistic entry for an all-NULL column 1099d966 < * -Remove kerberos4 from source tree 1103d969 < * -Make src/port/snprintf.c thread-safe 1118d983 < * -Add C code on Unix to copy directories for use in creating new databases 1133d997 < o -Improve dlerror() reporting string --- doc/TODO | 138 +----------------------------------------- doc/src/FAQ/TODO.html | 134 +++------------------------------------- 2 files changed, 9 insertions(+), 263 deletions(-) diff --git a/doc/TODO b/doc/TODO index 4ca5718f7c..992545485e 100644 --- a/doc/TODO +++ b/doc/TODO @@ -2,7 +2,7 @@ PostgreSQL TODO List ==================== Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us) -Last updated: Fri Aug 26 14:52:30 EDT 2005 +Last updated: Fri Aug 26 14:59:39 EDT 2005 The most recent version of this document can be viewed at http://www.postgresql.org/docs/faqs.TODO.html. @@ -22,7 +22,6 @@ Administration * %Remove behavior of postmaster -o after making postmaster/postgres flags unique -* -Allow limits on per-db/role connections * %Allow pooled connections to list all prepared queries This would allow an application inheriting a pooled connection to know @@ -40,13 +39,11 @@ Administration it is unknown whether other problems exist. This item mostly requires additional testing rather than of writing any new code. -* -Prevent dropping user that still owns objects, or auto-drop the objects * %Set proper permissions on non-system schemas during db creation Currently all schemas are owned by the super-user because they are copied from the template1 database. -* -Add the client IP address and port to pg_stat_activity * Support table partitioning that allows a single table to be stored in subtables that are partitioned based on the primary key or a WHERE clause @@ -156,8 +153,6 @@ Monitoring a database for analysis. * %Add ability to monitor the use of temporary sort files -* -Add session start time and last statement time to pg_stat_activity -* -Add a function that returns the start time of the postmaster * Allow server logs to be remotely read and removed using SQL commands @@ -227,11 +222,8 @@ Data Types * Arrays o Allow NULLs in arrays - o -Allow MIN()/MAX() on arrays o Delay resolution of array expression's data type so assignment coercion can be performed on empty array expressions - o -Modify array literal representation to handle array index lower bound - of other than one * Binary Data @@ -250,7 +242,6 @@ Data Types Functions ========= -* -Add function to return compressed length of TOAST data values * Allow INET subnet tests using non-constants to be indexed * Add transaction_timestamp(), statement_timestamp(), clock_timestamp() functionality @@ -277,12 +268,6 @@ Functions 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 -* -Prevent to_char() on interval from returning meaningless values - - For example, to_char('1 month', 'mon') is meaningless. Basically, - most date-related parameters to to_char() are meaningless for - intervals because interval is not anchored to a date. - * Add sleep() function, remove from regress.c @@ -318,27 +303,14 @@ Views / Rules * Add the functionality for WITH CHECK OPTION clause of CREATE VIEW * Allow NOTIFY in rules involving conditionals -* -Have views on temporary tables exist in the temporary namespace -* -Allow temporary views on non-temporary tables * Allow VIEW/RULE recompilation when the underlying tables change SQL Commands ============ -* -Add BETWEEN SYMMETRIC/ASYMMETRIC * Change LIMIT/OFFSET and FETCH/MOVE to use int8 -* -Add E'' escape string marker so eventually ordinary strings can treat - backslashes literally, for portability - -* -Allow additional tables to be specified in DELETE for joins - - UPDATE already allows this (UPDATE...FROM) but we need similar - functionality in DELETE. It's been agreed that the keyword should - be USING, to avoid anything as confusing as DELETE FROM a FROM b. - * Add CORRESPONDING BY to UNION/INTERSECT/EXCEPT -* -Allow REINDEX to rebuild all database indexes * Add ROLLUP, CUBE, GROUPING SETS options to GROUP BY * %Allow SET CONSTRAINTS to be qualified by schema/table name * %Allow TRUNCATE ... CASCADE/RESTRICT @@ -379,12 +351,6 @@ SQL Commands creation * %Add COMMENT ON for all cluster global objects (roles, databases and tablespaces) -* -Add an option to automatically use savepoints for each statement in a - multi-statement transaction. - - When enabled, this would allow errors in multi-statement transactions - to be automatically ignored. - * %Make row-wise comparisons work per SQL spec * Add RESET CONNECTION command to reset all session state @@ -423,7 +389,6 @@ SQL Commands o Allow UPDATE tab SET ROW (col, ...) = (...) for updating multiple columns - o -Allow FOR UPDATE queries to do NOWAIT locks * ALTER @@ -470,11 +435,7 @@ SQL Commands This requires the use of a savepoint before each COPY line is processed, with ROLLBACK on COPY failure. - o -Allow COPY to understand \x as a hex byte o %Have COPY return the number of rows loaded/unloaded? - o -Allow COPY to optionally include column headings in the first line - o -Allow COPY FROM ... CSV to interpret newlines and carriage - returns in data * GRANT/REVOKE @@ -522,7 +483,6 @@ SQL Commands * SHOW/SET - o -Have SHOW ALL show descriptions for server-side variables o Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM ANALYZE, and CLUSTER o Add SET PATH for schemas? @@ -532,22 +492,15 @@ SQL Commands * Server-Side Languages - o -Allow PL/PgSQL's RAISE function to take expressions - - Currently only constants are supported. - - o -Change PL/PgSQL to use palloc() instead of malloc() o Fix PL/pgSQL RENAME to work on variables other than OLD/NEW o Allow function parameters to be passed by name, get_employee_salary(emp_id => 12345, tax_year => 2001) o Add Oracle-style packages o Add table function support to pltcl, plpython - o -Allow PL/pgSQL EXECUTE query_var INTO record_var; o Add capability to create and call PROCEDURES o Allow PL/pgSQL to handle %TYPE arrays, e.g. tab.col%TYPE[] o Allow function argument names to be queries from PL/PgSQL o Add MOVE to PL/pgSQL - o -Pass arrays natively instead of as text between plperl and postgres o Add support for polymorphic arguments and return types to languages other than PL/PgSQL o Add support for OUT and INOUT parameters to languages other @@ -595,7 +548,6 @@ Clients o %Add dumping of comments on index columns o %Replace crude DELETE FROM method of pg_dumpall --clean for cleaning of roles with separate DROP commands - o -Add dumping and restoring of LOB comments o Stop dumping CASCADE on DROP TYPE commands in clean mode o %Add full object name to the tag field. eg. for operators we need '=(integer, integer)', instead of just '='. @@ -635,11 +587,9 @@ Referential Integrity memory. This could exhaust memory for very large trigger queues. This item involves dumping large queues into files. -* -Implement shared row locks and use them in RI triggers * Change foreign key constraint for array -> element to mean element in array? * Allow DEFERRABLE UNIQUE constraints? -* -Allow triggers to be disabled * Allow triggers to be disabled in only the current session. This is currently possible by starting a multi-statement transaction, @@ -693,9 +643,6 @@ Exotic Features This can be done using dblink and two-phase commit. -* -Add two-phase commit - - * Add the features of packages o Make private objects accessable only to objects in the same schema @@ -717,44 +664,12 @@ Indexes that can span more than one table. * Allow SELECT ... FOR UPDATE on inherited tables -* -Prevent inherited tables from expanding temporary subtables of other - sessions * Add UNIQUE capability to non-btree indexes -* -Use indexes for MIN() and MAX() - - MIN/MAX queries can already be rewritten as SELECT col FROM tab ORDER - BY col {DESC} LIMIT 1. Completing this item involves doing this - transformation automatically. - -* -Use index to restrict rows returned by multi-key index when used with - non-consecutive keys to reduce heap accesses - - For an index on col1,col2,col3, and a WHERE clause of col1 = 5 and - col3 = 9, spin though the index checking for col1 and col3 matches, - rather than just col1; also called skip-scanning. - * Prevent index uniqueness checks when UPDATE does not modify the column Uniqueness (index) checks are done when updating a column even if the column is not modified by the UPDATE. -* -Fetch heap pages matching index entries in sequential order - - Rather than randomly accessing heap pages based on index entries, mark - heap pages needing access in a bitmap and do the lookups in sequential - order. Another method would be to sort heap ctids matching the index - before accessing the heap rows. - -* -Allow non-bitmap indexes to be combined by creating bitmaps in memory - - This feature allows separate indexes to be ANDed or ORed together. This - is particularly useful for data warehousing applications that need to - query the database in an many permutations. This feature scans an index - and creates an in-memory bitmap, and allows that bitmap to be combined - with other bitmap created in a similar way. The bitmap can either index - all TIDs, or be lossy, meaning it records just page numbers and each - page tuple has to be checked for validity in a separate pass. - * Allow the creation of on-disk bitmap indexes which can be quickly combined with other bitmap indexes @@ -770,8 +685,6 @@ Indexes one column or expression indexes, perhaps using per-index statistics * Add fillfactor to control reserved free space during index creation * Allow the creation of indexes with mixed ascending/descending specifiers -* -Fix incorrect rtree results due to wrong assumptions about "over" - operator semantics * Allow constraint_exclusion to work for UNIONs like it does for inheritance, and allow it to work for UPDATE and DELETE queries @@ -779,7 +692,6 @@ Indexes * GIST o Add more GIST index support for geometric data types - o -Add concurrency to GIST o Allow GIST indexes to create certain complex index types, like digital trees (see Aoki) @@ -810,7 +722,6 @@ Fsync Ideally this requires a separate test program that can be run at initdb time or optionally later. -* -Allow multiple blocks to be written to WAL with one write() * %Add an option to sync() before fsync()'ing checkpoint files * Add program to test if fsync has a delay compared to non-fsync @@ -826,13 +737,6 @@ Cache Usage backends that also have the file open, and the feature is not supported on all operating systems. -* -Consider use of open/fcntl(O_DIRECT) to minimize OS caching, - for WAL writes - - O_DIRECT doesn't have the same media write guarantees as fsync, so it - is in addition to the fsync method, not in place of it. - -* -Cache last known per-tuple offsets to speed long tuple access * Speed up COUNT(*) We could use a fixed row count and a +/- count to follow MVCC @@ -858,18 +762,6 @@ Cache Usage o Query execute plan o Query results -* -Allow the size of the buffer cache used by temporary objects to be - specified as a GUC variable - - Larger local buffer cache sizes requires more efficient handling of - local cache lookups. - -* -Improve the background writer - - Allow the background writer to more efficiently write dirty buffers - from the end of the LRU cache and use a clock sweep algorithm to - write other dirty buffers to reduced checkpoint I/O - * Allow sequential scans to take advantage of other concurrent sequentiqal scans, also called "Synchronised Scanning" @@ -894,7 +786,6 @@ Vacuum write lock. However, the read lock promotion to write lock could lead to deadlock situations. -* -Add a warning when the free space map is too small * Maintain a map of recently-expired rows This allows vacuum to target specific pages for possible free space @@ -914,7 +805,6 @@ Vacuum * Auto-vacuum - o -Move into the backend code o Use free-space map information to guide refilling o %Issue log message to suggest VACUUM FULL if a table is nearly empty? @@ -925,11 +815,6 @@ Vacuum Locking ======= -* -Make locking of shared data structures more fine-grained - - This requires that more locks be acquired but this would reduce lock - contention, improving concurrency. - * Add code to detect an SMP machine and handle spinlocks accordingly from distributted.net, http://www1.distributed.net/source, in client/common/cpucheck.cpp @@ -938,12 +823,6 @@ Locking while on non-SMP machines, the backend should sleep so the process holding the lock can complete and release it. -* -Improve SMP performance on i386 machines - - i386-based SMP machines can generate excessive context switching - caused by lock failure in high concurrency situations. This may be - caused by CPU cache line invalidation inefficiencies. - * Research use of sched_yield() for spinlock acquisition failure * Fix priority ordering of read and write light-weight locks (Neil) @@ -976,7 +855,6 @@ Write-Ahead Log partial page writes during recovery. These pages can also be eliminated from point-in-time archive files. - o -Add ability to turn off full page writes o When off, write CRC to WAL and check file system blocks on recovery @@ -1012,9 +890,6 @@ Write-Ahead Log remove the 'fsync' parameter (which results in an an inconsistent database) in favor of this capability. -* -Eliminate WAL logging for CREATE TABLE AS when not doing WAL archiving -* -Change WAL to use 32-bit CRC, for performance reasons - Optimizer / Executor ==================== @@ -1032,17 +907,10 @@ Optimizer / Executor * Create utility to compute accurate random_page_cost value * Improve ability to display optimizer analysis using OPTIMIZER_DEBUG * Have EXPLAIN ANALYZE highlight poor optimizer estimates -* -Use CHECK constraints to influence optimizer decisions - - CHECK constraints contain information about the distribution of values - within the table. This is also useful for implementing subtables where - a tables content is distributed across several subtables. - * Consider using hash buckets to do DISTINCT, rather than sorting This would be beneficial when there are few distinct values. -* -ANALYZE should record a pg_statistic entry for an all-NULL column * Log queries where the optimizer row estimates were dramatically different from the number of rows actually found? * Allow constraint_elimination to be automatically performed @@ -1096,11 +964,9 @@ Source Code * %Promote debug_query_string into a server-side function current_query() * %Allow the identifier length to be increased via a configure option * Remove Win32 rename/unlink looping if unnecessary -* -Remove kerberos4 from source tree * Allow cross-compiling by generating the zic database on the target system * Improve NLS maintenace of libpgport messages linked onto applications * Allow ecpg to work with MSVC and BCC -* -Make src/port/snprintf.c thread-safe * Add xpath_array() to /contrib/xml2 to return results as an array * Allow building in directories containing spaces @@ -1115,7 +981,6 @@ Source Code spaces and then copy the install to a directory with spaces. * Fix sgmltools so PDFs can be generated with bookmarks -* -Add C code on Unix to copy directories for use in creating new databases * %Clean up compiler warnings (especially with gcc version 4) @@ -1130,7 +995,6 @@ Source Code backslashes o Re-enable timezone output on log_line_prefix '%t' when a shorter timezone string is available - o -Improve dlerror() reporting string o Fix problem with shared memory on the Win32 Terminal Server o %Add support for Unicode diff --git a/doc/src/FAQ/TODO.html b/doc/src/FAQ/TODO.html index 641c33962f..f967937501 100644 --- a/doc/src/FAQ/TODO.html +++ b/doc/src/FAQ/TODO.html @@ -8,7 +8,7 @@

PostgreSQL TODO List

Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
-Last updated: Fri Aug 26 14:52:30 EDT 2005 +Last updated: Fri Aug 26 14:59:39 EDT 2005

The most recent version of this document can be viewed at
http://www.postgresql.org/docs/faqs.TODO.html. @@ -27,7 +27,6 @@ first.

Data Types

@@ -212,11 +207,8 @@ first.
  • Arrays
  • Binary Data

    Multi-Language Support

    @@ -294,24 +280,13 @@ first.

  • Add the functionality for WITH CHECK OPTION clause of CREATE VIEW
  • Allow NOTIFY in rules involving conditionals -
  • -Have views on temporary tables exist in the temporary namespace -
  • -Allow temporary views on non-temporary tables
  • Allow VIEW/RULE recompilation when the underlying tables change
  • SQL Commands

  • ALTER
  • GRANT/REVOKE
  • SHOW/SET
  • Server-Side Languages -
  • -Allow the size of the buffer cache used by temporary objects to be - specified as a GUC variable -

    Larger local buffer cache sizes requires more efficient handling of - local cache lookups. -

    -
  • -Improve the background writer -

    Allow the background writer to more efficiently write dirty buffers - from the end of the LRU cache and use a clock sweep algorithm to - write other dirty buffers to reduced checkpoint I/O -

  • Allow sequential scans to take advantage of other concurrent sequentiqal scans, also called "Synchronised Scanning"

    One possible implementation is to start sequential scans from the lowest @@ -802,7 +708,6 @@ first. write lock. However, the read lock promotion to write lock could lead to deadlock situations.

    -
  • -Add a warning when the free space map is too small
  • Maintain a map of recently-expired rows

    This allows vacuum to target specific pages for possible free space without requiring a sequential scan. @@ -818,8 +723,7 @@ first.

  • %Add system view to show free space map contents
  • Auto-vacuum