mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-11-27 07:21:09 +08:00
Update TODO list based on 8.3 completed items:
< * Allow major upgrades without dump/reload, perhaps using pg_upgrade < [pg_upgrade] < * Check for unreferenced table files created by transactions that were < in-progress when the server terminated abruptly < < http://archives.postgresql.org/pgsql-patches/2006-06/msg00096.php < > * Check for unreferenced table files created by transactions that were > in-progress when the server terminated abruptly > > http://archives.postgresql.org/pgsql-patches/2006-06/msg00096.php > < * Support table partitioning that allows a single table to be stored < in subtables that are partitioned based on the primary key or a WHERE < clause < creation of rules for INSERT/UPDATE/DELETE, and constraints for < rapid partition selection. Options could include range and hash > creation of triggers or rules for INSERT/UPDATE/DELETE, and constraints > for rapid partition selection. Options could include range and hash < < * Improve replication solutions < < 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. < < o Allow replication over unreliable or non-persistent links < < < o Mark change-on-restart-only values in postgresql.conf < All objects in the default database tablespace must have default < tablespace specifications. This is because new databases are < created by copying directories. If you mix default tablespace < tables and tablespace-specified tables in the same directory, < creating a new database from such a mixed directory would create a < new database with tables that had incorrect explicit tablespaces. < To fix this would require modifying pg_class in the newly copied < database, which we don't currently do. > Currently all objects in the default database tablespace must > have default tablespace specifications. This is because new > databases are created by copying directories. If you mix default > tablespace tables and tablespace-specified tables in the same > directory, creating a new database from such a mixed directory > would create a new database with tables that had incorrect > explicit tablespaces. To fix this would require modifying > pg_class in the newly copied database, which we don't currently > do. < < o Allow recovery.conf to allow the same syntax as > o Allow recovery.conf to support the same syntax as < * Allow user-defined types to specify a type modifier at table creation < time < * Allow all data types to cast to and from TEXT < < http://archives.postgresql.org/pgsql-hackers/2007-04/msg00017.php < < < o Add support for year-month syntax, INTERVAL '50-6' YEAR TO MONTH < o Interpret INTERVAL '1 year' MONTH as CAST (INTERVAL '1 year' AS < INTERVAL MONTH), and this should return '12 months' > o Add support for year-month syntax, INTERVAL '50-6' YEAR > TO MONTH > o Interpret INTERVAL '1 year' MONTH as CAST (INTERVAL '1 > year' AS INTERVAL MONTH), and this should return '12 months' < * Allow MONEY to be cast to/from other numeric data types > * Allow MONEY to be easily cast to/from other numeric data types > < * Allow functions to have a schema search path specified at creation time < * Fix cases where invalid byte encodings are accepted by the database, < but throw an error on SELECT < < http://archives.postgresql.org/pgsql-hackers/2007-03/msg00767.php < * Improve logging of prepared statements recovered during startup > * Improve logging of prepared transactions recovered during startup < * Make standard_conforming_strings the default in 8.4? > * Make standard_conforming_strings the default in 8.5? < * Allow the count returned by SELECT, etc to be to represent as an int64 > * Allow the count returned by SELECT, etc to be represented as an int64 < o Use more reliable method for CREATE DATABASE to get a consistent < copy of db? < o Fix transaction restriction checks for CREATE DATABASE and < other commands < < http://archives.postgresql.org/pgsql-hackers/2007-01/msg00133.php < currently allowed. > currently allowed. This currently is done if the table is > created inside the same transaction block as the COPY because > no other backends can see the table. < o Add SET PATH for schemas? < < This is basically the same as SET search_path. < o Enforce referential integrity for system tables < o Add Oracle-style packages (Pavel) < < A package would be a schema with session-local variables, < public/private functions, and initialization functions. It < is also possible to implement these capabilities < in all schemas and not use a separate "packages" < syntax at all. < < http://archives.postgresql.org/pgsql-hackers/2006-08/msg00384.php < < o Add single-step debugging of functions < o Allow RETURN to return row or record functions < < http://archives.postgresql.org/pgsql-patches/2005-11/msg00045.php < http://archives.postgresql.org/pgsql-patches/2006-08/msg00397.php < http://archives.postgresql.org/pgsql-hackers/2006-09/msg00388.php < < o Fix problems with RETURN NEXT on tables with < dropped/added columns after function creation < < http://archives.postgresql.org/pgsql-patches/2006-02/msg00165.php < < * Make consistent use of long/short command options --- pg_ctl needs < long ones, pg_config doesn't have short ones, postgres doesn't have < enough long ones, etc. < < < < o Consider parsing the -c string into individual queries so each < is run in its own transaction < < http://archives.postgresql.org/pgsql-hackers/2007-01/msg00291.php < < < o Remove unnecessary function pointer abstractions in pg_dump source < code > o Remove unnecessary function pointer abstractions in pg_dump source > code < < < o Fix SSL retry to avoid useless repeated connection attempts and < ensuing misleading error messages > < < This is difficult because it requires datatype-specific knowledge. < < * Improve commit_delay handling to reduce fsync() < * %Add an option to sync() before fsync()'ing checkpoint files > < * Reduce lock time during VACUUM FULL by moving tuples with read lock, < then write lock and truncate table < < Moved tuples are invisible to other backends so they don't require a < write lock. However, the read lock promotion to write lock could lead < to deadlock situations. < < * Prevent long-lived temporary tables from causing frozen-xid advancement < starvation < < The problem is that autovacuum cannot vacuum them to set frozen xids; < only the session that created them can do that. < < < < o Use free-space map information to guide refilling < o Consider logging activity either to the logs or a system view > The problem is that autovacuum cannot vacuum them to set frozen xids; > only the session that created them can do that. < * Add connection pooling < < It is unclear if this should be done inside the backend code or done < by something external like pgpool. The passing of file descriptors to < existing backends is one of the difficulties with a backend approach. < < * Consider reducing memory used for shared buffer reference count < < http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php < < * %Remove memory/file descriptor freeing before ereport(ERROR) < * %Promote debug_query_string into a server-side function current_query() < * Allow ecpg to work with MSVC and BCC < * Add xpath_array() to /contrib/xml2 to return results as an array < * Allow building in directories containing spaces < < This is probably not possible because 'gmake' and other compiler tools < do not fully support quoting of paths with spaces. < < * Fix sgmltools so PDFs can be generated with bookmarks < * Split out libpq pgpass and environment documentation sections to make < it easier for non-developers to find < * Use strlcpy() rather than our StrNCpy() macro < < http://archives.postgresql.org/pgsql-hackers/2006-09/msg02108.php < < o Re-enable timezone output on log_line_prefix '%t' when a < shorter timezone string is available < * Allow statements across databases or servers with transaction < semantics < < This can be done using dblink and two-phase commit. > * Add Oracle-style packages (Pavel) < * Add the features of packages > A package would be a schema with session-local variables, > public/private functions, and initialization functions. It > is also possible to implement these capabilities > in any schema and not use a separate "packages" > syntax at all. < o Make private objects accessible only to objects in the same schema < o Allow current_schema.objname to access current schema objects < o Add session variables < o Allow nested schemas > http://archives.postgresql.org/pgsql-hackers/2006-08/msg00384.php
This commit is contained in:
parent
835a51c67e
commit
a225bf05e0
208
doc/TODO
208
doc/TODO
@ -1,7 +1,7 @@
|
||||
PostgreSQL TODO List
|
||||
====================
|
||||
Current maintainer: Bruce Momjian (bruce@momjian.us)
|
||||
Last updated: Sat Dec 29 19:42:32 EST 2007
|
||||
Last updated: Sat Dec 29 22:22:39 EST 2007
|
||||
|
||||
The most recent version of this document can be viewed at
|
||||
http://www.postgresql.org/docs/faqs.TODO.html.
|
||||
@ -20,13 +20,6 @@ http://developer.postgresql.org.
|
||||
Administration
|
||||
==============
|
||||
|
||||
* Allow major upgrades without dump/reload, perhaps using pg_upgrade
|
||||
[pg_upgrade]
|
||||
* Check for unreferenced table files created by transactions that were
|
||||
in-progress when the server terminated abruptly
|
||||
|
||||
http://archives.postgresql.org/pgsql-patches/2006-06/msg00096.php
|
||||
|
||||
* Allow administrators to safely terminate individual sessions either
|
||||
via an SQL function or SIGTERM
|
||||
|
||||
@ -37,6 +30,11 @@ Administration
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2006-08/msg00174.php
|
||||
|
||||
* Check for unreferenced table files created by transactions that were
|
||||
in-progress when the server terminated abruptly
|
||||
|
||||
http://archives.postgresql.org/pgsql-patches/2006-06/msg00096.php
|
||||
|
||||
* Set proper permissions on non-system schemas during db creation
|
||||
|
||||
Currently all schemas are owned by the super-user because they are copied
|
||||
@ -44,9 +42,6 @@ Administration
|
||||
from the template database, it is not clear that setting schemas to the db
|
||||
owner is correct.
|
||||
|
||||
* Support table partitioning that allows a single table to be stored
|
||||
in subtables that are partitioned based on the primary key or a WHERE
|
||||
clause
|
||||
* Add function to report the time of the most recent server reload
|
||||
* Allow statistics collector information to be pulled from the collector
|
||||
process directly, rather than requiring the collector to write a
|
||||
@ -61,8 +56,8 @@ Administration
|
||||
* Simplify ability to create partitioned tables
|
||||
|
||||
This would allow creation of partitioned tables without requiring
|
||||
creation of rules for INSERT/UPDATE/DELETE, and constraints for
|
||||
rapid partition selection. Options could include range and hash
|
||||
creation of triggers or rules for INSERT/UPDATE/DELETE, and constraints
|
||||
for rapid partition selection. Options could include range and hash
|
||||
partition selection.
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2007-03/msg00375.php
|
||||
@ -90,18 +85,6 @@ Administration
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2007-12/msg00924.php
|
||||
|
||||
|
||||
* Improve replication solutions
|
||||
|
||||
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.
|
||||
|
||||
o Allow replication over unreliable or non-persistent links
|
||||
|
||||
|
||||
* Configuration files
|
||||
|
||||
o Allow pg_hba.conf to specify host names along with IP addresses
|
||||
@ -118,7 +101,6 @@ Administration
|
||||
o Allow the server to be stopped/restarted via an SQL API
|
||||
o Issue a warning if a change-on-restart-only postgresql.conf value
|
||||
is modified and the server config files are reloaded
|
||||
o Mark change-on-restart-only values in postgresql.conf
|
||||
|
||||
|
||||
* Tablespaces
|
||||
@ -127,14 +109,15 @@ Administration
|
||||
tablespace t2 to be used as a template for a new database created
|
||||
with default tablespace t2
|
||||
|
||||
All objects in the default database tablespace must have default
|
||||
tablespace specifications. This is because new databases are
|
||||
created by copying directories. If you mix default tablespace
|
||||
tables and tablespace-specified tables in the same directory,
|
||||
creating a new database from such a mixed directory would create a
|
||||
new database with tables that had incorrect explicit tablespaces.
|
||||
To fix this would require modifying pg_class in the newly copied
|
||||
database, which we don't currently do.
|
||||
Currently all objects in the default database tablespace must
|
||||
have default tablespace specifications. This is because new
|
||||
databases are created by copying directories. If you mix default
|
||||
tablespace tables and tablespace-specified tables in the same
|
||||
directory, creating a new database from such a mixed directory
|
||||
would create a new database with tables that had incorrect
|
||||
explicit tablespaces. To fix this would require modifying
|
||||
pg_class in the newly copied database, which we don't currently
|
||||
do.
|
||||
|
||||
o Allow reporting of which objects are in which tablespaces
|
||||
|
||||
@ -156,13 +139,12 @@ Administration
|
||||
[pitr]
|
||||
|
||||
This is useful for checking PITR recovery.
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php
|
||||
|
||||
o %Create dump tool for write-ahead logs for use in determining
|
||||
transaction id for point-in-time recovery
|
||||
o Allow the PITR process to be debugged and data examined
|
||||
o Allow recovery.conf to allow the same syntax as
|
||||
o Allow recovery.conf to support the same syntax as
|
||||
postgresql.conf, including quoting
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2006-12/msg00497.php
|
||||
@ -180,8 +162,6 @@ Data Types
|
||||
http://archives.postgresql.org/pgsql-patches/2007-02/msg00505.php
|
||||
|
||||
* Fix data types where equality comparison isn't intuitive, e.g. box
|
||||
* Allow user-defined types to specify a type modifier at table creation
|
||||
time
|
||||
* Add support for public SYNONYMs
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2006-03/msg00519.php
|
||||
@ -204,11 +184,6 @@ Data Types
|
||||
|
||||
* Consider placing all sequences in a single table, or create a system
|
||||
view
|
||||
* Allow all data types to cast to and from TEXT
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2007-04/msg00017.php
|
||||
|
||||
|
||||
* Dates and Times
|
||||
|
||||
o Allow infinite dates and intervals just like infinite timestamps
|
||||
@ -275,9 +250,10 @@ Data Types
|
||||
range of units supported, e.g. PostgreSQL supports '1 year 1
|
||||
hour', while the SQL standard does not.
|
||||
|
||||
o Add support for year-month syntax, INTERVAL '50-6' YEAR TO MONTH
|
||||
o Interpret INTERVAL '1 year' MONTH as CAST (INTERVAL '1 year' AS
|
||||
INTERVAL MONTH), and this should return '12 months'
|
||||
o Add support for year-month syntax, INTERVAL '50-6' YEAR
|
||||
TO MONTH
|
||||
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))
|
||||
@ -319,7 +295,8 @@ Data Types
|
||||
|
||||
* MONEY dumps in a locale-specific format making it difficult to
|
||||
restore to a system with a different locale
|
||||
* Allow MONEY to be cast to/from other numeric data types
|
||||
* Allow MONEY to be easily cast to/from other numeric data types
|
||||
|
||||
|
||||
|
||||
Functions
|
||||
@ -335,7 +312,6 @@ Functions
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2005-12/msg00948.php
|
||||
|
||||
* Allow functions to have a schema search path specified at creation time
|
||||
* Allow substring/replace() to get/set bit values
|
||||
* Allow to_char() on interval values to accumulate the highest unit
|
||||
requested
|
||||
@ -430,10 +406,6 @@ Multi-Language Support
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2006-08/msg01696.php
|
||||
|
||||
* Fix cases where invalid byte encodings are accepted by the database,
|
||||
but throw an error on SELECT
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2007-03/msg00767.php
|
||||
|
||||
|
||||
Views / Rules
|
||||
@ -481,7 +453,7 @@ SQL Commands
|
||||
manually or automatically when statistics for execute parameters
|
||||
differ dramatically from those used during planning.
|
||||
|
||||
* Improve logging of prepared statements recovered during startup
|
||||
* Improve logging of prepared transactions recovered during startup
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2006-11/msg00092.php
|
||||
|
||||
@ -523,7 +495,7 @@ SQL Commands
|
||||
constraint_exclusion
|
||||
* Allow EXPLAIN output to be more easily processed by scripts, perhaps XML
|
||||
* Enable standard_conforming_strings
|
||||
* Make standard_conforming_strings the default in 8.4?
|
||||
* Make standard_conforming_strings the default in 8.5?
|
||||
|
||||
When this is done, backslash-quote should be prohibited in non-E''
|
||||
strings because of possible confusion over how such strings treat
|
||||
@ -533,7 +505,7 @@ SQL Commands
|
||||
|
||||
* Simplify dropping roles that have objects in several databases
|
||||
* Allow COMMENT ON to accept an expression rather than just a string
|
||||
* Allow the count returned by SELECT, etc to be to represent as an int64
|
||||
* Allow the count returned by SELECT, etc to be represented as an int64
|
||||
to allow a higher range of values
|
||||
* Add SQL99 WITH clause to SELECT
|
||||
* Add SQL:2003 WITH RECURSIVE (hierarchical) queries to SELECT
|
||||
@ -562,12 +534,6 @@ SQL Commands
|
||||
|
||||
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 Fix transaction restriction checks for CREATE DATABASE and
|
||||
other commands
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2007-01/msg00133.php
|
||||
|
||||
o Have WITH CONSTRAINTS also create constraint indexes
|
||||
|
||||
@ -663,7 +629,9 @@ SQL Commands
|
||||
be removed or have its heap and index files truncated. One
|
||||
issue is that no other backend should be able to add to
|
||||
the table at the same time, which is something that is
|
||||
currently allowed.
|
||||
currently allowed. This currently is done if the table is
|
||||
created inside the same transaction block as the COPY because
|
||||
no other backends can see the table.
|
||||
|
||||
|
||||
* GRANT/REVOKE
|
||||
@ -699,9 +667,6 @@ SQL Commands
|
||||
|
||||
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.
|
||||
|
||||
|
||||
* Referential Integrity
|
||||
@ -709,7 +674,6 @@ SQL Commands
|
||||
o Add MATCH PARTIAL referential integrity
|
||||
o Change foreign key constraint for array -> element to mean element
|
||||
in array?
|
||||
o Enforce referential integrity for system tables
|
||||
o Fix problem when cascading referential triggers make changes on
|
||||
cascaded tables, seeing the tables in an intermediate state
|
||||
|
||||
@ -738,16 +702,6 @@ SQL Commands
|
||||
|
||||
o Allow function parameters to be passed by name,
|
||||
get_employee_salary(12345 AS emp_id, 2001 AS tax_year)
|
||||
o Add Oracle-style packages (Pavel)
|
||||
|
||||
A package would be a schema with session-local variables,
|
||||
public/private functions, and initialization functions. It
|
||||
is also possible to implement these capabilities
|
||||
in all schemas and not use a separate "packages"
|
||||
syntax at all.
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2006-08/msg00384.php
|
||||
|
||||
o Allow handling of %TYPE arrays, e.g. tab.col%TYPE[]
|
||||
o Allow listing of record column names, and access to
|
||||
record columns via variables, e.g. columns := r.(*),
|
||||
@ -757,20 +711,8 @@ SQL Commands
|
||||
http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php
|
||||
http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php
|
||||
|
||||
o Add single-step debugging of functions
|
||||
o Add support for SCROLL cursors
|
||||
o Add support for WITH HOLD cursors
|
||||
o Allow RETURN to return row or record functions
|
||||
|
||||
http://archives.postgresql.org/pgsql-patches/2005-11/msg00045.php
|
||||
http://archives.postgresql.org/pgsql-patches/2006-08/msg00397.php
|
||||
http://archives.postgresql.org/pgsql-hackers/2006-09/msg00388.php
|
||||
|
||||
o Fix problems with RETURN NEXT on tables with
|
||||
dropped/added columns after function creation
|
||||
|
||||
http://archives.postgresql.org/pgsql-patches/2006-02/msg00165.php
|
||||
|
||||
o Allow row and record variables to be set to NULL constants,
|
||||
and allow NULL tests on such variables
|
||||
|
||||
@ -808,13 +750,7 @@ Clients
|
||||
allow pg_ctl to read and understand postgresql.conf to find the
|
||||
data_directory value.
|
||||
|
||||
* Make consistent use of long/short command options --- pg_ctl needs
|
||||
long ones, pg_config doesn't have short ones, postgres doesn't have
|
||||
enough long ones, etc.
|
||||
|
||||
|
||||
* psql
|
||||
|
||||
o Have psql show current values for a sequence
|
||||
o Move psql backslash database information into the backend, use
|
||||
mnemonic commands? [psql]
|
||||
@ -842,11 +778,6 @@ Clients
|
||||
because setting the transaction isolation level must be the
|
||||
first statement of a transaction.
|
||||
|
||||
o Consider parsing the -c string into individual queries so each
|
||||
is run in its own transaction
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2007-01/msg00291.php
|
||||
|
||||
o Add a \set variable to control whether \s displays line numbers
|
||||
|
||||
Another option is to add \# which lists line numbers, and
|
||||
@ -856,13 +787,10 @@ Clients
|
||||
|
||||
|
||||
* pg_dump
|
||||
|
||||
o %Add dumping of comments on index columns and composite type columns
|
||||
o %Add full object name to the tag field. eg. for operators we need
|
||||
'=(integer, integer)', instead of just '='.
|
||||
o Add pg_dumpall custom format dumps?
|
||||
o Remove unnecessary function pointer abstractions in pg_dump source
|
||||
code
|
||||
o Allow selection of individual object(s) of all types, not just
|
||||
tables
|
||||
o In a selective dump, allow dumping of an object and all its
|
||||
@ -875,10 +803,11 @@ Clients
|
||||
applied to the loaded database, even if the database has a
|
||||
different name. This will require new backend syntax, perhaps
|
||||
COMMENT ON CURRENT DATABASE.
|
||||
o Remove unnecessary function pointer abstractions in pg_dump source
|
||||
code
|
||||
|
||||
|
||||
* ecpg
|
||||
|
||||
o Docs
|
||||
|
||||
Document differences between ecpg and the SQL standard and
|
||||
@ -898,7 +827,6 @@ Clients
|
||||
|
||||
|
||||
* libpq
|
||||
|
||||
o Add PQescapeIdentifierConn()
|
||||
o Prevent PQfnumber() from lowercasing unquoted the column name
|
||||
|
||||
@ -914,8 +842,7 @@ Clients
|
||||
held on the server waiting for them to be requested by libpq.
|
||||
One complexity is that a statement like SELECT 1/col could error
|
||||
out mid-way through the result set.
|
||||
o Fix SSL retry to avoid useless repeated connection attempts and
|
||||
ensuing misleading error messages
|
||||
|
||||
o Consider disallowing multiple queries in PQexec() as an
|
||||
additional barrier to SQL injection attacks
|
||||
|
||||
@ -996,9 +923,6 @@ Indexes
|
||||
|
||||
* Consider compressing indexes by storing key values duplicated in
|
||||
several rows as a single index entry
|
||||
|
||||
This is difficult because it requires datatype-specific knowledge.
|
||||
|
||||
* Add REINDEX CONCURRENTLY, like CREATE INDEX CONCURRENTLY
|
||||
|
||||
This is difficult because you must upgrade to an exclusive table lock
|
||||
@ -1059,14 +983,12 @@ Indexes
|
||||
Fsync
|
||||
=====
|
||||
|
||||
* Improve commit_delay handling to reduce fsync()
|
||||
* Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options
|
||||
|
||||
Ideally this requires a separate test program that can be run
|
||||
at initdb time or optionally later. Consider O_SYNC when
|
||||
O_DIRECT exists.
|
||||
|
||||
* %Add an option to sync() before fsync()'ing checkpoint files
|
||||
* Add program to test if fsync has a delay compared to non-fsync
|
||||
|
||||
|
||||
@ -1129,6 +1051,7 @@ Cache Usage
|
||||
|
||||
|
||||
|
||||
|
||||
Vacuum
|
||||
======
|
||||
|
||||
@ -1141,13 +1064,6 @@ Vacuum
|
||||
http://archives.postgresql.org/pgsql-hackers/2007-03/msg00024.php
|
||||
http://archives.postgresql.org/pgsql-performance/2007-05/msg00296.php
|
||||
|
||||
* Reduce lock time during VACUUM FULL by moving tuples with read lock,
|
||||
then write lock and truncate table
|
||||
|
||||
Moved tuples are invisible to other backends so they don't require a
|
||||
write lock. However, the read lock promotion to write lock could lead
|
||||
to deadlock situations.
|
||||
|
||||
* Auto-fill the free space map by scanning the buffer cache or by
|
||||
checking pages written by the background writer
|
||||
|
||||
@ -1176,20 +1092,10 @@ Vacuum
|
||||
|
||||
http://archives.postgresql.org/pgsql-patches/2007-03/msg00358.php
|
||||
|
||||
* Prevent long-lived temporary tables from causing frozen-xid advancement
|
||||
starvation
|
||||
|
||||
The problem is that autovacuum cannot vacuum them to set frozen xids;
|
||||
only the session that created them can do that.
|
||||
|
||||
|
||||
|
||||
* Auto-vacuum
|
||||
|
||||
o Use free-space map information to guide refilling
|
||||
o %Issue log message to suggest VACUUM FULL if a table is nearly
|
||||
empty?
|
||||
o Consider logging activity either to the logs or a system view
|
||||
o Improve control of auto-vacuum
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2006-12/msg00876.php
|
||||
@ -1197,6 +1103,8 @@ Vacuum
|
||||
o Prevent long-lived temporary tables from causing frozen-xid
|
||||
advancement starvation
|
||||
|
||||
The problem is that autovacuum cannot vacuum them to set frozen xids;
|
||||
only the session that created them can do that.
|
||||
http://archives.postgresql.org/pgsql-general/2007-06/msg01645.php
|
||||
|
||||
|
||||
@ -1236,12 +1144,6 @@ Startup Time Improvements
|
||||
Solaris) might benefit from threading. Also explore the idea of
|
||||
a single session using multiple threads to execute a statement faster.
|
||||
|
||||
* Add connection pooling
|
||||
|
||||
It is unclear if this should be done inside the backend code or done
|
||||
by something external like pgpool. The passing of file descriptors to
|
||||
existing backends is one of the difficulties with a backend approach.
|
||||
|
||||
|
||||
Write-Ahead Log
|
||||
===============
|
||||
@ -1383,10 +1285,6 @@ Miscellaneous Performance
|
||||
|
||||
http://archives.postgresql.org/pgsql-general/2007-02/msg00493.php
|
||||
|
||||
* Consider reducing memory used for shared buffer reference count
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php
|
||||
|
||||
* Experiment with multi-threaded backend better resource utilization
|
||||
|
||||
This would allow a single query to make use of multiple CPU's or
|
||||
@ -1406,23 +1304,13 @@ Source Code
|
||||
* Add optional CRC checksum to heap and index pages
|
||||
* Improve documentation to build only interfaces (Marc)
|
||||
* Remove or relicense modules that are not under the BSD license, if possible
|
||||
* %Remove memory/file descriptor freeing before ereport(ERROR)
|
||||
* Acquire lock on a relation before building a relcache entry for it
|
||||
* %Promote debug_query_string into a server-side function current_query()
|
||||
* Allow cross-compiling by generating the zic database on the target system
|
||||
* Improve NLS maintenance of libpgport messages linked onto applications
|
||||
* Allow ecpg to work with MSVC and BCC
|
||||
* Add xpath_array() to /contrib/xml2 to return results as an array
|
||||
* Clean up casting in /contrib/isn
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2006-11/msg00245.php
|
||||
|
||||
* Allow building in directories containing spaces
|
||||
|
||||
This is probably not possible because 'gmake' and other compiler tools
|
||||
do not fully support quoting of paths with spaces.
|
||||
|
||||
* Fix sgmltools so PDFs can be generated with bookmarks
|
||||
* Use UTF8 encoding for NLS messages so all server encodings can
|
||||
read them properly
|
||||
* Update Bonjour to work with newer cross-platform SDK
|
||||
@ -1430,18 +1318,12 @@ Source Code
|
||||
http://archives.postgresql.org/pgsql-hackers/2006-09/msg02238.php
|
||||
http://archives.postgresql.org/pgsql-patches/2006-10/msg00048.php
|
||||
|
||||
* Split out libpq pgpass and environment documentation sections to make
|
||||
it easier for non-developers to find
|
||||
* Consider detoasting keys before sorting
|
||||
* Consider GnuTLS if OpenSSL license becomes a problem
|
||||
|
||||
http://archives.postgresql.org/pgsql-patches/2006-05/msg00040.php
|
||||
http://archives.postgresql.org/pgsql-hackers/2006-12/msg01213.php
|
||||
|
||||
* Use strlcpy() rather than our StrNCpy() macro
|
||||
|
||||
http://archives.postgresql.org/pgsql-hackers/2006-09/msg02108.php
|
||||
|
||||
* Consider changing documentation format from SGML to XML
|
||||
|
||||
http://archives.postgresql.org/pgsql-docs/2006-12/msg00152.php
|
||||
@ -1474,8 +1356,6 @@ Source Code
|
||||
extra newline
|
||||
o Allow psql to use readline once non-US code pages work with
|
||||
backslashes
|
||||
o Re-enable timezone output on log_line_prefix '%t' when a
|
||||
shorter timezone string is available
|
||||
o Fix problem with shared memory on the Win32 Terminal Server
|
||||
o Improve signal handling
|
||||
|
||||
@ -1502,17 +1382,15 @@ Exotic Features
|
||||
modification.
|
||||
|
||||
* Allow plug-in modules to emulate features from other databases
|
||||
* Allow statements across databases or servers with transaction
|
||||
semantics
|
||||
* Add Oracle-style packages (Pavel)
|
||||
|
||||
This can be done using dblink and two-phase commit.
|
||||
A package would be a schema with session-local variables,
|
||||
public/private functions, and initialization functions. It
|
||||
is also possible to implement these capabilities
|
||||
in any schema and not use a separate "packages"
|
||||
syntax at all.
|
||||
|
||||
* Add the features of packages
|
||||
|
||||
o Make private objects accessible only to objects in the same schema
|
||||
o Allow current_schema.objname to access current schema objects
|
||||
o Add session variables
|
||||
o Allow nested schemas
|
||||
http://archives.postgresql.org/pgsql-hackers/2006-08/msg00384.php
|
||||
|
||||
* Consider allowing control of upper/lower case folding of unquoted
|
||||
identifiers
|
||||
|
@ -8,7 +8,7 @@
|
||||
<body bgcolor="#FFFFFF" text="#000000" link="#FF0000" vlink="#A00000" alink="#0000FF">
|
||||
<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/>
|
||||
Last updated: Sat Dec 29 19:42:32 EST 2007
|
||||
Last updated: Sat Dec 29 22:22:39 EST 2007
|
||||
</p>
|
||||
<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>.
|
||||
@ -26,13 +26,7 @@ first. There is also a developer's wiki at<br/>
|
||||
<h1><a name="section_2">Administration</a></h1>
|
||||
|
||||
<ul>
|
||||
<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>]
|
||||
</li><li>Check for unreferenced table files created by transactions that were
|
||||
in-progress when the server terminated abruptly
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-patches/2006-06/msg00096.php">http://archives.postgresql.org/pgsql-patches/2006-06/msg00096.php</a>
|
||||
</p>
|
||||
</li><li>Allow administrators to safely terminate individual sessions either
|
||||
<li>Allow administrators to safely terminate individual sessions either
|
||||
via an SQL function or SIGTERM
|
||||
<p> Lock table corruption following SIGTERM of an individual backend
|
||||
has been reported in 8.0. A possible cause was fixed in 8.1, but
|
||||
@ -40,6 +34,10 @@ first. There is also a developer's wiki at<br/>
|
||||
requires additional testing rather than of writing any new code.
|
||||
</p>
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-08/msg00174.php">http://archives.postgresql.org/pgsql-hackers/2006-08/msg00174.php</a>
|
||||
</p>
|
||||
</li><li>Check for unreferenced table files created by transactions that were
|
||||
in-progress when the server terminated abruptly
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-patches/2006-06/msg00096.php">http://archives.postgresql.org/pgsql-patches/2006-06/msg00096.php</a>
|
||||
</p>
|
||||
</li><li>Set proper permissions on non-system schemas during db creation
|
||||
<p> Currently all schemas are owned by the super-user because they are copied
|
||||
@ -47,9 +45,6 @@ first. There is also a developer's wiki at<br/>
|
||||
from the template database, it is not clear that setting schemas to the db
|
||||
owner is correct.
|
||||
</p>
|
||||
</li><li>Support table partitioning that allows a single table to be stored
|
||||
in subtables that are partitioned based on the primary key or a WHERE
|
||||
clause
|
||||
</li><li>Add function to report the time of the most recent server reload
|
||||
</li><li>Allow statistics collector information to be pulled from the collector
|
||||
process directly, rather than requiring the collector to write a
|
||||
@ -62,8 +57,8 @@ first. There is also a developer's wiki at<br/>
|
||||
</p>
|
||||
</li><li>Simplify ability to create partitioned tables
|
||||
<p> This would allow creation of partitioned tables without requiring
|
||||
creation of rules for INSERT/UPDATE/DELETE, and constraints for
|
||||
rapid partition selection. Options could include range and hash
|
||||
creation of triggers or rules for INSERT/UPDATE/DELETE, and constraints
|
||||
for rapid partition selection. Options could include range and hash
|
||||
partition selection.
|
||||
</p>
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg00375.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg00375.php</a>
|
||||
@ -87,15 +82,6 @@ first. There is also a developer's wiki at<br/>
|
||||
</li><li>Allow SSL authentication/encryption over unix domain sockets
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-12/msg00924.php">http://archives.postgresql.org/pgsql-hackers/2007-12/msg00924.php</a>
|
||||
</p>
|
||||
</li><li>Improve replication solutions
|
||||
<ul>
|
||||
<li>Load balancing
|
||||
<p> 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.
|
||||
</p>
|
||||
</li><li>Allow replication over unreliable or non-persistent links
|
||||
</li></ul>
|
||||
</li><li>Configuration files
|
||||
<ul>
|
||||
<li>Allow pg_hba.conf to specify host names along with IP addresses
|
||||
@ -111,21 +97,21 @@ first. There is also a developer's wiki at<br/>
|
||||
</li><li>Allow the server to be stopped/restarted via an SQL API
|
||||
</li><li>Issue a warning if a change-on-restart-only postgresql.conf value
|
||||
is modified and the server config files are reloaded
|
||||
</li><li>Mark change-on-restart-only values in postgresql.conf
|
||||
</li></ul>
|
||||
</li><li>Tablespaces
|
||||
<ul>
|
||||
<li>Allow a database in tablespace t1 with tables created in
|
||||
tablespace t2 to be used as a template for a new database created
|
||||
with default tablespace t2
|
||||
<p> All objects in the default database tablespace must have default
|
||||
tablespace specifications. This is because new databases are
|
||||
created by copying directories. If you mix default tablespace
|
||||
tables and tablespace-specified tables in the same directory,
|
||||
creating a new database from such a mixed directory would create a
|
||||
new database with tables that had incorrect explicit tablespaces.
|
||||
To fix this would require modifying pg_class in the newly copied
|
||||
database, which we don't currently do.
|
||||
<p> Currently all objects in the default database tablespace must
|
||||
have default tablespace specifications. This is because new
|
||||
databases are created by copying directories. If you mix default
|
||||
tablespace tables and tablespace-specified tables in the same
|
||||
directory, creating a new database from such a mixed directory
|
||||
would create a new database with tables that had incorrect
|
||||
explicit tablespaces. To fix this would require modifying
|
||||
pg_class in the newly copied database, which we don't currently
|
||||
do.
|
||||
</p>
|
||||
</li><li>Allow reporting of which objects are in which tablespaces
|
||||
<p> This item is difficult because a tablespace can contain objects
|
||||
@ -143,13 +129,12 @@ first. There is also a developer's wiki at<br/>
|
||||
<li>Allow a warm standby system to also allow read-only statements
|
||||
[<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?pitr">pitr</a>]
|
||||
<p> This is useful for checking PITR recovery.
|
||||
</p>
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php</a>
|
||||
<a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php</a>
|
||||
</p>
|
||||
</li><li>%Create dump tool for write-ahead logs for use in determining
|
||||
transaction id for point-in-time recovery
|
||||
</li><li>Allow the PITR process to be debugged and data examined
|
||||
</li><li>Allow recovery.conf to allow the same syntax as
|
||||
</li><li>Allow recovery.conf to support the same syntax as
|
||||
postgresql.conf, including quoting
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-12/msg00497.php">http://archives.postgresql.org/pgsql-hackers/2006-12/msg00497.php</a>
|
||||
</p>
|
||||
@ -164,8 +149,6 @@ first. There is also a developer's wiki at<br/>
|
||||
<a href="http://archives.postgresql.org/pgsql-patches/2007-02/msg00505.php">http://archives.postgresql.org/pgsql-patches/2007-02/msg00505.php</a>
|
||||
</p>
|
||||
</li><li>Fix data types where equality comparison isn't intuitive, e.g. box
|
||||
</li><li>Allow user-defined types to specify a type modifier at table creation
|
||||
time
|
||||
</li><li>Add support for public SYNONYMs
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-03/msg00519.php">http://archives.postgresql.org/pgsql-hackers/2006-03/msg00519.php</a>
|
||||
</p>
|
||||
@ -184,9 +167,6 @@ first. There is also a developer's wiki at<br/>
|
||||
</p>
|
||||
</li><li>Consider placing all sequences in a single table, or create a system
|
||||
view
|
||||
</li><li>Allow all data types to cast to and from TEXT
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-04/msg00017.php">http://archives.postgresql.org/pgsql-hackers/2007-04/msg00017.php</a>
|
||||
</p>
|
||||
</li><li>Dates and Times
|
||||
<ul>
|
||||
<li>Allow infinite dates and intervals just like infinite timestamps
|
||||
@ -249,9 +229,10 @@ first. There is also a developer's wiki at<br/>
|
||||
range of units supported, e.g. PostgreSQL supports '1 year 1
|
||||
hour', while the SQL standard does not.
|
||||
</p>
|
||||
</li><li>Add support for year-month syntax, INTERVAL '50-6' YEAR TO MONTH
|
||||
</li><li>Interpret INTERVAL '1 year' MONTH as CAST (INTERVAL '1 year' AS
|
||||
INTERVAL MONTH), and this should return '12 months'
|
||||
</li><li>Add support for year-month syntax, INTERVAL '50-6' YEAR
|
||||
TO MONTH
|
||||
</li><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))
|
||||
@ -287,7 +268,7 @@ first. There is also a developer's wiki at<br/>
|
||||
</p>
|
||||
</li><li>MONEY dumps in a locale-specific format making it difficult to
|
||||
restore to a system with a different locale
|
||||
</li><li>Allow MONEY to be cast to/from other numeric data types
|
||||
</li><li>Allow MONEY to be easily cast to/from other numeric data types
|
||||
</li></ul>
|
||||
</li></ul>
|
||||
</li></ul>
|
||||
@ -302,7 +283,6 @@ first. There is also a developer's wiki at<br/>
|
||||
</li><li>Add missing parameter handling in to_char()
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2005-12/msg00948.php">http://archives.postgresql.org/pgsql-hackers/2005-12/msg00948.php</a>
|
||||
</p>
|
||||
</li><li>Allow functions to have a schema search path specified at creation time
|
||||
</li><li>Allow substring/replace() to get/set bit values
|
||||
</li><li>Allow to_char() on interval values to accumulate the highest unit
|
||||
requested
|
||||
@ -383,10 +363,6 @@ first. There is also a developer's wiki at<br/>
|
||||
defaults to the server encoding.
|
||||
</p>
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-08/msg01696.php">http://archives.postgresql.org/pgsql-hackers/2006-08/msg01696.php</a>
|
||||
</p>
|
||||
</li><li>Fix cases where invalid byte encodings are accepted by the database,
|
||||
but throw an error on SELECT
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg00767.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg00767.php</a>
|
||||
</p>
|
||||
</li></ul>
|
||||
<h1><a name="section_6">Views / Rules</a></h1>
|
||||
@ -429,7 +405,7 @@ first. There is also a developer's wiki at<br/>
|
||||
manually or automatically when statistics for execute parameters
|
||||
differ dramatically from those used during planning.
|
||||
</p>
|
||||
</li><li>Improve logging of prepared statements recovered during startup
|
||||
</li><li>Improve logging of prepared transactions recovered during startup
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-11/msg00092.php">http://archives.postgresql.org/pgsql-hackers/2006-11/msg00092.php</a>
|
||||
</p>
|
||||
</li><li>Allow LISTEN/NOTIFY to store info in memory rather than tables?
|
||||
@ -465,7 +441,7 @@ first. There is also a developer's wiki at<br/>
|
||||
constraint_exclusion
|
||||
</li><li>Allow EXPLAIN output to be more easily processed by scripts, perhaps XML
|
||||
</li><li>Enable standard_conforming_strings
|
||||
</li><li>Make standard_conforming_strings the default in 8.4?
|
||||
</li><li>Make standard_conforming_strings the default in 8.5?
|
||||
<p> When this is done, backslash-quote should be prohibited in non-E''
|
||||
strings because of possible confusion over how such strings treat
|
||||
backslashes. Basically, '' is always safe for a literal single
|
||||
@ -474,7 +450,7 @@ first. There is also a developer's wiki at<br/>
|
||||
</p>
|
||||
</li><li>Simplify dropping roles that have objects in several databases
|
||||
</li><li>Allow COMMENT ON to accept an expression rather than just a string
|
||||
</li><li>Allow the count returned by SELECT, etc to be to represent as an int64
|
||||
</li><li>Allow the count returned by SELECT, etc to be represented as an int64
|
||||
to allow a higher range of values
|
||||
</li><li>Add SQL99 WITH clause to SELECT
|
||||
</li><li>Add SQL:2003 WITH RECURSIVE (hierarchical) queries to SELECT
|
||||
@ -500,12 +476,6 @@ first. There is also a developer's wiki at<br/>
|
||||
<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>Fix transaction restriction checks for CREATE DATABASE and
|
||||
other commands
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg00133.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg00133.php</a>
|
||||
</p>
|
||||
</li><li>Have WITH CONSTRAINTS also create constraint indexes
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-patches/2007-04/msg00149.php">http://archives.postgresql.org/pgsql-patches/2007-04/msg00149.php</a>
|
||||
</p>
|
||||
@ -588,7 +558,9 @@ first. There is also a developer's wiki at<br/>
|
||||
be removed or have its heap and index files truncated. One
|
||||
issue is that no other backend should be able to add to
|
||||
the table at the same time, which is something that is
|
||||
currently allowed.
|
||||
currently allowed. This currently is done if the table is
|
||||
created inside the same transaction block as the COPY because
|
||||
no other backends can see the table.
|
||||
</p>
|
||||
</li></ul>
|
||||
</li><li>GRANT/REVOKE
|
||||
@ -619,16 +591,12 @@ first. There is also a developer's wiki at<br/>
|
||||
<ul>
|
||||
<li>Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM
|
||||
ANALYZE, and CLUSTER
|
||||
</li><li>Add SET PATH for schemas?
|
||||
<p> This is basically the same as SET search_path.
|
||||
</p>
|
||||
</li></ul>
|
||||
</li><li>Referential Integrity
|
||||
<ul>
|
||||
<li>Add MATCH PARTIAL referential integrity
|
||||
</li><li>Change foreign key constraint for array -> element to mean element
|
||||
in array?
|
||||
</li><li>Enforce referential integrity for system tables
|
||||
</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>
|
||||
@ -655,15 +623,6 @@ first. There is also a developer's wiki at<br/>
|
||||
</p>
|
||||
</li><li>Allow function parameters to be passed by name,
|
||||
get_employee_salary(12345 AS emp_id, 2001 AS tax_year)
|
||||
</li><li>Add Oracle-style packages (Pavel)
|
||||
<p> A package would be a schema with session-local variables,
|
||||
public/private functions, and initialization functions. It
|
||||
is also possible to implement these capabilities
|
||||
in all schemas and not use a separate "packages"
|
||||
syntax at all.
|
||||
</p>
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-08/msg00384.php">http://archives.postgresql.org/pgsql-hackers/2006-08/msg00384.php</a>
|
||||
</p>
|
||||
</li><li>Allow handling of %TYPE arrays, e.g. tab.col%TYPE[<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?"></a>]
|
||||
</li><li>Allow listing of record column names, and access to
|
||||
record columns via variables, e.g. columns := r.(*),
|
||||
@ -672,18 +631,8 @@ first. There is also a developer's wiki at<br/>
|
||||
<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>
|
||||
</li><li>Add single-step debugging of functions
|
||||
</li><li>Add support for SCROLL cursors
|
||||
</li><li>Add support for WITH HOLD cursors
|
||||
</li><li>Allow RETURN to return row or record functions
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-patches/2005-11/msg00045.php">http://archives.postgresql.org/pgsql-patches/2005-11/msg00045.php</a>
|
||||
<a href="http://archives.postgresql.org/pgsql-patches/2006-08/msg00397.php">http://archives.postgresql.org/pgsql-patches/2006-08/msg00397.php</a>
|
||||
<a href="http://archives.postgresql.org/pgsql-hackers/2006-09/msg00388.php">http://archives.postgresql.org/pgsql-hackers/2006-09/msg00388.php</a>
|
||||
</p>
|
||||
</li><li>Fix problems with RETURN NEXT on tables with
|
||||
dropped/added columns after function creation
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-patches/2006-02/msg00165.php">http://archives.postgresql.org/pgsql-patches/2006-02/msg00165.php</a>
|
||||
</p>
|
||||
</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
|
||||
@ -721,9 +670,6 @@ first. There is also a developer's wiki at<br/>
|
||||
allow pg_ctl to read and understand postgresql.conf to find the
|
||||
data_directory value.
|
||||
</p>
|
||||
</li><li>Make consistent use of long/short command options --- pg_ctl needs
|
||||
long ones, pg_config doesn't have short ones, postgres doesn't have
|
||||
enough long ones, etc.
|
||||
</li><li>psql
|
||||
<ul>
|
||||
<li>Have psql show current values for a sequence
|
||||
@ -748,10 +694,6 @@ first. There is also a developer's wiki at<br/>
|
||||
supported session variables. This query causes problems
|
||||
because setting the transaction isolation level must be the
|
||||
first statement of a transaction.
|
||||
</p>
|
||||
</li><li>Consider parsing the -c string into individual queries so each
|
||||
is run in its own transaction
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg00291.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg00291.php</a>
|
||||
</p>
|
||||
</li><li>Add a \set variable to control whether \s displays line numbers
|
||||
<p> Another option is to add \# which lists line numbers, and
|
||||
@ -766,8 +708,6 @@ first. There is also a developer's wiki at<br/>
|
||||
</li><li>%Add full object name to the tag field. eg. for operators we need
|
||||
'=(integer, integer)', instead of just '='.
|
||||
</li><li>Add pg_dumpall custom format dumps?
|
||||
</li><li>Remove unnecessary function pointer abstractions in pg_dump source
|
||||
code
|
||||
</li><li>Allow selection of individual object(s) of all types, not just
|
||||
tables
|
||||
</li><li>In a selective dump, allow dumping of an object and all its
|
||||
@ -780,6 +720,8 @@ first. There is also a developer's wiki at<br/>
|
||||
applied to the loaded database, even if the database has a
|
||||
different name. This will require new backend syntax, perhaps
|
||||
COMMENT ON CURRENT DATABASE.
|
||||
</li><li>Remove unnecessary function pointer abstractions in pg_dump source
|
||||
code
|
||||
</li></ul>
|
||||
</li><li>ecpg
|
||||
<ul>
|
||||
@ -814,8 +756,7 @@ first. There is also a developer's wiki at<br/>
|
||||
held on the server waiting for them to be requested by libpq.
|
||||
One complexity is that a statement like SELECT 1/col could error
|
||||
out mid-way through the result set.
|
||||
<li>Fix SSL retry to avoid useless repeated connection attempts and
|
||||
ensuing misleading error messages
|
||||
</p>
|
||||
</li><li>Consider disallowing multiple queries in PQexec() as an
|
||||
additional barrier to SQL injection attacks
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg00184.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg00184.php</a>
|
||||
@ -824,7 +765,7 @@ first. There is also a developer's wiki at<br/>
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg01803.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg01803.php</a>
|
||||
</p>
|
||||
</li></ul>
|
||||
</p></ul>
|
||||
</li></ul>
|
||||
<h1><a name="section_9">Triggers</a></h1>
|
||||
|
||||
<ul>
|
||||
@ -884,8 +825,6 @@ first. There is also a developer's wiki at<br/>
|
||||
</p>
|
||||
</li><li>Consider compressing indexes by storing key values duplicated in
|
||||
several rows as a single index entry
|
||||
<p> This is difficult because it requires datatype-specific knowledge.
|
||||
</p>
|
||||
</li><li>Add REINDEX CONCURRENTLY, like CREATE INDEX CONCURRENTLY
|
||||
<p> This is difficult because you must upgrade to an exclusive table lock
|
||||
to replace the existing index file. CREATE INDEX CONCURRENTLY does not
|
||||
@ -938,13 +877,11 @@ first. There is also a developer's wiki at<br/>
|
||||
<h1><a name="section_11">Fsync</a></h1>
|
||||
|
||||
<ul>
|
||||
<li>Improve commit_delay handling to reduce fsync()
|
||||
</li><li>Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options
|
||||
<li>Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options
|
||||
<p> Ideally this requires a separate test program that can be run
|
||||
at initdb time or optionally later. Consider O_SYNC when
|
||||
O_DIRECT exists.
|
||||
</p>
|
||||
</li><li>%Add an option to sync() before fsync()'ing checkpoint files
|
||||
</li><li>Add program to test if fsync has a delay compared to non-fsync
|
||||
</li></ul>
|
||||
<h1><a name="section_12">Cache Usage</a></h1>
|
||||
@ -1010,12 +947,6 @@ first. There is also a developer's wiki at<br/>
|
||||
</p>
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg00024.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg00024.php</a>
|
||||
<a href="http://archives.postgresql.org/pgsql-performance/2007-05/msg00296.php">http://archives.postgresql.org/pgsql-performance/2007-05/msg00296.php</a>
|
||||
</p>
|
||||
</li><li>Reduce lock time during VACUUM FULL by moving tuples with read lock,
|
||||
then write lock and truncate table
|
||||
<p> Moved tuples are invisible to other backends so they don't require a
|
||||
write lock. However, the read lock promotion to write lock could lead
|
||||
to deadlock situations.
|
||||
</p>
|
||||
</li><li>Auto-fill the free space map by scanning the buffer cache or by
|
||||
checking pages written by the background writer
|
||||
@ -1042,25 +973,18 @@ first. There is also a developer's wiki at<br/>
|
||||
</li><li>Improve dead row detection during multi-statement transactions usage
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-patches/2007-03/msg00358.php">http://archives.postgresql.org/pgsql-patches/2007-03/msg00358.php</a>
|
||||
</p>
|
||||
</li><li>Prevent long-lived temporary tables from causing frozen-xid advancement
|
||||
starvation
|
||||
</li></ul>
|
||||
<p> The problem is that autovacuum cannot vacuum them to set frozen xids;<br/>
|
||||
only the session that created them can do that.
|
||||
</p>
|
||||
<ul>
|
||||
<li>Auto-vacuum
|
||||
</li><li>Auto-vacuum
|
||||
<ul>
|
||||
<li>Use free-space map information to guide refilling
|
||||
</li><li>%Issue log message to suggest VACUUM FULL if a table is nearly
|
||||
<li>%Issue log message to suggest VACUUM FULL if a table is nearly
|
||||
empty?
|
||||
</li><li>Consider logging activity either to the logs or a system view
|
||||
</li><li>Improve control of auto-vacuum
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-12/msg00876.php">http://archives.postgresql.org/pgsql-hackers/2006-12/msg00876.php</a>
|
||||
</p>
|
||||
</li><li>Prevent long-lived temporary tables from causing frozen-xid
|
||||
advancement starvation
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-general/2007-06/msg01645.php">http://archives.postgresql.org/pgsql-general/2007-06/msg01645.php</a>
|
||||
<p> The problem is that autovacuum cannot vacuum them to set frozen xids;
|
||||
only the session that created them can do that.
|
||||
<a href="http://archives.postgresql.org/pgsql-general/2007-06/msg01645.php">http://archives.postgresql.org/pgsql-general/2007-06/msg01645.php</a>
|
||||
</p>
|
||||
</li></ul>
|
||||
</li></ul>
|
||||
@ -1093,11 +1017,6 @@ first. There is also a developer's wiki at<br/>
|
||||
database startup overhead, but a few operating systems (Win32,
|
||||
Solaris) might benefit from threading. Also explore the idea of
|
||||
a single session using multiple threads to execute a statement faster.
|
||||
</p>
|
||||
</li><li>Add connection pooling
|
||||
<p> It is unclear if this should be done inside the backend code or done
|
||||
by something external like pgpool. The passing of file descriptors to
|
||||
existing backends is one of the difficulties with a backend approach.
|
||||
</p>
|
||||
</li></ul>
|
||||
<h1><a name="section_16">Write-Ahead Log</a></h1>
|
||||
@ -1223,9 +1142,6 @@ first. There is also a developer's wiki at<br/>
|
||||
waits possible, research shows that this is not a huge problem.
|
||||
</p>
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-general/2007-02/msg00493.php">http://archives.postgresql.org/pgsql-general/2007-02/msg00493.php</a>
|
||||
</p>
|
||||
</li><li>Consider reducing memory used for shared buffer reference count
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php</a>
|
||||
</p>
|
||||
</li><li>Experiment with multi-threaded backend better resource utilization
|
||||
<p> This would allow a single query to make use of multiple CPU's or
|
||||
@ -1245,36 +1161,22 @@ first. There is also a developer's wiki at<br/>
|
||||
</li><li>Add optional CRC checksum to heap and index pages
|
||||
</li><li>Improve documentation to build only interfaces (Marc)
|
||||
</li><li>Remove or relicense modules that are not under the BSD license, if possible
|
||||
</li><li>%Remove memory/file descriptor freeing before ereport(ERROR)
|
||||
</li><li>Acquire lock on a relation before building a relcache entry for it
|
||||
</li><li>%Promote debug_query_string into a server-side function current_query()
|
||||
</li><li>Allow cross-compiling by generating the zic database on the target system
|
||||
</li><li>Improve NLS maintenance of libpgport messages linked onto applications
|
||||
</li><li>Allow ecpg to work with MSVC and BCC
|
||||
</li><li>Add xpath_array() to /contrib/xml2 to return results as an array
|
||||
</li><li>Clean up casting in /contrib/isn
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-11/msg00245.php">http://archives.postgresql.org/pgsql-hackers/2006-11/msg00245.php</a>
|
||||
</p>
|
||||
</li><li>Allow building in directories containing spaces
|
||||
<p> This is probably not possible because 'gmake' and other compiler tools
|
||||
do not fully support quoting of paths with spaces.
|
||||
</p>
|
||||
</li><li>Fix sgmltools so PDFs can be generated with bookmarks
|
||||
</li><li>Use UTF8 encoding for NLS messages so all server encodings can
|
||||
read them properly
|
||||
</li><li>Update Bonjour to work with newer cross-platform SDK
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-09/msg02238.php">http://archives.postgresql.org/pgsql-hackers/2006-09/msg02238.php</a>
|
||||
<a href="http://archives.postgresql.org/pgsql-patches/2006-10/msg00048.php">http://archives.postgresql.org/pgsql-patches/2006-10/msg00048.php</a>
|
||||
</p>
|
||||
</li><li>Split out libpq pgpass and environment documentation sections to make
|
||||
it easier for non-developers to find
|
||||
</li><li>Consider detoasting keys before sorting
|
||||
</li><li>Consider GnuTLS if OpenSSL license becomes a problem
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-patches/2006-05/msg00040.php">http://archives.postgresql.org/pgsql-patches/2006-05/msg00040.php</a>
|
||||
<a href="http://archives.postgresql.org/pgsql-hackers/2006-12/msg01213.php">http://archives.postgresql.org/pgsql-hackers/2006-12/msg01213.php</a>
|
||||
</p>
|
||||
</li><li>Use strlcpy() rather than our StrNCpy() macro
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-09/msg02108.php">http://archives.postgresql.org/pgsql-hackers/2006-09/msg02108.php</a>
|
||||
</p>
|
||||
</li><li>Consider changing documentation format from SGML to XML
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-docs/2006-12/msg00152.php">http://archives.postgresql.org/pgsql-docs/2006-12/msg00152.php</a>
|
||||
@ -1302,8 +1204,6 @@ first. There is also a developer's wiki at<br/>
|
||||
extra newline
|
||||
</li><li>Allow psql to use readline once non-US code pages work with
|
||||
backslashes
|
||||
</li><li>Re-enable timezone output on log_line_prefix '%t' when a
|
||||
shorter timezone string is available
|
||||
</li><li>Fix problem with shared memory on the Win32 Terminal Server
|
||||
</li><li>Improve signal handling
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-patches/2005-06/msg00027.php">http://archives.postgresql.org/pgsql-patches/2005-06/msg00027.php</a>
|
||||
@ -1327,18 +1227,18 @@ first. There is also a developer's wiki at<br/>
|
||||
modification.
|
||||
</p>
|
||||
</li><li>Allow plug-in modules to emulate features from other databases
|
||||
</li><li>Allow statements across databases or servers with transaction
|
||||
semantics
|
||||
<p> This can be done using dblink and two-phase commit.
|
||||
</li><li>Add Oracle-style packages (Pavel)
|
||||
</li></ul>
|
||||
<p> A package would be a schema with session-local variables,<br/>
|
||||
public/private functions, and initialization functions. It<br/>
|
||||
is also possible to implement these capabilities<br/>
|
||||
in any schema and not use a separate "packages"<br/>
|
||||
syntax at all.
|
||||
</p>
|
||||
</li><li>Add the features of packages
|
||||
<ul>
|
||||
<li>Make private objects accessible only to objects in the same schema
|
||||
</li><li>Allow current_schema.objname to access current schema objects
|
||||
</li><li>Add session variables
|
||||
</li><li>Allow nested schemas
|
||||
</li></ul>
|
||||
</li><li>Consider allowing control of upper/lower case folding of unquoted
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2006-08/msg00384.php">http://archives.postgresql.org/pgsql-hackers/2006-08/msg00384.php</a>
|
||||
</p>
|
||||
<ul>
|
||||
<li>Consider allowing control of upper/lower case folding of unquoted
|
||||
identifiers
|
||||
<p> <a href="http://archives.postgresql.org/pgsql-hackers/2004-04/msg00818.php">http://archives.postgresql.org/pgsql-hackers/2004-04/msg00818.php</a>
|
||||
<a href="http://archives.postgresql.org/pgsql-hackers/2006-10/msg01527.php">http://archives.postgresql.org/pgsql-hackers/2006-10/msg01527.php</a>
|
||||
@ -1373,6 +1273,6 @@ first. There is also a developer's wiki at<br/>
|
||||
to run in the same process address space as the client application
|
||||
would add too much complexity and failure cases.</p>
|
||||
</li></ul>
|
||||
</li></ul></li></ul>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
Loading…
Reference in New Issue
Block a user