88< body bgcolor ="#FFFFFF "text ="#000000 "link ="#FF0000 "vlink ="#A00000 "alink ="#0000FF ">
99< h1 > < a name ="section_1 "> PostgreSQL TODO List</ a > </ h1 >
1010< p > Current maintainer: Bruce Momjian (< a href ="mailto:bruce@momjian.us "> bruce@momjian.us</ a > )< br />
11- Last updated: Wed Mar 511:07:13 EST 2008
11+ Last updated: Wed Mar 522:15:29 EST 2008
1212</ p >
1313< p > The most recent version of this document can be viewed at< br />
1414< a href ="http://www.postgresql.org/docs/faqs.TODO.html "> http://www.postgresql.org/docs/faqs.TODO.html</ a > .
@@ -623,74 +623,75 @@ <h1><a name="section_7">SQL Commands</a></h1>
623623< li > Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM
624624 ANALYZE, and CLUSTER
625625</ li > </ ul >
626- </ li > < li > Referential Integrity
626+ </ li > </ ul >
627+ < h1 > < a name ="section_8 "> Referential Integrity</ a > </ h1 >
628+
629+ < ul >
630+ < li > Add MATCH PARTIAL referential integrity
631+ </ li > < li > Change foreign key constraint for array -> element to mean element
632+ in array?
633+ </ li > < li > Fix problem when cascading referential triggers make changes on
634+ cascaded tables, seeing the tables in an intermediate state
635+ < p > < a href ="http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php "> http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php</ a >
636+ < a href ="http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php "> http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php</ a >
637+ </ p >
638+ </ li > < li > Allow DEFERRABLE and end-of-statement UNIQUE constraints?
639+ < p > This would allow UPDATE tab SET col = col + 1 to work if col has
640+ a unique index. Currently, uniqueness checks are done while the
641+ command is being executed, rather than at the end of the statement
642+ or transaction.
643+ < 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 >
644+ < a href ="http://archives.postgresql.org/pgsql-hackers/2006-09/msg01458.php "> http://archives.postgresql.org/pgsql-hackers/2006-09/msg01458.php</ a >
645+ </ p >
646+ </ li > </ ul >
647+ < h1 > < a name ="section_9 "> Server-Side Languages</ a > </ h1 >
648+
649+ < ul >
650+ < li > PL/pgSQL
627651< ul >
628- < li > Add MATCH PARTIAL referential integrity
629- </ li > < li > Change foreign key constraint for array -> element to mean element
630- in array?
631- </ li > < li > Fix problem when cascading referential triggers make changes on
632- cascaded tables, seeing the tables in an intermediate state
633- < p > < a href ="http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php "> http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php</ a >
634- < a href ="http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php "> http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php</ a >
635- </ p >
636- </ li > < li > Allow DEFERRABLE and end-of-statement UNIQUE constraints?
637- < p > This would allow UPDATE tab SET col = col + 1 to work if col has
638- a unique index. Currently, uniqueness checks are done while the
639- command is being executed, rather than at the end of the statement
640- or transaction.
641- </ p >
642- < 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 >
643- < a href ="http://archives.postgresql.org/pgsql-hackers/2006-09/msg01458.php "> http://archives.postgresql.org/pgsql-hackers/2006-09/msg01458.php</ a >
652+ < li > Fix RENAME to work on variables other than OLD/NEW
653+ < p > < a href ="http://archives.postgresql.org/pgsql-hackers/2002-03/msg00591.php "> http://archives.postgresql.org/pgsql-hackers/2002-03/msg00591.php</ a >
654+ < a href ="http://archives.postgresql.org/pgsql-hackers/2007-01/msg01615.php "> http://archives.postgresql.org/pgsql-hackers/2007-01/msg01615.php</ a >
655+ < a href ="http://archives.postgresql.org/pgsql-hackers/2007-01/msg01587.php "> http://archives.postgresql.org/pgsql-hackers/2007-01/msg01587.php</ a >
656+ </ p >
657+ </ li > < li > Allow function parameters to be passed by name,
658+ get_employee_salary(12345 AS emp_id, 2001 AS tax_year)
659+ </ li > < li > Allow handling of %TYPE arrays, e.g. tab.col%TYPE[< a href ="http://momjian.postgresql.org/cgi-bin/pgtodo? "> </ a > ]
660+ </ li > < li > Allow listing of record column names, and access to
661+ record columns via variables, e.g. columns := r.(*),
662+ tval2 := r.(colname)
663+ < p > < a href ="http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php "> http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php</ a >
664+ < a href ="http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php "> http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php</ a >
665+ < a href ="http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php "> http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php</ a >
666+ </ p >
667+ </ li > < li > Add support for SCROLL cursors
668+ </ li > < li > Add support for WITH HOLD cursors
669+ </ li > < li > Allow row and record variables to be set to NULL constants,
670+ and allow NULL tests on such variables
671+ < p > Because a row is not scalar, do not allow assignment
672+ from NULL-valued scalars.
673+ </ p >
674+ < p > < a href ="http://archives.postgresql.org/pgsql-hackers/2006-10/msg00070.php "> http://archives.postgresql.org/pgsql-hackers/2006-10/msg00070.php</ a >
644675</ p >
645676</ li > </ ul >
646- </ li > < li > Server-Side Languages
677+ </ li > < li > Other
647678< ul >
648- < li > PL/pgSQL
649- < ul >
650- < li > Fix RENAME to work on variables other than OLD/NEW
651- < p > < a href ="http://archives.postgresql.org/pgsql-hackers/2002-03/msg00591.php "> http://archives.postgresql.org/pgsql-hackers/2002-03/msg00591.php</ a >
652- < a href ="http://archives.postgresql.org/pgsql-hackers/2007-01/msg01615.php "> http://archives.postgresql.org/pgsql-hackers/2007-01/msg01615.php</ a >
653- < a href ="http://archives.postgresql.org/pgsql-hackers/2007-01/msg01587.php "> http://archives.postgresql.org/pgsql-hackers/2007-01/msg01587.php</ a >
654- </ p >
655- </ li > < li > Allow function parameters to be passed by name,
656- get_employee_salary(12345 AS emp_id, 2001 AS tax_year)
657- </ li > < li > Allow handling of %TYPE arrays, e.g. tab.col%TYPE[< a href ="http://momjian.postgresql.org/cgi-bin/pgtodo? "> </ a > ]
658- </ li > < li > Allow listing of record column names, and access to
659- record columns via variables, e.g. columns := r.(*),
660- tval2 := r.(colname)
661- < p > < a href ="http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php "> http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php</ a >
662- < a href ="http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php "> http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php</ a >
663- < a href ="http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php "> http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php</ a >
664- </ p >
665- </ li > < li > Add support for SCROLL cursors
666- </ li > < li > Add support for WITH HOLD cursors
667- </ li > < li > Allow row and record variables to be set to NULL constants,
668- and allow NULL tests on such variables
669- < p > Because a row is not scalar, do not allow assignment
670- from NULL-valued scalars.
671- </ p >
672- < p > < a href ="http://archives.postgresql.org/pgsql-hackers/2006-10/msg00070.php "> http://archives.postgresql.org/pgsql-hackers/2006-10/msg00070.php</ a >
673- </ p >
674- </ li > </ ul >
675- </ li > < li > Other
676- < ul >
677- < li > Add table function support to pltcl, plpythonu
678- </ li > < li > Add support for polymorphic arguments and return types to
679- languages other than PL/PgSQL
680- </ li > < li > Add capability to create and call PROCEDURES
681- </ li > < li > Add support for OUT and INOUT parameters to languages other
682- than PL/PgSQL
683- </ li > < li > Add PL/PythonU tracebacks
684- < p > < a href ="http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php "> http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php</ a >
685- </ p >
686- </ li > < li > Allow data to be passed in native language formats, rather
687- than only text
688- < p > < a href ="http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php "> http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php</ a >
679+ < li > Add table function support to pltcl, plpythonu
680+ </ li > < li > Add support for polymorphic arguments and return types to
681+ languages other than PL/PgSQL
682+ </ li > < li > Add capability to create and call PROCEDURES
683+ </ li > < li > Add support for OUT and INOUT parameters to languages other
684+ than PL/PgSQL
685+ </ li > < li > Add PL/PythonU tracebacks
686+ < p > < a href ="http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php "> http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php</ a >
687+ </ p >
688+ </ li > < li > Allow data to be passed in native language formats, rather
689+ than only text
690+ < p > < a href ="http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php "> http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php</ a >
689691</ p >
690- </ li > </ ul >
691692</ li > </ ul >
692693</ li > </ ul >
693- < h1 > < a name ="section_8 "> Clients</ a > </ h1 >
694+ < h1 > < a name ="section_10 "> Clients</ a > </ h1 >
694695
695696< ul >
696697< li > Have pg_ctl look at PGHOST in case it is a socket directory?
@@ -821,7 +822,7 @@ <h1><a name="section_8">Clients</a></h1>
821822</ p >
822823</ li > </ ul >
823824</ li > </ ul >
824- < h1 > < a name ="section_9 "> Triggers</ a > </ h1 >
825+ < h1 > < a name ="section_11 "> Triggers</ a > </ h1 >
825826
826827< ul >
827828< li > Add deferred trigger queue file
@@ -859,7 +860,7 @@ <h1><a name="section_9">Triggers</a></h1>
859860< p > < a href ="http://archives.postgresql.org/pgsql-sql/2008-01/msg00050.php "> http://archives.postgresql.org/pgsql-sql/2008-01/msg00050.php</ a >
860861</ p >
861862</ li > </ ul >
862- < h1 > < a name ="section_10 "> Indexes</ a > </ h1 >
863+ < h1 > < a name ="section_12 "> Indexes</ a > </ h1 >
863864
864865< ul >
865866< li > Add UNIQUE capability to non-btree indexes
@@ -931,7 +932,7 @@ <h1><a name="section_10">Indexes</a></h1>
931932< p > < a href ="http://archives.postgresql.org/pgsql-hackers/2007-03/msg01199.php "> http://archives.postgresql.org/pgsql-hackers/2007-03/msg01199.php</ a >
932933</ p >
933934</ li > </ ul >
934- < h1 > < a name ="section_11 "> Fsync</ a > </ h1 >
935+ < h1 > < a name ="section_13 "> Fsync</ a > </ h1 >
935936
936937< ul >
937938< li > Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options
@@ -941,7 +942,7 @@ <h1><a name="section_11">Fsync</a></h1>
941942</ p >
942943</ li > < li > Add program to test if fsync has a delay compared to non-fsync
943944</ li > </ ul >
944- < h1 > < a name ="section_12 "> Cache Usage</ a > </ h1 >
945+ < h1 > < a name ="section_14 "> Cache Usage</ a > </ h1 >
945946
946947< ul >
947948< li > Speed up COUNT(*)
@@ -994,7 +995,7 @@ <h1><a name="section_12">Cache Usage</a></h1>
994995< a href ="http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php "> http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php</ a >
995996</ p >
996997</ li > </ ul >
997- < h1 > < a name ="section_13 "> Vacuum</ a > </ h1 >
998+ < h1 > < a name ="section_15 "> Vacuum</ a > </ h1 >
998999
9991000< ul >
10001001< li > Improve speed with indexes
@@ -1045,7 +1046,7 @@ <h1><a name="section_13">Vacuum</a></h1>
10451046</ p >
10461047</ li > </ ul >
10471048</ li > </ ul >
1048- < h1 > < a name ="section_14 "> Locking</ a > </ h1 >
1049+ < h1 > < a name ="section_16 "> Locking</ a > </ h1 >
10491050
10501051< ul >
10511052< li > Fix priority ordering of read and write light-weight locks (Neil)
@@ -1071,7 +1072,7 @@ <h1><a name="section_14">Locking</a></h1>
10711072< a href ="http://archives.postgresql.org/pgsql-committers/2008-01/msg00365.php "> http://archives.postgresql.org/pgsql-committers/2008-01/msg00365.php</ a >
10721073</ p >
10731074</ li > </ ul >
1074- < h1 > < a name ="section_15 "> Startup Time Improvements</ a > </ h1 >
1075+ < h1 > < a name ="section_17 "> Startup Time Improvements</ a > </ h1 >
10751076
10761077< ul >
10771078< 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 @@ <h1><a name="section_15">Startup Time Improvements</a></h1>
10821083 a single session using multiple threads to execute a statement faster.
10831084</ p >
10841085</ li > </ ul >
1085- < h1 > < a name ="section_16 "> Write-Ahead Log</ a > </ h1 >
1086+ < h1 > < a name ="section_18 "> Write-Ahead Log</ a > </ h1 >
10861087
10871088< ul >
10881089< 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 @@ <h1><a name="section_16">Write-Ahead Log</a></h1>
11431144< a href ="http://archives.postgresql.org/pgsql-hackers/2008-02/msg01279.php "> http://archives.postgresql.org/pgsql-hackers/2008-02/msg01279.php</ a >
11441145</ p >
11451146</ li > </ ul >
1146- < h1 > < a name ="section_17 "> Optimizer / Executor</ a > </ h1 >
1147+ < h1 > < a name ="section_19 "> Optimizer / Executor</ a > </ h1 >
11471148
11481149< ul >
11491150< li > Improve selectivity functions for geometric operators
@@ -1166,7 +1167,7 @@ <h1><a name="section_17">Optimizer / Executor</a></h1>
11661167< p > < a href ="http://archives.postgresql.org/pgsql-hackers/2007-01/msg00096.php "> http://archives.postgresql.org/pgsql-hackers/2007-01/msg00096.php</ a >
11671168</ p >
11681169</ li > </ ul >
1169- < h1 > < a name ="section_18 "> Miscellaneous Performance</ a > </ h1 >
1170+ < h1 > < a name ="section_20 "> Miscellaneous Performance</ a > </ h1 >
11701171
11711172< ul >
11721173< li > Do async I/O for faster random read-ahead of data
@@ -1219,7 +1220,7 @@ <h1><a name="section_18">Miscellaneous Performance</a></h1>
12191220 concurrent reads from multiple devices in a partitioned table.
12201221</ p >
12211222</ li > </ ul >
1222- < h1 > < a name ="section_19 "> Source Code</ a > </ h1 >
1223+ < h1 > < a name ="section_21 "> Source Code</ a > </ h1 >
12231224
12241225< ul >
12251226< li > Add use of 'const' for variables in source tree
@@ -1286,7 +1287,7 @@ <h1><a name="section_19">Source Code</a></h1>
12861287 of result sets using new statement protocol
12871288</ li > </ ul >
12881289</ li > </ ul >
1289- < h1 > < a name ="section_20 "> Exotic Features</ a > </ h1 >
1290+ < h1 > < a name ="section_22 "> Exotic Features</ a > </ h1 >
12901291
12911292< ul >
12921293< li > Add pre-parsing phase that converts non-ISO syntax to supported
@@ -1313,7 +1314,7 @@ <h1><a name="section_20">Exotic Features</a></h1>
13131314< p > < a href ="http://archives.postgresql.org/pgsql-hackers/2008-01/msg00893.php "> http://archives.postgresql.org/pgsql-hackers/2008-01/msg00893.php</ a >
13141315</ p >
13151316</ li > </ ul >
1316- < h1 > < a name ="section_21 "> Features We Do< u > Not</ u > Want</ a > </ h1 >
1317+ < h1 > < a name ="section_23 "> Features We Do< u > Not</ u > Want</ a > </ h1 >
13171318
13181319< ul >
13191320< li > All backends running as threads in a single process (not wanted)