mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
More TODO list section restructuring.
This commit is contained in:
205
doc/TODO
205
doc/TODO
@ -2,7 +2,7 @@
|
|||||||
PostgreSQL TODO List
|
PostgreSQL TODO List
|
||||||
====================
|
====================
|
||||||
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
|
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
|
||||||
Last updated: Mon Jul 4 13:00:23 EDT 2005
|
Last updated: Mon Jul 4 13:43:32 EDT 2005
|
||||||
|
|
||||||
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.
|
||||||
@ -49,6 +49,7 @@ Administration
|
|||||||
|
|
||||||
|
|
||||||
* Improve replication solutions
|
* Improve replication solutions
|
||||||
|
|
||||||
o Load balancing
|
o Load balancing
|
||||||
|
|
||||||
You can use any of the master/slave replication servers to use a
|
You can use any of the master/slave replication servers to use a
|
||||||
@ -59,6 +60,7 @@ Administration
|
|||||||
|
|
||||||
|
|
||||||
* Configuration files
|
* Configuration files
|
||||||
|
|
||||||
o Add "include file" functionality in postgresql.conf
|
o Add "include file" functionality in postgresql.conf
|
||||||
o Allow postgresql.conf values to be set so they can not be changed
|
o Allow postgresql.conf values to be set so they can not be changed
|
||||||
by the user
|
by the user
|
||||||
@ -71,6 +73,7 @@ Administration
|
|||||||
|
|
||||||
|
|
||||||
* Tablespaces
|
* Tablespaces
|
||||||
|
|
||||||
* Allow a database in tablespace t1 with tables created in
|
* Allow a database in tablespace t1 with tables created in
|
||||||
tablespace t2 to be used as a template for a new database created
|
tablespace t2 to be used as a template for a new database created
|
||||||
with default tablespace t2
|
with default tablespace t2
|
||||||
@ -104,7 +107,8 @@ Administration
|
|||||||
o Allow per-tablespace quotas
|
o Allow per-tablespace quotas
|
||||||
|
|
||||||
|
|
||||||
* Point-in-time Recovery (PITR)
|
* Point-In-Time Recovery (PITR)
|
||||||
|
|
||||||
o Allow point-in-time recovery to archive partially filled
|
o Allow point-in-time recovery to archive partially filled
|
||||||
write-ahead logs [pitr]
|
write-ahead logs [pitr]
|
||||||
|
|
||||||
@ -163,21 +167,7 @@ Data Types
|
|||||||
* Have sequence dependency track use of DEFAULT sequences,
|
* Have sequence dependency track use of DEFAULT sequences,
|
||||||
seqname.nextval?
|
seqname.nextval?
|
||||||
* Disallow changing default expression of a SERIAL column?
|
* Disallow changing default expression of a SERIAL column?
|
||||||
* Allow infinite dates just like infinite timestamps
|
|
||||||
* Add a GUC variable to allow output of interval values in ISO8601 format
|
|
||||||
* Fix data types where equality comparison isn't intuitive, e.g. box
|
* Fix data types where equality comparison isn't intuitive, e.g. box
|
||||||
* Merge hardwired timezone names with the TZ database; allow either kind
|
|
||||||
everywhere a TZ name is currently taken
|
|
||||||
* Allow customization of the known set of TZ names (generalize the
|
|
||||||
present australian_timezones hack)
|
|
||||||
* Allow TIMESTAMP WITH TIME ZONE to store the original timezone
|
|
||||||
information, either zone name or offset from UTC [timezone]
|
|
||||||
|
|
||||||
If the TIMESTAMP value is stored with a time zone name, interval
|
|
||||||
computations should adjust based on the time zone rules, e.g. adding
|
|
||||||
24 hours to a timestamp would yield a different result from adding one
|
|
||||||
day.
|
|
||||||
|
|
||||||
* Prevent INET cast to CIDR if the unmasked bits are not zero, or
|
* Prevent INET cast to CIDR if the unmasked bits are not zero, or
|
||||||
zero the bits
|
zero the bits
|
||||||
* Prevent INET cast to CIDR from droping netmask, SELECT '1.1.1.1'::inet::cidr
|
* Prevent INET cast to CIDR from droping netmask, SELECT '1.1.1.1'::inet::cidr
|
||||||
@ -185,23 +175,42 @@ Data Types
|
|||||||
throw an error on overflow
|
throw an error on overflow
|
||||||
* Add 'tid != tid ' operator for use in corruption recovery
|
* Add 'tid != tid ' operator for use in corruption recovery
|
||||||
|
|
||||||
|
* Dates and Times
|
||||||
|
|
||||||
* Add ISO INTERVAL handling
|
o Allow infinite dates just like infinite timestamps
|
||||||
o Add support for day-time syntax, INTERVAL '1 2:03:04' DAY TO SECOND
|
o Add a GUC variable to allow output of interval values in ISO8601
|
||||||
o Add support for year-month syntax, INTERVAL '50-6' YEAR TO MONTH
|
format
|
||||||
o For syntax that isn't uniquely ISO or PG syntax, like '1:30' or
|
o Merge hardwired timezone names with the TZ database; allow either
|
||||||
'1', treat as ISO if there is a range specification clause,
|
kind everywhere a TZ name is currently taken
|
||||||
and as PG if there no clause is present, e.g. interpret '1:30'
|
o Allow customization of the known set of TZ names (generalize the
|
||||||
MINUTE TO SECOND as '1 minute 30 seconds', and interpret '1:30'
|
present australian_timezones hack)
|
||||||
as '1 hour, 30 minutes'
|
o Allow TIMESTAMP WITH TIME ZONE to store the original timezone
|
||||||
o Interpret INTERVAL '1 year' MONTH as CAST (INTERVAL '1 year' AS
|
information, either zone name or offset from UTC [timezone]
|
||||||
INTERVAL MONTH), and this should return '12 months'
|
|
||||||
o Round or truncate values to the requested precision, e.g.
|
If the TIMESTAMP value is stored with a time zone name, interval
|
||||||
INTERVAL '11 months' AS YEAR should return one or zero
|
computations should adjust based on the time zone rules, e.g.
|
||||||
o Support precision, CREATE TABLE foo (a INTERVAL MONTH(3))
|
adding 24 hours to a timestamp would yield a different result from
|
||||||
|
adding one day.
|
||||||
|
|
||||||
|
|
||||||
* ARRAYS
|
o Add ISO INTERVAL handling
|
||||||
|
o Add support for day-time syntax, INTERVAL '1 2:03:04' DAY TO
|
||||||
|
SECOND
|
||||||
|
o Add support for year-month syntax, INTERVAL '50-6' YEAR TO MONTH
|
||||||
|
o For syntax that isn't uniquely ISO or PG syntax, like '1:30' or
|
||||||
|
'1', treat as ISO if there is a range specification clause,
|
||||||
|
and as PG if there no clause is present, e.g. interpret
|
||||||
|
'1:30' MINUTE TO SECOND as '1 minute 30 seconds', and
|
||||||
|
interpret '1:30' as '1 hour, 30 minutes'
|
||||||
|
o Interpret INTERVAL '1 year' MONTH as CAST (INTERVAL '1 year' AS
|
||||||
|
INTERVAL MONTH), and this should return '12 months'
|
||||||
|
o Round or truncate values to the requested precision, e.g.
|
||||||
|
INTERVAL '11 months' AS YEAR should return one or zero
|
||||||
|
o Support precision, CREATE TABLE foo (a INTERVAL MONTH(3))
|
||||||
|
|
||||||
|
|
||||||
|
* Arrays
|
||||||
|
|
||||||
o Allow NULLs in arrays
|
o Allow NULLs in arrays
|
||||||
o Allow MIN()/MAX() on arrays
|
o Allow MIN()/MAX() on arrays
|
||||||
o Delay resolution of array expression's data type so assignment
|
o Delay resolution of array expression's data type so assignment
|
||||||
@ -210,7 +219,8 @@ Data Types
|
|||||||
of other than one
|
of other than one
|
||||||
|
|
||||||
|
|
||||||
* BINARY DATA
|
* Binary Data
|
||||||
|
|
||||||
o Improve vacuum of large objects, like /contrib/vacuumlo?
|
o Improve vacuum of large objects, like /contrib/vacuumlo?
|
||||||
o Add security checking for large objects
|
o Add security checking for large objects
|
||||||
|
|
||||||
@ -297,33 +307,23 @@ Views / Rules
|
|||||||
* Allow RULE recompilation
|
* Allow RULE recompilation
|
||||||
|
|
||||||
|
|
||||||
Commands
|
SQL Commands
|
||||||
========
|
============
|
||||||
|
|
||||||
* -Add BETWEEN SYMMETRIC/ASYMMETRIC
|
* -Add BETWEEN SYMMETRIC/ASYMMETRIC
|
||||||
* Change LIMIT/OFFSET and FETCH/MOVE to use int8
|
* Change LIMIT/OFFSET and FETCH/MOVE to use int8
|
||||||
* Allow CREATE TABLE AS to determine column lengths for complex
|
|
||||||
expressions like SELECT col1 || col2
|
|
||||||
* Allow UPDATE to handle complex aggregates [update]?
|
|
||||||
* -Add E'' escape string marker so eventually ordinary strings can treat
|
* -Add E'' escape string marker so eventually ordinary strings can treat
|
||||||
backslashes literally, for portability
|
backslashes literally, for portability
|
||||||
|
|
||||||
* Allow an alias to be provided for the target table in UPDATE/DELETE
|
|
||||||
|
|
||||||
This is not SQL-spec but many DBMSs allow it.
|
|
||||||
|
|
||||||
* -Allow additional tables to be specified in DELETE for joins
|
* -Allow additional tables to be specified in DELETE for joins
|
||||||
|
|
||||||
UPDATE already allows this (UPDATE...FROM) but we need similar
|
UPDATE already allows this (UPDATE...FROM) but we need similar
|
||||||
functionality in DELETE. It's been agreed that the keyword should
|
functionality in DELETE. It's been agreed that the keyword should
|
||||||
be USING, to avoid anything as confusing as DELETE FROM a FROM b.
|
be USING, to avoid anything as confusing as DELETE FROM a FROM b.
|
||||||
|
|
||||||
* Have initdb set DateStyle based on locale?
|
|
||||||
* Add CORRESPONDING BY to UNION/INTERSECT/EXCEPT
|
* Add CORRESPONDING BY to UNION/INTERSECT/EXCEPT
|
||||||
* -Allow REINDEX to rebuild all database indexes
|
* -Allow REINDEX to rebuild all database indexes
|
||||||
* Add ROLLUP, CUBE, GROUPING SETS options to GROUP BY
|
* Add ROLLUP, CUBE, GROUPING SETS options to GROUP BY
|
||||||
* Add a schema option to createlang
|
|
||||||
* Allow UPDATE tab SET ROW (col, ...) = (...) for updating multiple columns
|
|
||||||
* Allow SET CONSTRAINTS to be qualified by schema/table name
|
* Allow SET CONSTRAINTS to be qualified by schema/table name
|
||||||
* Allow TRUNCATE ... CASCADE/RESTRICT
|
* Allow TRUNCATE ... CASCADE/RESTRICT
|
||||||
* Allow PREPARE of cursors
|
* Allow PREPARE of cursors
|
||||||
@ -348,26 +348,9 @@ Commands
|
|||||||
message, perhaps indicating the row modified or other custom
|
message, perhaps indicating the row modified or other custom
|
||||||
information.
|
information.
|
||||||
|
|
||||||
* Use more reliable method for CREATE DATABASE to get a consistent copy
|
|
||||||
of db?
|
|
||||||
|
|
||||||
Currently the system uses the operating system COPY command to create
|
|
||||||
a new database.
|
|
||||||
|
|
||||||
* Add C code on Unix to copy directories for use in creating new databases
|
|
||||||
* Have pg_ctl look at PGHOST in case it is a socket directory?
|
|
||||||
* Allow pg_ctl to work properly with configuration files located outside
|
|
||||||
the PGDATA directory
|
|
||||||
|
|
||||||
pg_ctl can not read the pid file because it isn't located in the
|
|
||||||
config directory but in the PGDATA directory. The solution is to
|
|
||||||
allow pg_ctl to read and understand postgresql.conf to find the
|
|
||||||
data_directory value.
|
|
||||||
|
|
||||||
* Add a GUC variable to warn about non-standard SQL usage in queries
|
* Add a GUC variable to warn about non-standard SQL usage in queries
|
||||||
* Add MERGE command that does UPDATE/DELETE, or on failure, INSERT (rules,
|
* Add MERGE command that does UPDATE/DELETE, or on failure, INSERT (rules,
|
||||||
triggers?)
|
triggers?)
|
||||||
* Add ON COMMIT capability to CREATE TABLE AS SELECT
|
|
||||||
* Add NOVICE output level for helpful messages like automatic sequence/index
|
* Add NOVICE output level for helpful messages like automatic sequence/index
|
||||||
creation
|
creation
|
||||||
* Add COMMENT ON for all cluster global objects (roles, databases
|
* Add COMMENT ON for all cluster global objects (roles, databases
|
||||||
@ -390,11 +373,36 @@ Commands
|
|||||||
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.
|
||||||
|
|
||||||
* Allow FOR UPDATE queries to do NOWAIT locks
|
|
||||||
* Add GUC to issue notice about queries that use unjoined tables
|
* Add GUC to issue notice about queries that use unjoined tables
|
||||||
|
|
||||||
|
|
||||||
|
* CREATE
|
||||||
|
|
||||||
|
o Allow CREATE TABLE AS to determine column lengths for complex
|
||||||
|
expressions like SELECT col1 || col2
|
||||||
|
|
||||||
|
o Use more reliable method for CREATE DATABASE to get a consistent
|
||||||
|
copy of db?
|
||||||
|
|
||||||
|
o Currently the system uses the operating system COPY command to
|
||||||
|
create a new database. Add ON COMMIT capability to CREATE TABLE AS
|
||||||
|
SELECT
|
||||||
|
|
||||||
|
|
||||||
|
* UPDATE
|
||||||
|
o Allow UPDATE to handle complex aggregates [update]?
|
||||||
|
o Allow an alias to be provided for the target table in
|
||||||
|
UPDATE/DELETE
|
||||||
|
|
||||||
|
This is not SQL-spec but many DBMSs allow it.
|
||||||
|
|
||||||
|
o Allow UPDATE tab SET ROW (col, ...) = (...) for updating multiple
|
||||||
|
columns
|
||||||
|
o Allow FOR UPDATE queries to do NOWAIT locks
|
||||||
|
|
||||||
|
|
||||||
* ALTER
|
* ALTER
|
||||||
|
|
||||||
o Have ALTER TABLE RENAME rename SERIAL sequence names
|
o Have ALTER TABLE RENAME rename SERIAL sequence names
|
||||||
o Add ALTER DOMAIN TYPE
|
o Add ALTER DOMAIN TYPE
|
||||||
o Allow ALTER TABLE ... ALTER CONSTRAINT ... RENAME
|
o Allow ALTER TABLE ... ALTER CONSTRAINT ... RENAME
|
||||||
@ -413,6 +421,7 @@ Commands
|
|||||||
|
|
||||||
|
|
||||||
* CLUSTER
|
* CLUSTER
|
||||||
|
|
||||||
o Automatically maintain clustering on a table
|
o Automatically maintain clustering on a table
|
||||||
|
|
||||||
This might require some background daemon to maintain clustering
|
This might require some background daemon to maintain clustering
|
||||||
@ -430,6 +439,7 @@ Commands
|
|||||||
|
|
||||||
|
|
||||||
* COPY
|
* COPY
|
||||||
|
|
||||||
o Allow COPY to report error lines and continue
|
o Allow COPY to report error lines and continue
|
||||||
|
|
||||||
This requires the use of a savepoint before each COPY line is
|
This requires the use of a savepoint before each COPY line is
|
||||||
@ -443,6 +453,7 @@ Commands
|
|||||||
|
|
||||||
|
|
||||||
* GRANT/REVOKE
|
* GRANT/REVOKE
|
||||||
|
|
||||||
o Allow column-level privileges
|
o Allow column-level privileges
|
||||||
* Allow GRANT/REVOKE permissions to be applied to all schema objects with one
|
* Allow GRANT/REVOKE permissions to be applied to all schema objects with one
|
||||||
command
|
command
|
||||||
@ -456,6 +467,7 @@ Commands
|
|||||||
|
|
||||||
|
|
||||||
* CURSOR
|
* CURSOR
|
||||||
|
|
||||||
o Allow UPDATE/DELETE WHERE CURRENT OF cursor
|
o Allow UPDATE/DELETE WHERE CURRENT OF cursor
|
||||||
|
|
||||||
This requires using the row ctid to map cursor rows back to the
|
This requires using the row ctid to map cursor rows back to the
|
||||||
@ -473,6 +485,7 @@ Commands
|
|||||||
|
|
||||||
|
|
||||||
* INSERT
|
* INSERT
|
||||||
|
|
||||||
o Allow INSERT/UPDATE of the system-generated oid value for a row
|
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 INTO tab (col1, ..) VALUES (val1, ..), (val2, ..)
|
||||||
o Allow INSERT/UPDATE ... RETURNING new.col or old.col
|
o Allow INSERT/UPDATE ... RETURNING new.col or old.col
|
||||||
@ -483,6 +496,7 @@ Commands
|
|||||||
|
|
||||||
|
|
||||||
* SHOW/SET
|
* SHOW/SET
|
||||||
|
|
||||||
o -Have SHOW ALL show descriptions for server-side variables
|
o -Have SHOW ALL show descriptions for server-side variables
|
||||||
o Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM
|
o Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM
|
||||||
ANALYZE, and CLUSTER
|
ANALYZE, and CLUSTER
|
||||||
@ -491,7 +505,8 @@ Commands
|
|||||||
This is basically the same as SET search_path.
|
This is basically the same as SET search_path.
|
||||||
|
|
||||||
|
|
||||||
* SERVER-SIDE LANGUAGES
|
* Server-Side Languages
|
||||||
|
|
||||||
o -Allow PL/PgSQL's RAISE function to take expressions
|
o -Allow PL/PgSQL's RAISE function to take expressions
|
||||||
|
|
||||||
Currently only constants are supported.
|
Currently only constants are supported.
|
||||||
@ -526,20 +541,35 @@ Clients
|
|||||||
|
|
||||||
This would be used for checking if the server is up.
|
This would be used for checking if the server is up.
|
||||||
|
|
||||||
* Have psql show current values for a sequence
|
* Have initdb set DateStyle based on locale?
|
||||||
* Move psql backslash database information into the backend, use mnemonic
|
* Have pg_ctl look at PGHOST in case it is a socket directory?
|
||||||
commands? [psql]
|
* Add a schema option to createlang
|
||||||
|
* Allow pg_ctl to work properly with configuration files located outside
|
||||||
|
the PGDATA directory
|
||||||
|
|
||||||
This would allow non-psql clients to pull the same information out of
|
pg_ctl can not read the pid file because it isn't located in the
|
||||||
the database as psql.
|
config directory but in the PGDATA directory. The solution is to
|
||||||
|
allow pg_ctl to read and understand postgresql.conf to find the
|
||||||
|
data_directory value.
|
||||||
|
|
||||||
* Fix psql's display of schema information (Neil)
|
|
||||||
* Allow psql \pset boolean variables to set to fixed values, rather than toggle
|
* psql
|
||||||
* Consistently display privilege information for all objects in psql
|
o Have psql show current values for a sequence
|
||||||
* Improve psql's handling of multi-line queries
|
o Move psql backslash database information into the backend, use
|
||||||
|
mnemonic commands? [psql]
|
||||||
|
|
||||||
|
This would allow non-psql clients to pull the same information out
|
||||||
|
of the database as psql.
|
||||||
|
|
||||||
|
o Fix psql's display of schema information (Neil)
|
||||||
|
o Allow psql \pset boolean variables to set to fixed values, rather
|
||||||
|
than toggle
|
||||||
|
o Consistently display privilege information for all objects in psql
|
||||||
|
o Improve psql's handling of multi-line queries
|
||||||
|
|
||||||
|
|
||||||
* pg_dump
|
* pg_dump
|
||||||
|
|
||||||
o Have pg_dump use multi-statement transactions for INSERT dumps
|
o Have pg_dump use multi-statement transactions for INSERT dumps
|
||||||
o Allow pg_dump to use multiple -t and -n switches [pg_dump]
|
o Allow pg_dump to use multiple -t and -n switches [pg_dump]
|
||||||
o Add dumping of comments on composite type columns
|
o Add dumping of comments on composite type columns
|
||||||
@ -559,7 +589,8 @@ Clients
|
|||||||
o Update pg_dump and psql to use the new COPY libpq API (Christopher)
|
o Update pg_dump and psql to use the new COPY libpq API (Christopher)
|
||||||
|
|
||||||
|
|
||||||
* ECPG
|
* ecpg
|
||||||
|
|
||||||
o Docs
|
o Docs
|
||||||
|
|
||||||
Document differences between ecpg and the SQL standard and
|
Document differences between ecpg and the SQL standard and
|
||||||
@ -588,7 +619,6 @@ Referential Integrity
|
|||||||
This item involves dumping large queues into files.
|
This item involves dumping large queues into files.
|
||||||
|
|
||||||
* -Implement shared row locks and use them in RI triggers
|
* -Implement shared row locks and use them in RI triggers
|
||||||
* Enforce referential integrity for system tables
|
|
||||||
* Change foreign key constraint for array -> element to mean element
|
* Change foreign key constraint for array -> element to mean element
|
||||||
in array?
|
in array?
|
||||||
* Allow DEFERRABLE UNIQUE constraints?
|
* Allow DEFERRABLE UNIQUE constraints?
|
||||||
@ -609,6 +639,7 @@ Referential Integrity
|
|||||||
This was used in older releases to dump referential integrity
|
This was used in older releases to dump referential integrity
|
||||||
constraints.
|
constraints.
|
||||||
|
|
||||||
|
* Enforce referential integrity for system tables
|
||||||
* Allow AFTER triggers on system tables
|
* Allow AFTER triggers on system tables
|
||||||
|
|
||||||
System tables are modified in many places in the backend without going
|
System tables are modified in many places in the backend without going
|
||||||
@ -641,12 +672,12 @@ Exotic Features
|
|||||||
* Allow queries across databases or servers with transaction
|
* Allow queries across databases or servers with transaction
|
||||||
semantics
|
semantics
|
||||||
|
|
||||||
Right now contrib/dblink can be used to issue such queries except it
|
This can be done using dblink and two-phase commit.
|
||||||
does not have locking or transaction semantics. Two-phase commit is
|
|
||||||
needed to enable transaction semantics.
|
|
||||||
|
|
||||||
* -Add two-phase commit
|
* -Add two-phase commit
|
||||||
|
|
||||||
* Add the features of packages
|
* Add the features of packages
|
||||||
|
|
||||||
o Make private objects accessable only to objects in the same schema
|
o Make private objects accessable only to objects in the same schema
|
||||||
o Allow current_schema.objname to access current schema objects
|
o Allow current_schema.objname to access current schema objects
|
||||||
o Add session variables
|
o Add session variables
|
||||||
@ -666,7 +697,6 @@ Indexes
|
|||||||
that can span more than one table.
|
that can span more than one table.
|
||||||
|
|
||||||
* Add UNIQUE capability to non-btree indexes
|
* Add UNIQUE capability to non-btree indexes
|
||||||
* Add more GIST index support for geometric data types
|
|
||||||
* -Use indexes for MIN() and MAX()
|
* -Use indexes for MIN() and MAX()
|
||||||
|
|
||||||
MIN/MAX queries can already be rewritten as SELECT col FROM tab ORDER
|
MIN/MAX queries can already be rewritten as SELECT col FROM tab ORDER
|
||||||
@ -713,18 +743,22 @@ Indexes
|
|||||||
|
|
||||||
One solution is to create a partial index on an IS NULL expression.
|
One solution is to create a partial index on an IS NULL expression.
|
||||||
|
|
||||||
* -Add concurrency to GIST
|
|
||||||
* Allow accurate statistics to be collected on indexes with more than
|
* Allow accurate statistics to be collected on indexes with more than
|
||||||
one column or expression indexes, perhaps using per-index statistics
|
one column or expression indexes, perhaps using per-index statistics
|
||||||
* Add fillfactor to control reserved free space during index creation
|
* Add fillfactor to control reserved free space during index creation
|
||||||
* Allow the creation of indexes with mixed ascending/descending specifiers
|
* Allow the creation of indexes with mixed ascending/descending specifiers
|
||||||
* -Fix incorrect rtree results due to wrong assumptions about "over"
|
* -Fix incorrect rtree results due to wrong assumptions about "over"
|
||||||
operator semantics
|
operator semantics
|
||||||
* Allow GIST indexes to create certain complex index types, like digital
|
|
||||||
trees (see Aoki)
|
|
||||||
|
|
||||||
|
* 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)
|
||||||
|
|
||||||
* Hash
|
* Hash
|
||||||
|
|
||||||
o Pack hash index buckets onto disk pages more efficiently
|
o Pack hash index buckets onto disk pages more efficiently
|
||||||
|
|
||||||
Currently no only one hash bucket can be stored on a page. Ideally
|
Currently no only one hash bucket can be stored on a page. Ideally
|
||||||
@ -841,6 +875,7 @@ Vacuum
|
|||||||
the event of a system crash, the bitmap would probably be invalidated.
|
the event of a system crash, the bitmap would probably be invalidated.
|
||||||
|
|
||||||
* Auto-vacuum
|
* Auto-vacuum
|
||||||
|
|
||||||
o Move into the backend code
|
o Move into the backend code
|
||||||
o Use free-space map information to guide refilling
|
o Use free-space map information to guide refilling
|
||||||
o Do VACUUM FULL if table is nearly empty?
|
o Do VACUUM FULL if table is nearly empty?
|
||||||
@ -849,7 +884,7 @@ Vacuum
|
|||||||
Locking
|
Locking
|
||||||
=======
|
=======
|
||||||
|
|
||||||
* Make locking of shared data structures more fine-grained
|
* -Make locking of shared data structures more fine-grained
|
||||||
|
|
||||||
This requires that more locks be acquired but this would reduce lock
|
This requires that more locks be acquired but this would reduce lock
|
||||||
contention, improving concurrency.
|
contention, improving concurrency.
|
||||||
@ -926,7 +961,7 @@ Write-Ahead Log
|
|||||||
remove the 'fsync' parameter (which results in an an inconsistent
|
remove the 'fsync' parameter (which results in an an inconsistent
|
||||||
database) in favor of this capability.
|
database) in favor of this capability.
|
||||||
|
|
||||||
* Eliminate WAL logging for CREATE TABLE AS when not doing WAL archiving
|
* -Eliminate WAL logging for CREATE TABLE AS when not doing WAL archiving
|
||||||
* -Change WAL to use 32-bit CRC, for performance reasons
|
* -Change WAL to use 32-bit CRC, for performance reasons
|
||||||
|
|
||||||
|
|
||||||
@ -946,7 +981,7 @@ Optimizer / Executor
|
|||||||
* Create utility to compute accurate random_page_cost value
|
* Create utility to compute accurate random_page_cost value
|
||||||
* Improve ability to display optimizer analysis using OPTIMIZER_DEBUG
|
* Improve ability to display optimizer analysis using OPTIMIZER_DEBUG
|
||||||
* Have EXPLAIN ANALYZE highlight poor optimizer estimates
|
* Have EXPLAIN ANALYZE highlight poor optimizer estimates
|
||||||
* Use CHECK constraints to influence optimizer decisions
|
* -Use CHECK constraints to influence optimizer decisions
|
||||||
|
|
||||||
CHECK constraints contain information about the distribution of values
|
CHECK constraints contain information about the distribution of values
|
||||||
within the table. This is also useful for implementing subtables where
|
within the table. This is also useful for implementing subtables where
|
||||||
@ -1026,7 +1061,10 @@ Source Code
|
|||||||
|
|
||||||
* Fix cross-compiling of time zone database via 'zic'
|
* Fix cross-compiling of time zone database via 'zic'
|
||||||
* Fix sgmltools so PDFs can be generated with bookmarks
|
* Fix sgmltools so PDFs can be generated with bookmarks
|
||||||
|
* Add C code on Unix to copy directories for use in creating new databases
|
||||||
|
|
||||||
* Win32
|
* Win32
|
||||||
|
|
||||||
o Remove configure.in check for link failure when cause is found
|
o Remove configure.in check for link failure when cause is found
|
||||||
o Remove readdir() errno patch when runtime/mingwex/dirent.c rev
|
o Remove readdir() errno patch when runtime/mingwex/dirent.c rev
|
||||||
1.4 is released
|
1.4 is released
|
||||||
@ -1046,6 +1084,7 @@ Source Code
|
|||||||
locales but provides no ordering or character set classes.
|
locales but provides no ordering or character set classes.
|
||||||
|
|
||||||
* Wire Protocol Changes
|
* Wire Protocol Changes
|
||||||
|
|
||||||
o Allow dynamic character set handling
|
o Allow dynamic character set handling
|
||||||
o Add decoded type, length, precision
|
o Add decoded type, length, precision
|
||||||
o Use compression?
|
o Use compression?
|
||||||
|
@ -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: Mon Jul 4 13:00:23 EDT 2005
|
Last updated: Mon Jul 4 13:43:32 EDT 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>.
|
||||||
@ -101,7 +101,7 @@ first.
|
|||||||
</li><li>Allow per-tablespace quotas
|
</li><li>Allow per-tablespace quotas
|
||||||
</li></ul>
|
</li></ul>
|
||||||
</li></ul>
|
</li></ul>
|
||||||
</li><li>Point-in-time Recovery (PITR)
|
</li><li>Point-In-Time Recovery (PITR)
|
||||||
<ul>
|
<ul>
|
||||||
<li>Allow point-in-time recovery to archive partially filled
|
<li>Allow point-in-time recovery to archive partially filled
|
||||||
write-ahead logs [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?pitr">pitr</a>]
|
write-ahead logs [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?pitr">pitr</a>]
|
||||||
@ -157,42 +157,47 @@ first.
|
|||||||
<li>Have sequence dependency track use of DEFAULT sequences,
|
<li>Have sequence dependency track use of DEFAULT sequences,
|
||||||
seqname.nextval?
|
seqname.nextval?
|
||||||
</li><li>Disallow changing default expression of a SERIAL column?
|
</li><li>Disallow changing default expression of a SERIAL column?
|
||||||
</li><li>Allow infinite dates just like infinite timestamps
|
|
||||||
</li><li>Add a GUC variable to allow output of interval values in ISO8601 format
|
|
||||||
</li><li>Fix data types where equality comparison isn't intuitive, e.g. box
|
</li><li>Fix data types where equality comparison isn't intuitive, e.g. box
|
||||||
</li><li>Merge hardwired timezone names with the TZ database; allow either kind
|
|
||||||
everywhere a TZ name is currently taken
|
|
||||||
</li><li>Allow customization of the known set of TZ names (generalize the
|
|
||||||
present australian_timezones hack)
|
|
||||||
</li><li>Allow TIMESTAMP WITH TIME ZONE to store the original timezone
|
|
||||||
information, either zone name or offset from UTC [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?timezone">timezone</a>]
|
|
||||||
<p> If the TIMESTAMP value is stored with a time zone name, interval
|
|
||||||
computations should adjust based on the time zone rules, e.g. adding
|
|
||||||
24 hours to a timestamp would yield a different result from adding one
|
|
||||||
day.
|
|
||||||
</p>
|
|
||||||
</li><li>Prevent INET cast to CIDR if the unmasked bits are not zero, or
|
</li><li>Prevent INET cast to CIDR if the unmasked bits are not zero, or
|
||||||
zero the bits
|
zero the bits
|
||||||
</li><li>Prevent INET cast to CIDR from droping netmask, SELECT '<a href="telnet://1.1.1.1">1.1.1.1</a>'::inet::cidr
|
</li><li>Prevent INET cast to CIDR from droping netmask, SELECT '<a href="telnet://1.1.1.1">1.1.1.1</a>'::inet::cidr
|
||||||
</li><li>Allow INET + INT4 to increment the host part of the address, or
|
</li><li>Allow INET + INT4 to increment the host part of the address, or
|
||||||
throw an error on overflow
|
throw an error on overflow
|
||||||
</li><li>Add 'tid != tid ' operator for use in corruption recovery
|
</li><li>Add 'tid != tid ' operator for use in corruption recovery
|
||||||
</li><li>Add ISO INTERVAL handling
|
</li><li>Dates and Times
|
||||||
<ul>
|
<ul>
|
||||||
<li>Add support for day-time syntax, INTERVAL '1 2:03:04' DAY TO SECOND
|
<li>Allow infinite dates just like infinite timestamps
|
||||||
</li><li>Add support for year-month syntax, INTERVAL '50-6' YEAR TO MONTH
|
</li><li>Add a GUC variable to allow output of interval values in ISO8601
|
||||||
</li><li>For syntax that isn't uniquely ISO or PG syntax, like '1:30' or
|
format
|
||||||
'1', treat as ISO if there is a range specification clause,
|
</li><li>Merge hardwired timezone names with the TZ database; allow either
|
||||||
and as PG if there no clause is present, e.g. interpret '1:30'
|
kind everywhere a TZ name is currently taken
|
||||||
MINUTE TO SECOND as '1 minute 30 seconds', and interpret '1:30'
|
</li><li>Allow customization of the known set of TZ names (generalize the
|
||||||
as '1 hour, 30 minutes'
|
present australian_timezones hack)
|
||||||
</li><li>Interpret INTERVAL '1 year' MONTH as CAST (INTERVAL '1 year' AS
|
</li><li>Allow TIMESTAMP WITH TIME ZONE to store the original timezone
|
||||||
INTERVAL MONTH), and this should return '12 months'
|
information, either zone name or offset from UTC [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?timezone">timezone</a>]
|
||||||
</li><li>Round or truncate values to the requested precision, e.g.
|
<p> If the TIMESTAMP value is stored with a time zone name, interval
|
||||||
INTERVAL '11 months' AS YEAR should return one or zero
|
computations should adjust based on the time zone rules, e.g.
|
||||||
</li><li>Support precision, CREATE TABLE foo (a INTERVAL MONTH(3))
|
adding 24 hours to a timestamp would yield a different result from
|
||||||
</li></ul>
|
adding one day.
|
||||||
</li><li>ARRAYS
|
</p>
|
||||||
|
</li><li>Add ISO INTERVAL handling
|
||||||
|
<ul>
|
||||||
|
<li>Add support for day-time syntax, INTERVAL '1 2:03:04' DAY TO
|
||||||
|
SECOND
|
||||||
|
</li><li>Add support for year-month syntax, INTERVAL '50-6' YEAR TO MONTH
|
||||||
|
</li><li>For syntax that isn't uniquely ISO or PG syntax, like '1:30' or
|
||||||
|
'1', treat as ISO if there is a range specification clause,
|
||||||
|
and as PG if there no clause is present, e.g. interpret
|
||||||
|
<p> '1:30' MINUTE TO SECOND as '1 minute 30 seconds', and
|
||||||
|
interpret '1:30' as '1 hour, 30 minutes'
|
||||||
|
<li>Interpret INTERVAL '1 year' MONTH as CAST (INTERVAL '1 year' AS
|
||||||
|
INTERVAL MONTH), and this should return '12 months'
|
||||||
|
</li><li>Round or truncate values to the requested precision, e.g.
|
||||||
|
INTERVAL '11 months' AS YEAR should return one or zero
|
||||||
|
</li><li>Support precision, CREATE TABLE foo (a INTERVAL MONTH(3))
|
||||||
|
</li></ul>
|
||||||
|
</p></ul>
|
||||||
|
</li><li>Arrays
|
||||||
<ul>
|
<ul>
|
||||||
<li>Allow NULLs in arrays
|
<li>Allow NULLs in arrays
|
||||||
</li><li>Allow MIN()/MAX() on arrays
|
</li><li>Allow MIN()/MAX() on arrays
|
||||||
@ -201,7 +206,7 @@ first.
|
|||||||
</li><li>Modify array literal representation to handle array index lower bound
|
</li><li>Modify array literal representation to handle array index lower bound
|
||||||
of other than one
|
of other than one
|
||||||
</li></ul>
|
</li></ul>
|
||||||
</li><li>BINARY DATA
|
</li><li>Binary Data
|
||||||
<ul>
|
<ul>
|
||||||
<li>Improve vacuum of large objects, like /contrib/vacuumlo?
|
<li>Improve vacuum of large objects, like /contrib/vacuumlo?
|
||||||
</li><li>Add security checking for large objects
|
</li><li>Add security checking for large objects
|
||||||
@ -280,30 +285,21 @@ first.
|
|||||||
</li><li>Allow temporary views on non-temporary tables
|
</li><li>Allow temporary views on non-temporary tables
|
||||||
</li><li>Allow RULE recompilation
|
</li><li>Allow RULE recompilation
|
||||||
</li></ul>
|
</li></ul>
|
||||||
<h1><a name="section_8">Commands</a></h1>
|
<h1><a name="section_8">SQL Commands</a></h1>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>-<em>Add BETWEEN SYMMETRIC/ASYMMETRIC</em>
|
<li>-<em>Add BETWEEN SYMMETRIC/ASYMMETRIC</em>
|
||||||
</li><li>Change LIMIT/OFFSET and FETCH/MOVE to use int8
|
</li><li>Change LIMIT/OFFSET and FETCH/MOVE to use int8
|
||||||
</li><li>Allow CREATE TABLE AS to determine column lengths for complex
|
|
||||||
expressions like SELECT col1 || col2
|
|
||||||
</li><li>Allow UPDATE to handle complex aggregates [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?update">update</a>]?
|
|
||||||
</li><li>-<em>Add E'' escape string marker so eventually ordinary strings can treat</em>
|
</li><li>-<em>Add E'' escape string marker so eventually ordinary strings can treat</em>
|
||||||
backslashes literally, for portability
|
backslashes literally, for portability
|
||||||
</li><li>Allow an alias to be provided for the target table in UPDATE/DELETE
|
|
||||||
<p> This is not SQL-spec but many DBMSs allow it.
|
|
||||||
</p>
|
|
||||||
</li><li>-<em>Allow additional tables to be specified in DELETE for joins</em>
|
</li><li>-<em>Allow additional tables to be specified in DELETE for joins</em>
|
||||||
<p> UPDATE already allows this (UPDATE...FROM) but we need similar
|
<p> UPDATE already allows this (UPDATE...FROM) but we need similar
|
||||||
functionality in DELETE. It's been agreed that the keyword should
|
functionality in DELETE. It's been agreed that the keyword should
|
||||||
be USING, to avoid anything as confusing as DELETE FROM a FROM b.
|
be USING, to avoid anything as confusing as DELETE FROM a FROM b.
|
||||||
</p>
|
</p>
|
||||||
</li><li>Have initdb set DateStyle based on locale?
|
|
||||||
</li><li>Add CORRESPONDING BY to UNION/INTERSECT/EXCEPT
|
</li><li>Add CORRESPONDING BY to UNION/INTERSECT/EXCEPT
|
||||||
</li><li>-<em>Allow REINDEX to rebuild all database indexes</em>
|
</li><li>-<em>Allow REINDEX to rebuild all database indexes</em>
|
||||||
</li><li>Add ROLLUP, CUBE, GROUPING SETS options to GROUP BY
|
</li><li>Add ROLLUP, CUBE, GROUPING SETS options to GROUP BY
|
||||||
</li><li>Add a schema option to createlang
|
|
||||||
</li><li>Allow UPDATE tab SET ROW (col, ...) = (...) for updating multiple columns
|
|
||||||
</li><li>Allow SET CONSTRAINTS to be qualified by schema/table name
|
</li><li>Allow SET CONSTRAINTS to be qualified by schema/table name
|
||||||
</li><li>Allow TRUNCATE ... CASCADE/RESTRICT
|
</li><li>Allow TRUNCATE ... CASCADE/RESTRICT
|
||||||
</li><li>Allow PREPARE of cursors
|
</li><li>Allow PREPARE of cursors
|
||||||
@ -324,25 +320,10 @@ first.
|
|||||||
<p> This would allow an informational message to be added to the notify
|
<p> This would allow an informational message to be added to the notify
|
||||||
message, perhaps indicating the row modified or other custom
|
message, perhaps indicating the row modified or other custom
|
||||||
information.
|
information.
|
||||||
</p>
|
|
||||||
</li><li>Use more reliable method for CREATE DATABASE to get a consistent copy
|
|
||||||
of db?
|
|
||||||
<p> Currently the system uses the operating system COPY command to create
|
|
||||||
a new database.
|
|
||||||
</p>
|
|
||||||
</li><li>Add C code on Unix to copy directories for use in creating new databases
|
|
||||||
</li><li>Have pg_ctl look at PGHOST in case it is a socket directory?
|
|
||||||
</li><li>Allow pg_ctl to work properly with configuration files located outside
|
|
||||||
the PGDATA directory
|
|
||||||
<p> pg_ctl can not read the pid file because it isn't located in the
|
|
||||||
config directory but in the PGDATA directory. The solution is to
|
|
||||||
allow pg_ctl to read and understand postgresql.conf to find the
|
|
||||||
data_directory value.
|
|
||||||
</p>
|
</p>
|
||||||
</li><li>Add a GUC variable to warn about non-standard SQL usage in queries
|
</li><li>Add a GUC variable to warn about non-standard SQL usage in queries
|
||||||
</li><li>Add MERGE command that does UPDATE/DELETE, or on failure, INSERT (rules,
|
</li><li>Add MERGE command that does UPDATE/DELETE, or on failure, INSERT (rules,
|
||||||
triggers?)
|
triggers?)
|
||||||
</li><li>Add ON COMMIT capability to CREATE TABLE AS SELECT
|
|
||||||
</li><li>Add NOVICE output level for helpful messages like automatic sequence/index
|
</li><li>Add NOVICE output level for helpful messages like automatic sequence/index
|
||||||
creation
|
creation
|
||||||
</li><li>Add COMMENT ON for all cluster global objects (roles, databases
|
</li><li>Add COMMENT ON for all cluster global objects (roles, databases
|
||||||
@ -363,8 +344,28 @@ 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>Allow FOR UPDATE queries to do NOWAIT locks
|
|
||||||
</li><li>Add GUC to issue notice about queries that use unjoined tables
|
</li><li>Add GUC to issue notice about queries that use unjoined tables
|
||||||
|
</li><li>CREATE
|
||||||
|
<ul>
|
||||||
|
<li>Allow CREATE TABLE AS to determine column lengths for complex
|
||||||
|
expressions like SELECT col1 || col2
|
||||||
|
</li><li>Use more reliable method for CREATE DATABASE to get a consistent
|
||||||
|
copy of db?
|
||||||
|
</li><li>Currently the system uses the operating system COPY command to
|
||||||
|
create a new database. Add ON COMMIT capability to CREATE TABLE AS
|
||||||
|
SELECT
|
||||||
|
</li></ul>
|
||||||
|
</li><li>UPDATE
|
||||||
|
<ul>
|
||||||
|
<li>Allow UPDATE to handle complex aggregates [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?update">update</a>]?
|
||||||
|
</li><li>Allow an alias to be provided for the target table in
|
||||||
|
UPDATE/DELETE
|
||||||
|
<p> This is not SQL-spec but many DBMSs allow it.
|
||||||
|
</p>
|
||||||
|
</li><li>Allow UPDATE tab SET ROW (col, ...) = (...) for updating multiple
|
||||||
|
columns
|
||||||
|
</li><li>Allow FOR UPDATE queries to do NOWAIT locks
|
||||||
|
</li></ul>
|
||||||
</li><li>ALTER
|
</li><li>ALTER
|
||||||
<ul>
|
<ul>
|
||||||
<li>Have ALTER TABLE RENAME rename SERIAL sequence names
|
<li>Have ALTER TABLE RENAME rename SERIAL sequence names
|
||||||
@ -458,7 +459,7 @@ first.
|
|||||||
<p> This is basically the same as SET search_path.
|
<p> This is basically the same as SET search_path.
|
||||||
</p>
|
</p>
|
||||||
</li></ul>
|
</li></ul>
|
||||||
</li><li>SERVER-SIDE LANGUAGES
|
</li><li>Server-Side Languages
|
||||||
<ul>
|
<ul>
|
||||||
<li>-<em>Allow PL/PgSQL's RAISE function to take expressions</em>
|
<li>-<em>Allow PL/PgSQL's RAISE function to take expressions</em>
|
||||||
<p> Currently only constants are supported.
|
<p> Currently only constants are supported.
|
||||||
@ -491,16 +492,30 @@ first.
|
|||||||
</li><li>Allow libpq to access SQLSTATE so pg_ctl can test for connection failure
|
</li><li>Allow libpq to access SQLSTATE so pg_ctl can test for connection failure
|
||||||
<p> This would be used for checking if the server is up.
|
<p> This would be used for checking if the server is up.
|
||||||
</p>
|
</p>
|
||||||
</li><li>Have psql show current values for a sequence
|
</li><li>Have initdb set DateStyle based on locale?
|
||||||
</li><li>Move psql backslash database information into the backend, use mnemonic
|
</li><li>Have pg_ctl look at PGHOST in case it is a socket directory?
|
||||||
commands? [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?psql">psql</a>]
|
</li><li>Add a schema option to createlang
|
||||||
<p> This would allow non-psql clients to pull the same information out of
|
</li><li>Allow pg_ctl to work properly with configuration files located outside
|
||||||
the database as psql.
|
the PGDATA directory
|
||||||
|
<p> pg_ctl can not read the pid file because it isn't located in the
|
||||||
|
config directory but in the PGDATA directory. The solution is to
|
||||||
|
allow pg_ctl to read and understand postgresql.conf to find the
|
||||||
|
data_directory value.
|
||||||
</p>
|
</p>
|
||||||
</li><li>Fix psql's display of schema information (Neil)
|
</li><li>psql
|
||||||
</li><li>Allow psql \pset boolean variables to set to fixed values, rather than toggle
|
<ul>
|
||||||
</li><li>Consistently display privilege information for all objects in psql
|
<li>Have psql show current values for a sequence
|
||||||
</li><li>Improve psql's handling of multi-line queries
|
</li><li>Move psql backslash database information into the backend, use
|
||||||
|
mnemonic commands? [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?psql">psql</a>]
|
||||||
|
<p> This would allow non-psql clients to pull the same information out
|
||||||
|
of the database as psql.
|
||||||
|
</p>
|
||||||
|
</li><li>Fix psql's display of schema information (Neil)
|
||||||
|
</li><li>Allow psql \pset boolean variables to set to fixed values, rather
|
||||||
|
than toggle
|
||||||
|
</li><li>Consistently display privilege information for all objects in psql
|
||||||
|
</li><li>Improve psql's handling of multi-line queries
|
||||||
|
</li></ul>
|
||||||
</li><li>pg_dump
|
</li><li>pg_dump
|
||||||
<ul>
|
<ul>
|
||||||
<li>Have pg_dump use multi-statement transactions for INSERT dumps
|
<li>Have pg_dump use multi-statement transactions for INSERT dumps
|
||||||
@ -520,7 +535,7 @@ first.
|
|||||||
</li><li>Add CSV output format
|
</li><li>Add CSV output format
|
||||||
</li><li>Update pg_dump and psql to use the new COPY libpq API (Christopher)
|
</li><li>Update pg_dump and psql to use the new COPY libpq API (Christopher)
|
||||||
</li></ul>
|
</li></ul>
|
||||||
</li><li>ECPG
|
</li><li>ecpg
|
||||||
<ul>
|
<ul>
|
||||||
<li>Docs
|
<li>Docs
|
||||||
<p> Document differences between ecpg and the SQL standard and
|
<p> Document differences between ecpg and the SQL standard and
|
||||||
@ -548,7 +563,6 @@ first.
|
|||||||
This item involves dumping large queues into files.
|
This item involves dumping large queues into files.
|
||||||
</p>
|
</p>
|
||||||
</li><li>-<em>Implement shared row locks and use them in RI triggers</em>
|
</li><li>-<em>Implement shared row locks and use them in RI triggers</em>
|
||||||
</li><li>Enforce referential integrity for system tables
|
|
||||||
</li><li>Change foreign key constraint for array -> element to mean element
|
</li><li>Change foreign key constraint for array -> element to mean element
|
||||||
in array?
|
in array?
|
||||||
</li><li>Allow DEFERRABLE UNIQUE constraints?
|
</li><li>Allow DEFERRABLE UNIQUE constraints?
|
||||||
@ -566,6 +580,7 @@ first.
|
|||||||
<p> This was used in older releases to dump referential integrity
|
<p> This was used in older releases to dump referential integrity
|
||||||
constraints.
|
constraints.
|
||||||
</p>
|
</p>
|
||||||
|
</li><li>Enforce referential integrity for system tables
|
||||||
</li><li>Allow AFTER triggers on system tables
|
</li><li>Allow AFTER triggers on system tables
|
||||||
<p> System tables are modified in many places in the backend without going
|
<p> System tables are modified in many places in the backend without going
|
||||||
through the executor and therefore not causing triggers to fire. To
|
through the executor and therefore not causing triggers to fire. To
|
||||||
@ -594,9 +609,7 @@ first.
|
|||||||
to clients
|
to clients
|
||||||
</li><li>Allow queries across databases or servers with transaction
|
</li><li>Allow queries across databases or servers with transaction
|
||||||
semantics
|
semantics
|
||||||
<p> Right now contrib/dblink can be used to issue such queries except it
|
<p> This can be done using dblink and two-phase commit.
|
||||||
does not have locking or transaction semantics. Two-phase commit is
|
|
||||||
needed to enable transaction semantics.
|
|
||||||
</p>
|
</p>
|
||||||
</li><li>-<em>Add two-phase commit</em>
|
</li><li>-<em>Add two-phase commit</em>
|
||||||
</li><li>Add the features of packages
|
</li><li>Add the features of packages
|
||||||
@ -619,7 +632,6 @@ first.
|
|||||||
that can span more than one table.
|
that can span more than one table.
|
||||||
</p>
|
</p>
|
||||||
</li><li>Add UNIQUE capability to non-btree indexes
|
</li><li>Add UNIQUE capability to non-btree indexes
|
||||||
</li><li>Add more GIST index support for geometric data types
|
|
||||||
</li><li>-<em>Use indexes for MIN() and MAX()</em>
|
</li><li>-<em>Use indexes for MIN() and MAX()</em>
|
||||||
<p> MIN/MAX queries can already be rewritten as SELECT col FROM tab ORDER
|
<p> MIN/MAX queries can already be rewritten as SELECT col FROM tab ORDER
|
||||||
BY col {DESC} LIMIT 1. Completing this item involves doing this
|
BY col {DESC} LIMIT 1. Completing this item involves doing this
|
||||||
@ -659,15 +671,19 @@ first.
|
|||||||
</li><li>Allow use of indexes to search for NULLs
|
</li><li>Allow use of indexes to search for NULLs
|
||||||
<p> One solution is to create a partial index on an IS NULL expression.
|
<p> One solution is to create a partial index on an IS NULL expression.
|
||||||
</p>
|
</p>
|
||||||
</li><li>-<em>Add concurrency to GIST</em>
|
|
||||||
</li><li>Allow accurate statistics to be collected on indexes with more than
|
</li><li>Allow accurate statistics to be collected on indexes with more than
|
||||||
one column or expression indexes, perhaps using per-index statistics
|
one column or expression indexes, perhaps using per-index statistics
|
||||||
</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>-<em>Fix incorrect rtree results due to wrong assumptions about "over"</em>
|
</li><li>-<em>Fix incorrect rtree results due to wrong assumptions about "over"</em>
|
||||||
operator semantics
|
operator semantics
|
||||||
</li><li>Allow GIST indexes to create certain complex index types, like digital
|
</li><li>GIST
|
||||||
trees (see Aoki)
|
<ul>
|
||||||
|
<li>Add more GIST index support for geometric data types
|
||||||
|
</li><li>-<em>Add concurrency to GIST</em>
|
||||||
|
</li><li>Allow GIST indexes to create certain complex index types, like
|
||||||
|
digital trees (see Aoki)
|
||||||
|
</li></ul>
|
||||||
</li><li>Hash
|
</li><li>Hash
|
||||||
<ul>
|
<ul>
|
||||||
<li>Pack hash index buckets onto disk pages more efficiently
|
<li>Pack hash index buckets onto disk pages more efficiently
|
||||||
@ -782,7 +798,7 @@ first.
|
|||||||
<h1><a name="section_17">Locking</a></h1>
|
<h1><a name="section_17">Locking</a></h1>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>Make locking of shared data structures more fine-grained
|
<li>-<em>Make locking of shared data structures more fine-grained</em>
|
||||||
<p> This requires that more locks be acquired but this would reduce lock
|
<p> This requires that more locks be acquired but this would reduce lock
|
||||||
contention, improving concurrency.
|
contention, improving concurrency.
|
||||||
</p>
|
</p>
|
||||||
@ -849,7 +865,7 @@ first.
|
|||||||
remove the 'fsync' parameter (which results in an an inconsistent
|
remove the 'fsync' parameter (which results in an an inconsistent
|
||||||
database) in favor of this capability.
|
database) in favor of this capability.
|
||||||
</p>
|
</p>
|
||||||
</li><li>Eliminate WAL logging for CREATE TABLE AS when not doing WAL archiving
|
</li><li>-<em>Eliminate WAL logging for CREATE TABLE AS when not doing WAL archiving</em>
|
||||||
</li><li>-<em>Change WAL to use 32-bit CRC, for performance reasons</em>
|
</li><li>-<em>Change WAL to use 32-bit CRC, for performance reasons</em>
|
||||||
</li></ul>
|
</li></ul>
|
||||||
<h1><a name="section_20">Optimizer / Executor</a></h1>
|
<h1><a name="section_20">Optimizer / Executor</a></h1>
|
||||||
@ -867,7 +883,7 @@ first.
|
|||||||
</li><li>Create utility to compute accurate random_page_cost value
|
</li><li>Create utility to compute accurate random_page_cost value
|
||||||
</li><li>Improve ability to display optimizer analysis using OPTIMIZER_DEBUG
|
</li><li>Improve ability to display optimizer analysis using OPTIMIZER_DEBUG
|
||||||
</li><li>Have EXPLAIN ANALYZE highlight poor optimizer estimates
|
</li><li>Have EXPLAIN ANALYZE highlight poor optimizer estimates
|
||||||
</li><li>Use CHECK constraints to influence optimizer decisions
|
</li><li>-<em>Use CHECK constraints to influence optimizer decisions</em>
|
||||||
<p> CHECK constraints contain information about the distribution of values
|
<p> CHECK constraints contain information about the distribution of values
|
||||||
within the table. This is also useful for implementing subtables where
|
within the table. This is also useful for implementing subtables where
|
||||||
a tables content is distributed across several subtables.
|
a tables content is distributed across several subtables.
|
||||||
@ -938,6 +954,7 @@ first.
|
|||||||
</p>
|
</p>
|
||||||
</li><li>Fix cross-compiling of time zone database via 'zic'
|
</li><li>Fix cross-compiling of time zone database via 'zic'
|
||||||
</li><li>Fix sgmltools so PDFs can be generated with bookmarks
|
</li><li>Fix sgmltools so PDFs can be generated with bookmarks
|
||||||
|
</li><li>Add C code on Unix to copy directories for use in creating new databases
|
||||||
</li><li>Win32
|
</li><li>Win32
|
||||||
<ul>
|
<ul>
|
||||||
<li>Remove configure.in check for link failure when cause is found
|
<li>Remove configure.in check for link failure when cause is found
|
||||||
@ -999,6 +1016,6 @@ first.
|
|||||||
</li><li>Tatsuo is Tatsuo Ishii <<a href="mailto:t-ishii@sra.co.jp">t-ishii@sra.co.jp</a>> of Software Research Assoc.
|
</li><li>Tatsuo is Tatsuo Ishii <<a href="mailto:t-ishii@sra.co.jp">t-ishii@sra.co.jp</a>> of Software Research Assoc.
|
||||||
</li><li>Tom is Tom Lane <<a href="mailto:tgl@sss.pgh.pa.us">tgl@sss.pgh.pa.us</a>> of Red Hat
|
</li><li>Tom is Tom Lane <<a href="mailto:tgl@sss.pgh.pa.us">tgl@sss.pgh.pa.us</a>> of Red Hat
|
||||||
</li></ul>
|
</li></ul>
|
||||||
|
</li></ul></li></ul>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Reference in New Issue
Block a user