Bracketed items "[]" have more detail.
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
-Last updated: Sun Oct 17 23:26:56 EDT 2004
+Last updated: Mon Oct 18 12:13:19 EDT 2004
The most recent version of this document can be viewed at the PostgreSQL web
site, http://www.PostgreSQL.org.
* Improve replication solutions
o Automatic failover
- The proper solution to this will probably the use of a master/slave
- replication solution like Sloney and a connection pooling tool like
- pgpool.
+ The proper solution to this will probably the use of a master/slave
+ replication solution like Sloney and a connection pooling tool like
+ pgpool.
o Load balancing
- You can use any of the master/slave replication servers to use a
- standby server for data warehousing. To allow read/write queries to
- multiple servers, you need multi-master replication like pgcluster.
+ You can use any of the master/slave replication servers to use a
+ standby server for data warehousing. To allow read/write queries to
+ multiple servers, you need multi-master replication like pgcluster.
o Allow replication over unreliable or non-persistent links
o Improve vacuum of large objects, like /contrib/vacuumlo (?)
o Add security checking for large objects
- Currently large objects entries do not have owners. Permissions can
- only be set at the pg_largeobject table level.
+ Currently large objects entries do not have owners. Permissions can
+ only be set at the pg_largeobject table level.
o Auto-delete large objects when referencing row is deleted
o Allow read/write into TOAST values like large objects
- This requires the TOAST column to be stored EXTERNAL.
+ This requires the TOAST column to be stored EXTERNAL.
Multi-Language Support
o Allow ALTER TABLESPACE to move to different directories
o Allow databases and schemas to be moved to different tablespaces
- One complexity is whether moving a schema should move all existing
- schema objects or just define the location for future object creation.
+ One complexity is whether moving a schema should move all existing
+ schema objects or just define the location for future object creation.
o Allow moving system tables to other tablespaces, where possible
- Currently non-global system tables must be in the default database
- schema. Global system tables can never be moved.
+ Currently non-global system tables must be in the default database
+ schema. Global system tables can never be moved.
* CLUSTER
o Automatically maintain clustering on a table
- This might require some background daemon to maintain clustering
- during periods of low usage. It might also require tables to be only
- paritally filled for easier reorganization. Another idea would
- be to create a merged heap/index data file so an index lookup would
- automatically access the heap data too.
+ This might require some background daemon to maintain clustering
+ during periods of low usage. It might also require tables to be only
+ paritally filled for easier reorganization. Another idea would
+ be to create a merged heap/index data file so an index lookup would
+ automatically access the heap data too.
o Add default clustering to system tables
- To do this, determine the ideal cluster index for each system
- table and set the cluster setting during initdb.
+ To do this, determine the ideal cluster index for each system
+ table and set the cluster setting during initdb.
* COPY
o Allow COPY to report error lines and continue
- This requires the use of a savepoint before each COPY line is
- processed, with ROLLBACK on COPY failure.
+ 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 (?)
* CURSOR
o Allow UPDATE/DELETE WHERE CURRENT OF cursor
- This requires using the row ctid to map cursor rows back to the
- original heap row. This become more complicated if WITH HOLD cursors
- are to be supported because WITH HOLD cursors have a copy of the row
- and no FOR UPDATE lock.
+ This requires using the row ctid to map cursor rows back to the
+ original heap row. This become more complicated if WITH HOLD cursors
+ are to be supported because WITH HOLD cursors have a copy of the row
+ and no FOR UPDATE lock.
o Prevent DROP TABLE from dropping a row referenced by its own open
cursor (?)
o Allow pooled connections to list all open WITH HOLD cursors
- Because WITH HOLD cursors exist outside transactions, this allows
- them to be listed so they can be closed.
+ Because WITH HOLD cursors exist outside transactions, this allows
+ them to be listed so they can be closed.
* INSERT
o Allow INSERT/UPDATE of the system-generated oid value for a row
o Allow INSERT INTO tab (col1, ..) VALUES (val1, ..), (val2, ..)
o Allow INSERT/UPDATE ... RETURNING new.col or old.col
- This is useful for returning the auto-generated key for an INSERT.
- One complication is how to handle rules that run as part of
- the insert.
+ This is useful for returning the auto-generated key for an INSERT.
+ One complication is how to handle rules that run as part of
+ the insert.
* SHOW/SET
o Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM
ANALYZE, and CLUSTER
o Add SET PATH for schemas (?)
- This is basically the same as SET search_path.
+ This is basically the same as SET search_path.
o Prevent conflicting SET options from being set
- This requires a checking function to be called after the server
- configuration file is read.
+ This requires a checking function to be called after the server
+ configuration file is read.
* SERVER-SIDE LANGUAGES
o Allow PL/PgSQL's RAISE function to take expressions (?)
- Currently only constants are supported.
+ Currently only constants are supported.
o Change PL/PgSQL to use palloc() instead of malloc()
o Handle references to temporary tables that are created, destroyed,
then recreated during a session, and EXECUTE is not used
- This requires the cached PL/PgSQL byte code to be invalidated when
- an object referenced in the function is changed.
+ This requires the cached PL/PgSQL byte code to be invalidated when
+ an object referenced in the function is changed.
o Fix PL/pgSQL RENAME to work on variables other than OLD/NEW
o Improve PL/PgSQL exception handling using savepoints
* ECPG (?)
o Docs
- Document differences between ecpg and the SQL standard and
- information about the Informix-compatibility module.
+ Document differences between ecpg and the SQL standard and
+ information about the Informix-compatibility module.
o Solve cardinality > 1 for input descriptors / variables (?)
o Improve error handling (?)