@ -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:pgman@candle.pha.pa.us" > pgman@candle.pha.pa.us< / a > )< br / >
< p > Current maintainer: Bruce Momjian (< a href = "mailto:pgman@candle.pha.pa.us" > pgman@candle.pha.pa.us< / a > )< br / >
Last updated: Sat Dec 10 21:16:26 EST 2005
Last updated: Mon Dec 12 08:36:28 EST 2005
< / 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 > .
@ -27,9 +27,9 @@ first.
< ul >
< ul >
< li > %Remove behavior of postmaster -o after making postmaster/postgres
< li > %Remove behavior of postmaster -o after making postmaster/postgres
flags unique
flags unique
< / li > < li > %Allow pooled connections to list all prepared querie s
< / li > < li > %Allow pooled connections to list all prepared statement s
< p > This would allow an application inheriting a pooled connection to know
< p > This would allow an application inheriting a pooled connection to know
the querie s prepared in the current session.
the statement s prepared in the current session.
< / p >
< / p >
< / li > < li > Allow major upgrades without dump/reload, perhaps using pg_upgrade
< / li > < li > Allow major upgrades without dump/reload, perhaps using pg_upgrade
[< a href = "http://momjian.postgresql.org/cgi-bin/pgtodo?pg_upgrade" > pg_upgrade< / a > ]
[< a href = "http://momjian.postgresql.org/cgi-bin/pgtodo?pg_upgrade" > pg_upgrade< / a > ]
@ -130,7 +130,7 @@ first.
< / p >
< / p >
< / li > < li > %Create dump tool for write-ahead logs for use in determining
< / li > < li > %Create dump tool for write-ahead logs for use in determining
transaction id for point-in-time recovery
transaction id for point-in-time recovery
< / li > < li > Allow a warm standby system to also allow read-only querie s
< / li > < li > Allow a warm standby system to also allow read-only statement s
[< a href = "http://momjian.postgresql.org/cgi-bin/pgtodo?pitr" > pitr< / a > ]
[< a href = "http://momjian.postgresql.org/cgi-bin/pgtodo?pitr" > pitr< / a > ]
< p > This is useful for checking PITR recovery.
< p > This is useful for checking PITR recovery.
< / p >
< / p >
@ -368,7 +368,7 @@ first.
is for this to be a protocol-only feature. Another approach is to
is for this to be a protocol-only feature. Another approach is to
notify the protocol when a RESET CONNECTION command is used.
notify the protocol when a RESET CONNECTION command is used.
< / p >
< / p >
< / li > < li > Add GUC to issue notice about querie s that use unjoined tables
< / li > < li > Add GUC to issue notice about statement s that use unjoined tables
< / li > < li > Allow EXPLAIN to identify tables that were skipped because of
< / li > < li > Allow EXPLAIN to identify tables that were skipped because of
constraint_exclusion
constraint_exclusion
< / li > < li > Allow EXPLAIN output to be more easily processed by scripts
< / li > < li > Allow EXPLAIN output to be more easily processed by scripts
@ -443,7 +443,7 @@ first.
currently allowed.
currently allowed.
< / p >
< / p >
< / li > < li > Allow COPY to output from views
< / li > < li > Allow COPY to output from views
< p > Another idea would be to allow actual SELECT querie s in a COPY.
< p > Another idea would be to allow actual SELECT statement s in a COPY.
< / p >
< / p >
< / li > < / ul >
< / li > < / ul >
< / li > < li > GRANT/REVOKE
< / li > < li > GRANT/REVOKE
@ -502,7 +502,7 @@ first.
< / li > < li > Add table function support to pltcl, plpython
< / li > < li > Add table function support to pltcl, plpython
< / li > < li > Add capability to create and call PROCEDURES
< / li > < li > Add capability to create and call PROCEDURES
< / li > < li > Allow PL/pgSQL to handle %TYPE arrays, e.g. tab.col%TYPE[< a href = "http://momjian.postgresql.org/cgi-bin/pgtodo?" > < / a > ]
< / li > < li > Allow PL/pgSQL to handle %TYPE arrays, e.g. tab.col%TYPE[< a href = "http://momjian.postgresql.org/cgi-bin/pgtodo?" > < / a > ]
< / li > < li > Allow function argument names to be querie s from PL/PgSQL
< / li > < li > Allow function argument names to be statement s from PL/PgSQL
< / li > < li > Add MOVE to PL/pgSQL
< / li > < li > Add MOVE to PL/pgSQL
< / li > < li > Add support for polymorphic arguments and return types to
< / li > < li > Add support for polymorphic arguments and return types to
languages other than PL/PgSQL
languages other than PL/PgSQL
@ -536,9 +536,9 @@ first.
< / li > < li > Allow psql \pset boolean variables to set to fixed values, rather
< / li > < li > Allow psql \pset boolean variables to set to fixed values, rather
than toggle
than toggle
< / li > < li > Consistently display privilege information for all objects in psql
< / li > < li > Consistently display privilege information for all objects in psql
< / li > < li > Improve psql's handling of multi-line querie s
< / li > < li > Improve psql's handling of multi-line statement s
< p > Currently, while \e saves a single query as one entry, interactive
< p > Currently, while \e saves a single statement as one entry, interactive
queries are saved one line at a time. Ideally all querie s
statements are saved one line at a time. Ideally all statement s
whould be saved like \e does.
whould be saved like \e does.
< / p >
< / p >
< / li > < li > Allow multi-line column values to align in the proper columns
< / li > < li > Allow multi-line column values to align in the proper columns
@ -604,13 +604,13 @@ first.
< p > PQfnumber() should never have been doing lowercasing, but
< p > PQfnumber() should never have been doing lowercasing, but
historically it has so we need a way to prevent it
historically it has so we need a way to prevent it
< / p >
< / p >
< / li > < li > Allow query results to be automatically batched to the client
< / li > < li > Allow statement results to be automatically batched to the client
< p > Currently, all query results are transfered to the libpq
< p > Currently, all statement results are transfered to the libpq
client before libpq makes the results available to the
client before libpq makes the results available to the
application. This feature would allow the application to make
application. This feature would allow the application to make
use of the first result rows while the rest are transfered, or
use of the first result rows while the rest are transfered, or
held on the server waiting for them to be requested by libpq.
held on the server waiting for them to be requested by libpq.
One complexity is that a query like SELECT 1/col could error
One complexity is that a statement like SELECT 1/col could error
out mid-way through the result set.
out mid-way through the result set.
< / p >
< / p >
< / li > < / ul >
< / li > < / ul >
@ -671,7 +671,7 @@ first.
< / li > < li > Allow plug-in modules to emulate features from other databases
< / li > < li > Allow plug-in modules to emulate features from other databases
< / li > < li > SQL*Net listener that makes PostgreSQL appear as an Oracle database
< / li > < li > SQL*Net listener that makes PostgreSQL appear as an Oracle database
to clients
to clients
< / li > < li > Allow querie s across databases or servers with transaction
< / li > < li > Allow statement s across databases or servers with transaction
semantics
semantics
< p > This can be done using dblink and two-phase commit.
< p > This can be done using dblink and two-phase commit.
< / p >
< / p >
@ -714,8 +714,8 @@ first.
< / li > < li > Add fillfactor to control reserved free space during index creation
< / li > < li > Add fillfactor to control reserved free space during index creation
< / li > < li > Allow the creation of indexes with mixed ascending/descending specifiers
< / li > < li > Allow the creation of indexes with mixed ascending/descending specifiers
< / li > < li > Allow constraint_exclusion to work for UNIONs like it does for
< / li > < li > Allow constraint_exclusion to work for UNIONs like it does for
inheritance, allow it to work for UPDATE and DELETE querie s, and allow
inheritance, allow it to work for UPDATE and DELETE statement s, and allow
it to be used for all querie s with little performance impact
it to be used for all statement s with little performance impact
< / li > < li > Allow CREATE INDEX to take an additional parameter for use with
< / li > < li > Allow CREATE INDEX to take an additional parameter for use with
special index types
special index types
< / li > < li > Consider compressing indexes by storing key values duplicated in
< / li > < li > Consider compressing indexes by storing key values duplicated in
@ -792,7 +792,7 @@ first.
accessed bitmaps would have to be stored in shared memory. One 8k
accessed bitmaps would have to be stored in shared memory. One 8k
page of bitmaps could track 512MB of heap pages.
page of bitmaps could track 512MB of heap pages.
< / p >
< / p >
< / li > < li > Consider automatic caching of querie s at various levels:
< / li > < li > Consider automatic caching of statement s at various levels:
< ul >
< ul >
< li > Parsed query tree
< li > Parsed query tree
< / li > < li > Query execute plan
< / li > < li > Query execute plan
@ -855,7 +855,7 @@ first.
operating systems have trivial process creation time compared to
operating systems have trivial process creation time compared to
database startup overhead, but a few operating systems (WIn32,
database startup overhead, but a few operating systems (WIn32,
Solaris) might benefit from threading. Also explore the idea of
Solaris) might benefit from threading. Also explore the idea of
a single session using multiple threads to execute a query faster.
a single session using multiple threads to execute a statement faster.
< / p >
< / p >
< / li > < li > Add connection pooling
< / li > < li > Add connection pooling
< p > It is unclear if this should be done inside the backend code or done
< p > It is unclear if this should be done inside the backend code or done
@ -927,7 +927,7 @@ first.
< p > This would be beneficial when there are few distinct values. This is
< p > This would be beneficial when there are few distinct values. This is
already used by GROUP BY.
already used by GROUP BY.
< / p >
< / p >
< / li > < li > Log querie s where the optimizer row estimates were dramatically
< / li > < li > Log statement s where the optimizer row estimates were dramatically
different from the number of rows actually found?
different from the number of rows actually found?
< / li > < / ul >
< / li > < / ul >
< h1 > < a name = "section_21" > Miscellaneous Performance< / a > < / h1 >
< h1 > < a name = "section_21" > Miscellaneous Performance< / a > < / h1 >
@ -1037,7 +1037,7 @@ first.
< / li > < li > Add decoded type, length, precision
< / li > < li > Add decoded type, length, precision
< / li > < li > Use compression?
< / li > < li > Use compression?
< / li > < li > Update clients to use data types, typmod, < a href = "http://schema.table.column" > schema.table.column< / a > / names
< / li > < li > Update clients to use data types, typmod, < a href = "http://schema.table.column" > schema.table.column< / a > / names
of result sets using new query protocol
of result sets using new statement protocol
< / li > < / ul >
< / li > < / ul >
< / li > < / ul >
< / li > < / ul >
< hr / >
< hr / >