Break out referential integrity and server-side languages into separate

TODO categories.
This commit is contained in:
Bruce Momjian 2008-03-06 03:15:52 +00:00
parent 4d436efca8
commit fca7bcbb64
2 changed files with 125 additions and 122 deletions

102
doc/TODO
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 Mar 5 11:07:13 EST 2008 Last updated: Wed Mar 5 22:15:29 EST 2008
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.
@ -711,73 +711,75 @@ SQL Commands
ANALYZE, and CLUSTER ANALYZE, and CLUSTER
* Referential Integrity
o Add MATCH PARTIAL referential integrity Referential Integrity
o Change foreign key constraint for array -> element to mean element =====================
in array?
o Fix problem when cascading referential triggers make changes on
cascaded tables, seeing the tables in an intermediate state
http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php * Add MATCH PARTIAL referential integrity
http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php * Change foreign key constraint for array -> element to mean element
in array?
* Fix problem when cascading referential triggers make changes on
cascaded tables, seeing the tables in an intermediate state
o Allow DEFERRABLE and end-of-statement UNIQUE constraints? http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php
http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php
This would allow UPDATE tab SET col = col + 1 to work if col has * Allow DEFERRABLE and end-of-statement UNIQUE constraints?
a unique index. Currently, uniqueness checks are done while the
command is being executed, rather than at the end of the statement
or transaction.
http://people.planetpostgresql.org/greg/index.php?/archives/2006/06/10.html This would allow UPDATE tab SET col = col + 1 to work if col has
http://archives.postgresql.org/pgsql-hackers/2006-09/msg01458.php a unique index. Currently, uniqueness checks are done while the
command is being executed, rather than at the end of the statement
or transaction.
http://people.planetpostgresql.org/greg/index.php?/archives/2006/06/10.html
http://archives.postgresql.org/pgsql-hackers/2006-09/msg01458.php
* Server-Side Languages Server-Side Languages
=====================
o PL/pgSQL * PL/pgSQL
o Fix RENAME to work on variables other than OLD/NEW o Fix RENAME to work on variables other than OLD/NEW
http://archives.postgresql.org/pgsql-hackers/2002-03/msg00591.php http://archives.postgresql.org/pgsql-hackers/2002-03/msg00591.php
http://archives.postgresql.org/pgsql-hackers/2007-01/msg01615.php http://archives.postgresql.org/pgsql-hackers/2007-01/msg01615.php
http://archives.postgresql.org/pgsql-hackers/2007-01/msg01587.php http://archives.postgresql.org/pgsql-hackers/2007-01/msg01587.php
o Allow function parameters to be passed by name, o Allow function parameters to be passed by name,
get_employee_salary(12345 AS emp_id, 2001 AS tax_year) get_employee_salary(12345 AS emp_id, 2001 AS tax_year)
o Allow handling of %TYPE arrays, e.g. tab.col%TYPE[] o Allow handling of %TYPE arrays, e.g. tab.col%TYPE[]
o Allow listing of record column names, and access to o Allow listing of record column names, and access to
record columns via variables, e.g. columns := r.(*), record columns via variables, e.g. columns := r.(*),
tval2 := r.(colname) tval2 := r.(colname)
http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php
http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php
http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php
o Add support for SCROLL cursors o Add support for SCROLL cursors
o Add support for WITH HOLD cursors o Add support for WITH HOLD cursors
o Allow row and record variables to be set to NULL constants, o Allow row and record variables to be set to NULL constants,
and allow NULL tests on such variables and allow NULL tests on such variables
Because a row is not scalar, do not allow assignment Because a row is not scalar, do not allow assignment
from NULL-valued scalars. from NULL-valued scalars.
http://archives.postgresql.org/pgsql-hackers/2006-10/msg00070.php http://archives.postgresql.org/pgsql-hackers/2006-10/msg00070.php
o Other * Other
o Add table function support to pltcl, plpythonu o Add table function support to pltcl, plpythonu
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
http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php
o Allow data to be passed in native language formats, rather o Allow data to be passed in native language formats, rather
than only text than only text
http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php
Clients Clients

View File

