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 4ca5718f7c2..992545485e3 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 641c33962f0..f9679375016 100644
--- a/doc/src/FAQ/TODO.html
+++ b/doc/src/FAQ/TODO.html
@@ -8,7 +8,7 @@
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.
- %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
the queries prepared in the current session.
@@ -43,12 +42,10 @@ first.
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
@@ -144,8 +141,6 @@ first.
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
@@ -212,11 +207,8 @@ first.
Arrays
- Allow NULLs in arrays
-
- -Allow MIN()/MAX() on arrays
- Delay resolution of array expression's data type so assignment
coercion can be performed on empty array expressions
-
- -Modify array literal representation to handle array index lower bound
- of other than one
Binary Data
@@ -233,8 +225,7 @@ first.
-
-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
@@ -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
- - -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.
-
+ - Change LIMIT/OFFSET and FETCH/MOVE to use int8
- 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
@@ -347,11 +322,6 @@ first.
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
This would include resetting of all variables (RESET ALL), dropping of
@@ -384,7 +354,6 @@ first.
- Allow UPDATE tab SET ROW (col, ...) = (...) for updating multiple
columns
-
- -Allow FOR UPDATE queries to do NOWAIT locks
ALTER
@@ -425,11 +394,7 @@ first.
This requires the use of a savepoint before each COPY line is
processed, with ROLLBACK on COPY failure.
-
-Allow COPY to understand \x as a hex byte
%Have COPY return the number of rows loaded/unloaded?
- -Allow COPY to optionally include column headings in the first line
- -Allow COPY FROM ... CSV to interpret newlines and carriage
- returns in data
GRANT/REVOKE
@@ -472,8 +437,7 @@ first.
SHOW/SET
Server-Side Languages
- - -Allow PL/PgSQL's RAISE function to take expressions
-
Currently only constants are supported.
-
- - -Change PL/PgSQL to use palloc() instead of malloc()
-
- Fix PL/pgSQL RENAME to work on variables other than OLD/NEW
+
- Fix PL/pgSQL RENAME to work on variables other than OLD/NEW
- Allow function parameters to be passed by name,
get_employee_salary(emp_id => 12345, tax_year => 2001)
- Add Oracle-style packages
- Add table function support to pltcl, plpython
-
- -Allow PL/pgSQL EXECUTE query_var INTO record_var;
- Add capability to create and call PROCEDURES
- Allow PL/pgSQL to handle %TYPE arrays, e.g. tab.col%TYPE[]
- Allow function argument names to be queries from PL/PgSQL
- Add MOVE to PL/pgSQL
-
- -Pass arrays natively instead of as text between plperl and postgres
- Add support for polymorphic arguments and return types to
languages other than PL/PgSQL
- Add support for OUT and INOUT parameters to languages other
@@ -539,7 +497,6 @@ first.
- %Add dumping of comments on index columns
- %Replace crude DELETE FROM method of pg_dumpall --clean for
cleaning of roles with separate DROP commands
-
- -Add dumping and restoring of LOB comments
- Stop dumping CASCADE on DROP TYPE commands in clean mode
- %Add full object name to the tag field. eg. for operators we need
'=(integer, integer)', instead of just '='.
@@ -576,11 +533,9 @@ first.
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,
modifying the system tables, performing the desired SQL, restoring the
@@ -628,7 +583,6 @@ first.
semantics
This can be done using dblink and two-phase commit.
- - -Add two-phase commit
- Add the features of packages
- Make private objects accessable only to objects in the same schema
@@ -649,38 +603,10 @@ first.
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
@@ -695,14 +621,11 @@ first.
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
- GIST
- Add more GIST index support for geometric data types
-
- -Add concurrency to GIST
- Allow GIST indexes to create certain complex index types, like
digital trees (see Aoki)
@@ -729,7 +652,6 @@ first.
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
@@ -743,12 +665,6 @@ first.
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
visibility rules, or a single cached value could be used and
@@ -771,16 +687,6 @@ first.
- Query execute plan
- 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"
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
- - -Move into the backend code
-
- Use free-space map information to guide refilling
+
- Use free-space map information to guide refilling
- %Issue log message to suggest VACUUM FULL if a table is nearly
empty?
- Improve xid wraparound detection by recording per-table rather
@@ -829,21 +733,12 @@ first.
- - -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
+
- Add code to detect an SMP machine and handle spinlocks accordingly
from distributted.net, http://www1.distributed.net/source,
in client/common/cpucheck.cpp
On SMP machines, it is possible that locks might be released shortly,
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)
@@ -874,8 +769,7 @@ first.
eliminated from point-in-time archive files.
- - -Add ability to turn off full page writes
-
- When off, write CRC to WAL and check file system blocks
+
- When off, write CRC to WAL and check file system blocks
on recovery
If CRC check fails during recovery, remember the page in case
a later CRC for that page properly matches.
@@ -907,8 +801,6 @@ first.
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
@@ -925,15 +817,9 @@ first.
- 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
@@ -983,11 +869,9 @@ first.
- %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
This is probably not possible because 'gmake' and other compiler tools
@@ -1000,7 +884,6 @@ first.
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)
- Win32
@@ -1013,7 +896,6 @@ first.
backslashes
- Re-enable timezone output on log_line_prefix '%t' when a
shorter timezone string is available
-
- -Improve dlerror() reporting string
- Fix problem with shared memory on the Win32 Terminal Server
- %Add support for Unicode
To fix this, the data needs to be converted to/from UTF16/UTF8