@ -8,7 +8,7 @@
<body bgcolor="#FFFFFF" text="#000000" link="#FF0000" vlink="#A00000" alink="#0000FF"> <body bgcolor="#FFFFFF" text="#000000" link="#FF0000" vlink="#A00000" alink="#0000FF">
<h1><a name="section_1">PostgreSQL TODO List</a></h1> <h1><a name="section_1">PostgreSQL TODO List</a></h1>
<p>Current maintainer: Bruce Momjian (<a href="mailto:bruce@momjian.us">bruce@momjian.us</a>)<br/> <p>Current maintainer: Bruce Momjian (<a href="mailto:bruce@momjian.us">bruce@momjian.us</a>)<br/>
Last updated: Wed Mar 5 11:07:13 EST 2008 Last updated: Wed Mar 5 22:15:29 EST 2008
</p> </p>
<p>The most recent version of this document can be viewed at<br/> <p>The most recent version of this document can be viewed at<br/>
<a href="http://www.postgresql.org/docs/faqs.TODO.html">http://www.postgresql.org/docs/faqs.TODO.html</a>. <a href="http://www.postgresql.org/docs/faqs.TODO.html">http://www.postgresql.org/docs/faqs.TODO.html</a>.
@ -623,74 +623,75 @@ first. There is also a developer's wiki at<br/>
<li>Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM <li>Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM
ANALYZE, and CLUSTER ANALYZE, and CLUSTER
</li></ul> </li></ul>
</li><li>Referential Integrity </li></ul>
<h1><a name="section_8">Referential Integrity</a></h1>
<ul>
<li>Add MATCH PARTIAL referential integrity
</li><li>Change foreign key constraint for array -&gt; element to mean element
in array?
</li><li>Fix problem when cascading referential triggers make changes on
cascaded tables, seeing the tables in an intermediate state
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php">http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php</a>
<a href="http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php">http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php</a>
</p>
</li><li>Allow DEFERRABLE and end-of-statement UNIQUE constraints?
<p> This would allow UPDATE tab SET col = col + 1 to work if col has
a unique index. Currently, uniqueness checks are done while the
command is being executed, rather than at the end of the statement
or transaction.
<a href="http://people.planetpostgresql.org/greg/index.php?/archives/2006/06/10.html">http://people.planetpostgresql.org/greg/index.php?/archives/2006/06/10.html</a>
<a href="http://archives.postgresql.org/pgsql-hackers/2006-09/msg01458.php">http://archives.postgresql.org/pgsql-hackers/2006-09/msg01458.php</a>
</p>
</li></ul>
<h1><a name="section_9">Server-Side Languages</a></h1>
<ul>
<li>PL/pgSQL
<ul> <ul>
<li>Add MATCH PARTIAL referential integrity <li>Fix RENAME to work on variables other than OLD/NEW
</li><li>Change foreign key constraint for array -&gt; element to mean element <p> <a href="http://archives.postgresql.org/pgsql-hackers/2002-03/msg00591.php">http://archives.postgresql.org/pgsql-hackers/2002-03/msg00591.php</a>
in array? <a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg01615.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg01615.php</a>
</li><li>Fix problem when cascading referential triggers make changes on <a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg01587.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg01587.php</a>
cascaded tables, seeing the tables in an intermediate state
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php">http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php</a>
<a href="http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php">http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php</a>
</p> </p>
</li><li>Allow DEFERRABLE and end-of-statement UNIQUE constraints? </li><li>Allow function parameters to be passed by name,
<p> This would allow UPDATE tab SET col = col + 1 to work if col has get_employee_salary(12345 AS emp_id, 2001 AS tax_year)
a unique index. Currently, uniqueness checks are done while the </li><li>Allow handling of %TYPE arrays, e.g. tab.col%TYPE[<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?"></a>]
command is being executed, rather than at the end of the statement </li><li>Allow listing of record column names, and access to
or transaction. record columns via variables, e.g. columns := r.(*),
tval2 := r.(colname)
<p> <a href="http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php">http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php</a>
<a href="http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php">http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php</a>
<a href="http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php">http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php</a>
</p> </p>
<p> <a href="http://people.planetpostgresql.org/greg/index.php?/archives/2006/06/10.html">http://people.planetpostgresql.org/greg/index.php?/archives/2006/06/10.html</a> </li><li>Add support for SCROLL cursors
<a href="http://archives.postgresql.org/pgsql-hackers/2006-09/msg01458.php">http://archives.postgresql.org/pgsql-hackers/2006-09/msg01458.php</a> </li><li>Add support for WITH HOLD cursors
</li><li>Allow row and record variables to be set to NULL constants,
and allow NULL tests on such variables
<p> Because a row is not scalar, do not allow assignment
from NULL-valued scalars.
</p>
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-10/msg00070.php">http://archives.postgresql.org/pgsql-hackers/2006-10/msg00070.php</a>
</p> </p>
</li></ul> </li></ul>
</li><li>Server-Side Languages </li><li>Other
<ul> <ul>
<li>PL/pgSQL <li>Add table function support to pltcl, plpythonu
<ul> </li><li>Add support for polymorphic arguments and return types to
<li>Fix RENAME to work on variables other than OLD/NEW languages other than PL/PgSQL
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2002-03/msg00591.php">http://archives.postgresql.org/pgsql-hackers/2002-03/msg00591.php</a> </li><li>Add capability to create and call PROCEDURES
<a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg01615.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg01615.php</a> </li><li>Add support for OUT and INOUT parameters to languages other
<a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg01587.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg01587.php</a> than PL/PgSQL
</li><li>Add PL/PythonU tracebacks
<p> <a href="http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php">http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php</a>
</p> </p>
</li><li>Allow function parameters to be passed by name, </li><li>Allow data to be passed in native language formats, rather
get_employee_salary(12345 AS emp_id, 2001 AS tax_year) than only text
</li><li>Allow handling of %TYPE arrays, e.g. tab.col%TYPE[<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?"></a>] <p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php">http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php</a>
</li><li>Allow listing of record column names, and access to
record columns via variables, e.g. columns := r.(*),
tval2 := r.(colname)
<p> <a href="http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php">http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php</a>
<a href="http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php">http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php</a>
<a href="http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php">http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php</a>
</p> </p>
</li><li>Add support for SCROLL cursors
</li><li>Add support for WITH HOLD cursors
</li><li>Allow row and record variables to be set to NULL constants,
and allow NULL tests on such variables
<p> Because a row is not scalar, do not allow assignment
from NULL-valued scalars.
</p>
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-10/msg00070.php">http://archives.postgresql.org/pgsql-hackers/2006-10/msg00070.php</a>
</p>
</li></ul>
</li><li>Other
<ul>
<li>Add table function support to pltcl, plpythonu
</li><li>Add support for polymorphic arguments and return types to
languages other than PL/PgSQL
</li><li>Add capability to create and call PROCEDURES
</li><li>Add support for OUT and INOUT parameters to languages other
than PL/PgSQL
</li><li>Add PL/PythonU tracebacks
<p> <a href="http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php">http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php</a>
</p>
</li><li>Allow data to be passed in native language formats, rather
than only text
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php">http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php</a>
</p>
</li></ul>
</li></ul> </li></ul>
</li></ul> </li></ul>
<h1><a name="section_8">Clients</a></h1> <h1><a name="section_10">Clients</a></h1>
<ul> <ul>
<li>Have pg_ctl look at PGHOST in case it is a socket directory? <li>Have pg_ctl look at PGHOST in case it is a socket directory?
@ -821,7 +822,7 @@ first. There is also a developer's wiki at<br/>
</p> </p>
</li></ul> </li></ul>
</li></ul> </li></ul>
<h1><a name="section_9">Triggers</a></h1> <h1><a name="section_11">Triggers</a></h1>
<ul> <ul>
<li>Add deferred trigger queue file <li>Add deferred trigger queue file
@ -859,7 +860,7 @@ first. There is also a developer's wiki at<br/>
<p> <a href="http://archives.postgresql.org/pgsql-sql/2008-01/msg00050.php">http://archives.postgresql.org/pgsql-sql/2008-01/msg00050.php</a> <p> <a href="http://archives.postgresql.org/pgsql-sql/2008-01/msg00050.php">http://archives.postgresql.org/pgsql-sql/2008-01/msg00050.php</a>
</p> </p>
</li></ul> </li></ul>
<h1><a name="section_10">Indexes</a></h1> <h1><a name="section_12">Indexes</a></h1>
<ul> <ul>
<li>Add UNIQUE capability to non-btree indexes <li>Add UNIQUE capability to non-btree indexes
@ -931,7 +932,7 @@ first. There is also a developer's wiki at<br/>
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg01199.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg01199.php</a> <p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg01199.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg01199.php</a>
</p> </p>
</li></ul> </li></ul>
<h1><a name="section_11">Fsync</a></h1> <h1><a name="section_13">Fsync</a></h1>
<ul> <ul>
<li>Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options <li>Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options
@ -941,7 +942,7 @@ first. There is also a developer's wiki at<br/>
</p> </p>
</li><li>Add program to test if fsync has a delay compared to non-fsync </li><li>Add program to test if fsync has a delay compared to non-fsync
</li></ul> </li></ul>
<h1><a name="section_12">Cache Usage</a></h1> <h1><a name="section_14">Cache Usage</a></h1>
<ul> <ul>
<li>Speed up COUNT(*) <li>Speed up COUNT(*)
@ -994,7 +995,7 @@ first. There is also a developer's wiki at<br/>
<a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php</a> <a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php</a>
</p> </p>
</li></ul> </li></ul>
<h1><a name="section_13">Vacuum</a></h1> <h1><a name="section_15">Vacuum</a></h1>
<ul> <ul>
<li>Improve speed with indexes <li>Improve speed with indexes
@ -1045,7 +1046,7 @@ first. There is also a developer's wiki at<br/>
</p> </p>
</li></ul> </li></ul>
</li></ul> </li></ul>
<h1><a name="section_14">Locking</a></h1> <h1><a name="section_16">Locking</a></h1>
<ul> <ul>
<li>Fix priority ordering of read and write light-weight locks (Neil) <li>Fix priority ordering of read and write light-weight locks (Neil)
@ -1071,7 +1072,7 @@ first. There is also a developer's wiki at<br/>
<a href="http://archives.postgresql.org/pgsql-committers/2008-01/msg00365.php">http://archives.postgresql.org/pgsql-committers/2008-01/msg00365.php</a> <a href="http://archives.postgresql.org/pgsql-committers/2008-01/msg00365.php">http://archives.postgresql.org/pgsql-committers/2008-01/msg00365.php</a>
</p> </p>
</li></ul> </li></ul>
<h1><a name="section_15">Startup Time Improvements</a></h1> <h1><a name="section_17">Startup Time Improvements</a></h1>
<ul> <ul>
<li>Experiment with multi-threaded backend for backend creation [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?thread">thread</a>] <li>Experiment with multi-threaded backend for backend creation [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?thread">thread</a>]
@ -1082,7 +1083,7 @@ first. There is also a developer's wiki at<br/>
a single session using multiple threads to execute a statement faster. a single session using multiple threads to execute a statement faster.
</p> </p>
</li></ul> </li></ul>
<h1><a name="section_16">Write-Ahead Log</a></h1> <h1><a name="section_18">Write-Ahead Log</a></h1>
<ul> <ul>
<li>Eliminate need to write full pages to WAL before page modification [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?wal">wal</a>] <li>Eliminate need to write full pages to WAL before page modification [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?wal">wal</a>]
@ -1143,7 +1144,7 @@ first. There is also a developer's wiki at<br/>
<a href="http://archives.postgresql.org/pgsql-hackers/2008-02/msg01279.php">http://archives.postgresql.org/pgsql-hackers/2008-02/msg01279.php</a> <a href="http://archives.postgresql.org/pgsql-hackers/2008-02/msg01279.php">http://archives.postgresql.org/pgsql-hackers/2008-02/msg01279.php</a>
</p> </p>
</li></ul> </li></ul>
<h1><a name="section_17">Optimizer / Executor</a></h1> <h1><a name="section_19">Optimizer / Executor</a></h1>
<ul> <ul>
<li>Improve selectivity functions for geometric operators <li>Improve selectivity functions for geometric operators
@ -1166,7 +1167,7 @@ first. There is also a developer's wiki at<br/>
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg00096.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg00096.php</a> <p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg00096.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg00096.php</a>
</p> </p>
</li></ul> </li></ul>
<h1><a name="section_18">Miscellaneous Performance</a></h1> <h1><a name="section_20">Miscellaneous Performance</a></h1>
<ul> <ul>
<li>Do async I/O for faster random read-ahead of data <li>Do async I/O for faster random read-ahead of data
@ -1219,7 +1220,7 @@ first. There is also a developer's wiki at<br/>
concurrent reads from multiple devices in a partitioned table. concurrent reads from multiple devices in a partitioned table.
</p> </p>
</li></ul> </li></ul>
<h1><a name="section_19">Source Code</a></h1> <h1><a name="section_21">Source Code</a></h1>
<ul> <ul>
<li>Add use of 'const' for variables in source tree <li>Add use of 'const' for variables in source tree
@ -1286,7 +1287,7 @@ first. There is also a developer's wiki at<br/>
of result sets using new statement protocol of result sets using new statement protocol
</li></ul> </li></ul>
</li></ul> </li></ul>
<h1><a name="section_20">Exotic Features</a></h1> <h1><a name="section_22">Exotic Features</a></h1>
<ul> <ul>
<li>Add pre-parsing phase that converts non-ISO syntax to supported <li>Add pre-parsing phase that converts non-ISO syntax to supported
@ -1313,7 +1314,7 @@ first. There is also a developer's wiki at<br/>
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2008-01/msg00893.php">http://archives.postgresql.org/pgsql-hackers/2008-01/msg00893.php</a> <p> <a href="http://archives.postgresql.org/pgsql-hackers/2008-01/msg00893.php">http://archives.postgresql.org/pgsql-hackers/2008-01/msg00893.php</a>
</p> </p>
</li></ul> </li></ul>
<h1><a name="section_21">Features We Do <u>Not</u> Want</a></h1> <h1><a name="section_23">Features We Do <u>Not</u> Want</a></h1>
<ul> <ul>
<li>All backends running as threads in a single process (not wanted) <li>All backends running as threads in a single process (not wanted)