Great TODO updates from Tom:
< Currently SIGTERM of a backend can lead to lock table corruption. > Lock table corruption following SIGTERM of an individual backend > has been reported in 8.0. A possible cause was fixed in 8.1, but > it is unknown whether other problems exist. This item mostly > requires additional testing rather than of writing any new code. < o Allow postgresql.conf values to be set so they can not be changed < by the user 166c167,171 < * %Remove Money type, add money formatting for decimal type > * Improve the MONEY data type > > Change the MONEY data type to use DECIMAL internally, with special > locale-aware output formatting. > 225c230 < o %Allow MIN()/MAX() on arrays > o -Allow MIN()/MAX() on arrays 228c233 < o Modify array literal representation to handle array index lower bound > o -Modify array literal representation to handle array index lower bound 235a241 > o Auto-delete large objects when referencing row is deleted < Currently large objects entries do not have owners. Permissions can < only be set at the pg_largeobject table level. > /contrib/lo offers this functionality. 240d244 < o Auto-delete large objects when referencing row is deleted < * %Have views on temporary tables exist in the temporary namespace < * Allow temporary views on non-temporary tables < * %Allow RULE recompilation > * -Have views on temporary tables exist in the temporary namespace > * -Allow temporary views on non-temporary tables > * Allow VIEW/RULE recompilation when the underlying tables change 340a345,347 > > This is like DELETE CASCADE, but truncates. > 381c388 < * Make row-wise comparisons work per SQL spec > * %Make row-wise comparisons work per SQL spec < o Currently the system uses the operating system COPY command to < create a new database. Add ON COMMIT capability to CREATE TABLE AS < SELECT > o Add ON COMMIT capability to CREATE TABLE AS ... SELECT 427c432 < o %Add ALTER DOMAIN TYPE > o Add ALTER DOMAIN to modify the underlying data type < o %Disallow dropping of an inherited constraint < o -Allow objects to be moved to different schemas > o Add missing object types for ALTER ... SET SCHEMA < o %Prevent child tables from altering constraints like CHECK that were < inherited from the parent table > o %Disallow dropping of an inherited constraint > o %Prevent child tables from altering or dropping constraints > like CHECK that were inherited from the parent table < o Handle references to temporary tables that are created, destroyed, < then recreated during a session, and EXECUTE is not used < < This requires the cached PL/PgSQL byte code to be invalidated when < an object referenced in the function is changed. < < o Add table function support to pltcl, plperl, plpython? < o Allow PL/pgSQL to name columns by ordinal position, e.g. rec.(3) > o Add table function support to pltcl, plpython 549a548 > o Allow function argument names to be queries from PL/PgSQL < o Pass arrays natively instead of as text between plperl and postgres < o Add support for polymorphic arguments and return types to plperl > o -Pass arrays natively instead of as text between plperl and postgres > o Add support for polymorphic arguments and return types to > languages other than PL/PgSQL > o Add support for OUT and INOUT parameters to languages other > than PL/PgSQL < * Allow libpq to access SQLSTATE so pg_ctl can test for connection failure < < This would be used for checking if the server is up. < 565c563 < * Have initdb set DateStyle based on locale? > * Have initdb set the input DateStyle (MDY or DMY) based on locale? 567d564 < * Add a schema option to createlang < o Add pg_dumpall custom format dumps. < < This is probably best done by combining pg_dump and pg_dumpall < into a single binary. < > o Add pg_dumpall custom format dumps? 612c605,606 < o Remove unnecessary abstractions in pg_dump source code > o Remove unnecessary function pointer abstractions in pg_dump source > code < * %Remove CREATE CONSTRAINT TRIGGER < < This was used in older releases to dump referential integrity < constraints. < 682a672,675 > This is particularly important for references to temporary tables > in PL/PgSQL because PL/PgSQL caches query plans. The only workaround > in PL/PgSQL is to use EXECUTE. > 748c741 < * Fetch heap pages matching index entries in sequential order > * -Fetch heap pages matching index entries in sequential order 797c790 < Currently no only one hash bucket can be stored on a page. Ideally > Currently only one hash bucket can be stored on a page. Ideally 806a800,802 > o Add WAL logging for crash recovery > o Allow multi-column hash indexes > 812a809,812 > > Ideally this requires a separate test program that can be run > at initdb time or optionally later. > 867c867 < * Improve the background writer > * -Improve the background writer < For large table adjustements during vacuum, it is faster to reindex < rather than update the index. > For large table adjustements during VACUUM FULL, it is faster to > reindex rather than update the index. < * Reduce lock time by moving tuples with read lock, then write < lock and truncate table > * Reduce lock time during VACUUM FULL by moving tuples with read lock, > then write lock and truncate table 919c919,920 < o %Suggest VACUUM FULL if a table is nearly empty > o %Issue log message to suggest VACUUM FULL if a table is nearly > empty? 995d995 < * Add WAL index reliability improvement to non-btree indexes 1045c1045 < * ANALYZE should record a pg_statistic entry for an all-NULL column > * -ANALYZE should record a pg_statistic entry for an all-NULL column 1047a1048,1051 > * Allow constraint_elimination to be automatically performed > > This requires additional code to reduce the performance loss caused by > constraint elimination. 1090c1094 < * Remove memory/file descriptor freeing before ereport(ERROR) > * %Remove memory/file descriptor freeing before ereport(ERROR) < * Promote debug_query_string into a server-side function current_query() < * Allow the identifier length to be increased via a configure option > * %Promote debug_query_string into a server-side function current_query() > * %Allow the identifier length to be increased via a configure option 1113d1116 < * Fix cross-compiling of time zone database via 'zic' 1130c1133 < o Improve dlerror() reporting string > o -Improve dlerror() reporting string 1132c1135 < o Add support for Unicode > o %Add support for Unicode
This commit is contained in:
parent
a9118fc5a8
commit
9f60468797
135
doc/TODO
135
doc/TODO
@ -2,7 +2,7 @@
|
||||
PostgreSQL TODO List
|
||||
====================
|
||||
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
|
||||
Last updated: Wed Aug 24 21:24:51 EDT 2005
|
||||
Last updated: Fri Aug 26 14:52:30 EDT 2005
|
||||
|
||||
The most recent version of this document can be viewed at
|
||||
http://www.postgresql.org/docs/faqs.TODO.html.
|
||||
@ -35,7 +35,10 @@ Administration
|
||||
* Allow administrators to safely terminate individual sessions either
|
||||
via an SQL function or SIGTERM
|
||||
|
||||
Currently SIGTERM of a backend can lead to lock table corruption.
|
||||
Lock table corruption following SIGTERM of an individual backend
|
||||
has been reported in 8.0. A possible cause was fixed in 8.1, but
|
||||
it is unknown whether other problems exist. This item mostly
|
||||
requires additional testing rather than of writing any new code.
|
||||
|
||||
* -Prevent dropping user that still owns objects, or auto-drop the objects
|
||||
* %Set proper permissions on non-system schemas during db creation
|
||||
@ -63,8 +66,6 @@ Administration
|
||||
* Configuration files
|
||||
|
||||
o %Add "include file" functionality in postgresql.conf
|
||||
o Allow postgresql.conf values to be set so they can not be changed
|
||||
by the user
|
||||
o %Allow commenting of variables in postgresql.conf to restore them
|
||||
to defaults
|
||||
|
||||
@ -163,7 +164,11 @@ Monitoring
|
||||
Data Types
|
||||
==========
|
||||
|
||||
* %Remove Money type, add money formatting for decimal type
|
||||
* Improve the MONEY data type
|
||||
|
||||
Change the MONEY data type to use DECIMAL internally, with special
|
||||
locale-aware output formatting.
|
||||
|
||||
* Change NUMERIC to enforce the maximum precision, and increase it
|
||||
* Add NUMERIC division operator that doesn't round?
|
||||
|
||||
@ -222,10 +227,10 @@ Data Types
|
||||
* 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
|
||||
coercion can be performed on empty array expressions
|
||||
o Modify array literal representation to handle array index lower bound
|
||||
o -Modify array literal representation to handle array index lower bound
|
||||
of other than one
|
||||
|
||||
|
||||
@ -233,11 +238,10 @@ Data Types
|
||||
|
||||
o Improve vacuum of large objects, like /contrib/vacuumlo?
|
||||
o Add security checking for large objects
|
||||
|
||||
Currently large objects entries do not have owners. Permissions can
|
||||
only be set at the pg_largeobject table level.
|
||||
|
||||
o Auto-delete large objects when referencing row is deleted
|
||||
|
||||
/contrib/lo offers this functionality.
|
||||
|
||||
o Allow read/write into TOAST values like large objects
|
||||
|
||||
This requires the TOAST column to be stored EXTERNAL.
|
||||
@ -314,9 +318,9 @@ Views / Rules
|
||||
|
||||
* Add the functionality for WITH CHECK OPTION clause of CREATE VIEW
|
||||
* Allow NOTIFY in rules involving conditionals
|
||||
* %Have views on temporary tables exist in the temporary namespace
|
||||
* Allow temporary views on non-temporary tables
|
||||
* %Allow RULE recompilation
|
||||
* -Have views on temporary tables exist in the temporary namespace
|
||||
* -Allow temporary views on non-temporary tables
|
||||
* Allow VIEW/RULE recompilation when the underlying tables change
|
||||
|
||||
|
||||
SQL Commands
|
||||
@ -338,6 +342,9 @@ SQL Commands
|
||||
* Add ROLLUP, CUBE, GROUPING SETS options to GROUP BY
|
||||
* %Allow SET CONSTRAINTS to be qualified by schema/table name
|
||||
* %Allow TRUNCATE ... CASCADE/RESTRICT
|
||||
|
||||
This is like DELETE CASCADE, but truncates.
|
||||
|
||||
* %Add a separate TRUNCATE permission
|
||||
|
||||
Currently only the owner can TRUNCATE a table because triggers are not
|
||||
@ -378,7 +385,7 @@ SQL Commands
|
||||
When enabled, this would allow errors in multi-statement transactions
|
||||
to be automatically ignored.
|
||||
|
||||
* Make row-wise comparisons work per SQL spec
|
||||
* %Make row-wise comparisons work per SQL spec
|
||||
* Add RESET CONNECTION command to reset all session state
|
||||
|
||||
This would include resetting of all variables (RESET ALL), dropping of
|
||||
@ -404,9 +411,7 @@ SQL Commands
|
||||
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
|
||||
o Add ON COMMIT capability to CREATE TABLE AS ... SELECT
|
||||
|
||||
|
||||
* UPDATE
|
||||
@ -424,11 +429,10 @@ SQL Commands
|
||||
* ALTER
|
||||
|
||||
o %Have ALTER TABLE RENAME rename SERIAL sequence names
|
||||
o %Add ALTER DOMAIN TYPE
|
||||
o Add ALTER DOMAIN to modify the underlying data type
|
||||
o %Allow ALTER TABLE ... ALTER CONSTRAINT ... RENAME
|
||||
o %Allow ALTER TABLE to change constraint deferrability and actions
|
||||
o %Disallow dropping of an inherited constraint
|
||||
o -Allow objects to be moved to different schemas
|
||||
o Add missing object types for ALTER ... SET SCHEMA
|
||||
o Allow ALTER TABLESPACE to move to different directories
|
||||
o Allow databases to be moved to different tablespaces
|
||||
o Allow moving system tables to other tablespaces, where possible
|
||||
@ -436,8 +440,9 @@ SQL Commands
|
||||
Currently non-global system tables must be in the default database
|
||||
tablespace. Global system tables can never be moved.
|
||||
|
||||
o %Prevent child tables from altering constraints like CHECK that were
|
||||
inherited from the parent table
|
||||
o %Disallow dropping of an inherited constraint
|
||||
o %Prevent child tables from altering or dropping constraints
|
||||
like CHECK that were inherited from the parent table
|
||||
|
||||
|
||||
* CLUSTER
|
||||
@ -532,24 +537,21 @@ SQL Commands
|
||||
Currently only constants are supported.
|
||||
|
||||
o -Change PL/PgSQL to use palloc() instead of malloc()
|
||||
o Handle references to temporary tables that are created, destroyed,
|
||||
then recreated during a session, and EXECUTE is not used
|
||||
|
||||
This requires the cached PL/PgSQL byte code to be invalidated when
|
||||
an object referenced in the function is changed.
|
||||
|
||||
o Fix PL/pgSQL RENAME to work on variables other than OLD/NEW
|
||||
o Allow function parameters to be passed by name,
|
||||
get_employee_salary(emp_id => 12345, tax_year => 2001)
|
||||
o Add Oracle-style packages
|
||||
o Add table function support to pltcl, plperl, plpython?
|
||||
o Allow PL/pgSQL to name columns by ordinal position, e.g. rec.(3)
|
||||
o Add table function support to pltcl, plpython
|
||||
o -Allow PL/pgSQL EXECUTE query_var INTO record_var;
|
||||
o Add capability to create and call PROCEDURES
|
||||
o Allow PL/pgSQL to handle %TYPE arrays, e.g. tab.col%TYPE[]
|
||||
o Allow function argument names to be queries from PL/PgSQL
|
||||
o Add MOVE to PL/pgSQL
|
||||
o Pass arrays natively instead of as text between plperl and postgres
|
||||
o Add support for polymorphic arguments and return types to plperl
|
||||
o -Pass arrays natively instead of as text between plperl and postgres
|
||||
o Add support for polymorphic arguments and return types to
|
||||
languages other than PL/PgSQL
|
||||
o Add support for OUT and INOUT parameters to languages other
|
||||
than PL/PgSQL
|
||||
|
||||
|
||||
Clients
|
||||
@ -557,14 +559,9 @@ Clients
|
||||
|
||||
* Add a libpq function to support Parse/DescribeStatement capability
|
||||
* Prevent libpq's PQfnumber() from lowercasing the column name?
|
||||
* Allow libpq to access SQLSTATE so pg_ctl can test for connection failure
|
||||
|
||||
This would be used for checking if the server is up.
|
||||
|
||||
* Add PQescapeIdentifier() to libpq
|
||||
* Have initdb set DateStyle based on locale?
|
||||
* Have initdb set the input DateStyle (MDY or DMY) based on locale?
|
||||
* Have pg_ctl look at PGHOST in case it is a socket directory?
|
||||
* Add a schema option to createlang
|
||||
* Allow pg_ctl to work properly with configuration files located outside
|
||||
the PGDATA directory
|
||||
|
||||
@ -602,14 +599,11 @@ Clients
|
||||
o Stop dumping CASCADE on DROP TYPE commands in clean mode
|
||||
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.
|
||||
|
||||
This is probably best done by combining pg_dump and pg_dumpall
|
||||
into a single binary.
|
||||
|
||||
o Add pg_dumpall custom format dumps?
|
||||
o %Add CSV output format
|
||||
o Update pg_dump and psql to use the new COPY libpq API (Christopher)
|
||||
o Remove unnecessary abstractions in pg_dump source code
|
||||
o Remove unnecessary function pointer abstractions in pg_dump source
|
||||
code
|
||||
|
||||
|
||||
* ecpg
|
||||
@ -660,11 +654,6 @@ Referential Integrity
|
||||
|
||||
* Allow statement-level triggers to access modified rows
|
||||
* Support triggers on columns (Greg Sabino Mullane)
|
||||
* %Remove CREATE CONSTRAINT TRIGGER
|
||||
|
||||
This was used in older releases to dump referential integrity
|
||||
constraints.
|
||||
|
||||
* Enforce referential integrity for system tables
|
||||
* Allow AFTER triggers on system tables
|
||||
|
||||
@ -680,6 +669,10 @@ Dependency Checking
|
||||
* Flush cached query plans when the dependent objects change
|
||||
* Track dependencies in function bodies and recompile/invalidate
|
||||
|
||||
This is particularly important for references to temporary tables
|
||||
in PL/PgSQL because PL/PgSQL caches query plans. The only workaround
|
||||
in PL/PgSQL is to use EXECUTE.
|
||||
|
||||
|
||||
Exotic Features
|
||||
===============
|
||||
@ -745,7 +738,7 @@ Indexes
|
||||
Uniqueness (index) checks are done when updating a column even if the
|
||||
column is not modified by the UPDATE.
|
||||
|
||||
* Fetch heap pages matching index entries in sequential order
|
||||
* -Fetch heap pages matching index entries in sequential order
|
||||
|
||||
Rather than randomly accessing heap pages based on index entries, mark
|
||||
heap pages needing access in a bitmap and do the lookups in sequential
|
||||
@ -794,7 +787,7 @@ Indexes
|
||||
|
||||
o Pack hash index buckets onto disk pages more efficiently
|
||||
|
||||
Currently no only one hash bucket can be stored on a page. Ideally
|
||||
Currently only one hash bucket can be stored on a page. Ideally
|
||||
several hash buckets could be stored on a single page and greater
|
||||
granularity used for the hash algorithm.
|
||||
|
||||
@ -804,12 +797,19 @@ Indexes
|
||||
o In hash indexes, consider storing the hash value with or instead
|
||||
of the key itself
|
||||
|
||||
o Add WAL logging for crash recovery
|
||||
o Allow multi-column hash 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.
|
||||
|
||||
* -Allow multiple blocks to be written to WAL with one write()
|
||||
* %Add an option to sync() before fsync()'ing checkpoint files
|
||||
* Add program to test if fsync has a delay compared to non-fsync
|
||||
@ -864,7 +864,7 @@ Cache Usage
|
||||
Larger local buffer cache sizes requires more efficient handling of
|
||||
local cache lookups.
|
||||
|
||||
* Improve the background writer
|
||||
* -Improve the background writer
|
||||
|
||||
Allow the background writer to more efficiently write dirty buffers
|
||||
from the end of the LRU cache and use a clock sweep algorithm to
|
||||
@ -884,11 +884,11 @@ Vacuum
|
||||
|
||||
* Improve speed with indexes
|
||||
|
||||
For large table adjustements during vacuum, it is faster to reindex
|
||||
rather than update the index.
|
||||
For large table adjustements during VACUUM FULL, it is faster to
|
||||
reindex rather than update the index.
|
||||
|
||||
* Reduce lock time by moving tuples with read lock, then write
|
||||
lock and truncate table
|
||||
* 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
|
||||
@ -916,7 +916,8 @@ Vacuum
|
||||
|
||||
o -Move into the backend code
|
||||
o Use free-space map information to guide refilling
|
||||
o %Suggest VACUUM FULL if a table is nearly empty
|
||||
o %Issue log message to suggest VACUUM FULL if a table is nearly
|
||||
empty?
|
||||
o Improve xid wraparound detection by recording per-table rather
|
||||
than per-database
|
||||
|
||||
@ -992,7 +993,6 @@ Write-Ahead Log
|
||||
|
||||
* Reduce WAL traffic so only modified values are written rather than
|
||||
entire rows?
|
||||
* Add WAL index reliability improvement to non-btree indexes
|
||||
* Allow the pg_xlog directory location to be specified during initdb
|
||||
with a symlink back to the /data location
|
||||
* Allow WAL information to recover corrupted pg_controldata
|
||||
@ -1042,9 +1042,13 @@ Optimizer / Executor
|
||||
|
||||
This would be beneficial when there are few distinct values.
|
||||
|
||||
* ANALYZE should record a pg_statistic entry for an all-NULL column
|
||||
* -ANALYZE should record a pg_statistic entry for an all-NULL column
|
||||
* Log queries where the optimizer row estimates were dramatically
|
||||
different from the number of rows actually found?
|
||||
* Allow constraint_elimination to be automatically performed
|
||||
|
||||
This requires additional code to reduce the performance loss caused by
|
||||
constraint elimination.
|
||||
|
||||
|
||||
Miscellaneous Performance
|
||||
@ -1087,10 +1091,10 @@ 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)
|
||||
* %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 the identifier length to be increased via a configure option
|
||||
* %Promote debug_query_string into a server-side function current_query()
|
||||
* %Allow the identifier length to be increased via a configure option
|
||||
* Remove Win32 rename/unlink looping if unnecessary
|
||||
* -Remove kerberos4 from source tree
|
||||
* Allow cross-compiling by generating the zic database on the target system
|
||||
@ -1110,7 +1114,6 @@ Source Code
|
||||
is already possible to install into a directory that doesn't contain
|
||||
spaces and then copy the install to a directory with spaces.
|
||||
|
||||
* Fix cross-compiling of time zone database via 'zic'
|
||||
* Fix sgmltools so PDFs can be generated with bookmarks
|
||||
* -Add C code on Unix to copy directories for use in creating new databases
|
||||
* %Clean up compiler warnings (especially with gcc version 4)
|
||||
@ -1127,9 +1130,9 @@ Source Code
|
||||
backslashes
|
||||
o Re-enable timezone output on log_line_prefix '%t' when a
|
||||
shorter timezone string is available
|
||||
o Improve dlerror() reporting string
|
||||
o -Improve dlerror() reporting string
|
||||
o Fix problem with shared memory on the Win32 Terminal Server
|
||||
o Add support for Unicode
|
||||
o %Add support for Unicode
|
||||
|
||||
To fix this, the data needs to be converted to/from UTF16/UTF8
|
||||
so the Win32 wcscoll() can be used, and perhaps other functions
|
||||
|
@ -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:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>)<br/>
|
||||
Last updated: Wed Aug 24 21:24:51 EDT 2005
|
||||
Last updated: Fri Aug 26 14:52:30 EDT 2005
|
||||
</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>.
|
||||
@ -38,7 +38,10 @@ first.
|
||||
in-progress when the server terminated abruptly
|
||||
</li><li>Allow administrators to safely terminate individual sessions either
|
||||
via an SQL function or SIGTERM
|
||||
<p> Currently SIGTERM of a backend can lead to lock table corruption.
|
||||
<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
|
||||
it is unknown whether other problems exist. This item mostly
|
||||
requires additional testing rather than of writing any new code.
|
||||
</p>
|
||||
</li><li>-<em>Prevent dropping user that still owns objects, or auto-drop the objects</em>
|
||||
</li><li>%Set proper permissions on non-system schemas during db creation
|
||||
@ -61,8 +64,6 @@ first.
|
||||
</li><li>Configuration files
|
||||
<ul>
|
||||
<li>%Add "include file" functionality in postgresql.conf
|
||||
</li><li>Allow postgresql.conf values to be set so they can not be changed
|
||||
by the user
|
||||
</li><li>%Allow commenting of variables in postgresql.conf to restore them
|
||||
to defaults
|
||||
<p> Currently, if a variable is commented out, it keeps the
|
||||
@ -150,7 +151,10 @@ first.
|
||||
<h1><a name="section_4">Data Types</a></h1>
|
||||
|
||||
<ul>
|
||||
<li>%Remove Money type, add money formatting for decimal type
|
||||
<li>Improve the MONEY data type
|
||||
<p> Change the MONEY data type to use DECIMAL internally, with special
|
||||
locale-aware output formatting.
|
||||
</p>
|
||||
</li><li>Change NUMERIC to enforce the maximum precision, and increase it
|
||||
</li><li>Add NUMERIC division operator that doesn't round?
|
||||
<p> Currently NUMERIC _rounds_ the result to the specified precision.
|
||||
@ -208,20 +212,19 @@ first.
|
||||
</li><li>Arrays
|
||||
<ul>
|
||||
<li>Allow NULLs in arrays
|
||||
</li><li>%Allow MIN()/MAX() on arrays
|
||||
</li><li>-<em>Allow MIN()/MAX() on arrays</em>
|
||||
</li><li>Delay resolution of array expression's data type so assignment
|
||||
coercion can be performed on empty array expressions
|
||||
</li><li>Modify array literal representation to handle array index lower bound
|
||||
</li><li>-<em>Modify array literal representation to handle array index lower bound</em>
|
||||
of other than one
|
||||
</li></ul>
|
||||
</li><li>Binary Data
|
||||
<ul>
|
||||
<li>Improve vacuum of large objects, like /contrib/vacuumlo?
|
||||
</li><li>Add security checking for large objects
|
||||
<p> Currently large objects entries do not have owners. Permissions can
|
||||
only be set at the pg_largeobject table level.
|
||||
</p>
|
||||
</li><li>Auto-delete large objects when referencing row is deleted
|
||||
<p> /contrib/lo offers this functionality.
|
||||
</p>
|
||||
</li><li>Allow read/write into TOAST values like large objects
|
||||
<p> This requires the TOAST column to be stored EXTERNAL.
|
||||
</p>
|
||||
@ -291,9 +294,9 @@ first.
|
||||
</p>
|
||||
</li><li>Add the functionality for WITH CHECK OPTION clause of CREATE VIEW
|
||||
</li><li>Allow NOTIFY in rules involving conditionals
|
||||
</li><li>%Have views on temporary tables exist in the temporary namespace
|
||||
</li><li>Allow temporary views on non-temporary tables
|
||||
</li><li>%Allow RULE recompilation
|
||||
</li><li>-<em>Have views on temporary tables exist in the temporary namespace</em>
|
||||
</li><li>-<em>Allow temporary views on non-temporary tables</em>
|
||||
</li><li>Allow VIEW/RULE recompilation when the underlying tables change
|
||||
</li></ul>
|
||||
<h1><a name="section_8">SQL Commands</a></h1>
|
||||
|
||||
@ -312,6 +315,8 @@ first.
|
||||
</li><li>Add ROLLUP, CUBE, GROUPING SETS options to GROUP BY
|
||||
</li><li>%Allow SET CONSTRAINTS to be qualified by schema/table name
|
||||
</li><li>%Allow TRUNCATE ... CASCADE/RESTRICT
|
||||
<p> This is like DELETE CASCADE, but truncates.
|
||||
</p>
|
||||
</li><li>%Add a separate TRUNCATE permission
|
||||
<p> Currently only the owner can TRUNCATE a table because triggers are not
|
||||
called, and the table is locked in exclusive mode.
|
||||
@ -347,7 +352,7 @@ first.
|
||||
<p> When enabled, this would allow errors in multi-statement transactions
|
||||
to be automatically ignored.
|
||||
</p>
|
||||
</li><li>Make row-wise comparisons work per SQL spec
|
||||
</li><li>%Make row-wise comparisons work per SQL spec
|
||||
</li><li>Add RESET CONNECTION command to reset all session state
|
||||
<p> This would include resetting of all variables (RESET ALL), dropping of
|
||||
temporary tables, removing any NOTIFYs, cursors, open transactions,
|
||||
@ -368,9 +373,7 @@ first.
|
||||
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><li>Add ON COMMIT capability to CREATE TABLE AS ... SELECT
|
||||
</li></ul>
|
||||
</li><li>UPDATE
|
||||
<ul>
|
||||
@ -386,19 +389,19 @@ first.
|
||||
</li><li>ALTER
|
||||
<ul>
|
||||
<li>%Have ALTER TABLE RENAME rename SERIAL sequence names
|
||||
</li><li>%Add ALTER DOMAIN TYPE
|
||||
</li><li>Add ALTER DOMAIN to modify the underlying data type
|
||||
</li><li>%Allow ALTER TABLE ... ALTER CONSTRAINT ... RENAME
|
||||
</li><li>%Allow ALTER TABLE to change constraint deferrability and actions
|
||||
</li><li>%Disallow dropping of an inherited constraint
|
||||
</li><li>-<em>Allow objects to be moved to different schemas</em>
|
||||
</li><li>Add missing object types for ALTER ... SET SCHEMA
|
||||
</li><li>Allow ALTER TABLESPACE to move to different directories
|
||||
</li><li>Allow databases to be moved to different tablespaces
|
||||
</li><li>Allow moving system tables to other tablespaces, where possible
|
||||
<p> Currently non-global system tables must be in the default database
|
||||
tablespace. Global system tables can never be moved.
|
||||
</p>
|
||||
</li><li>%Prevent child tables from altering constraints like CHECK that were
|
||||
inherited from the parent table
|
||||
</li><li>%Disallow dropping of an inherited constraint
|
||||
</li><li>%Prevent child tables from altering or dropping constraints
|
||||
like CHECK that were inherited from the parent table
|
||||
</li></ul>
|
||||
</li><li>CLUSTER
|
||||
<ul>
|
||||
@ -482,23 +485,21 @@ first.
|
||||
<p> Currently only constants are supported.
|
||||
</p>
|
||||
</li><li>-<em>Change PL/PgSQL to use palloc() instead of malloc()</em>
|
||||
</li><li>Handle references to temporary tables that are created, destroyed,
|
||||
then recreated during a session, and EXECUTE is not used
|
||||
<p> This requires the cached PL/PgSQL byte code to be invalidated when
|
||||
an object referenced in the function is changed.
|
||||
</p>
|
||||
</li><li>Fix PL/pgSQL RENAME to work on variables other than OLD/NEW
|
||||
</li><li>Allow function parameters to be passed by name,
|
||||
get_employee_salary(emp_id => 12345, tax_year => 2001)
|
||||
</li><li>Add Oracle-style packages
|
||||
</li><li>Add table function support to pltcl, plperl, plpython?
|
||||
</li><li>Allow PL/pgSQL to name columns by ordinal position, e.g. rec.(3)
|
||||
</li><li>Add table function support to pltcl, plpython
|
||||
</li><li>-<em>Allow PL/pgSQL EXECUTE query_var INTO record_var;</em>
|
||||
</li><li>Add capability to create and call PROCEDURES
|
||||
</li><li>Allow PL/pgSQL to handle %TYPE arrays, e.g. tab.col%TYPE[<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?"></a>]
|
||||
</li><li>Allow function argument names to be queries from PL/PgSQL
|
||||
</li><li>Add MOVE to PL/pgSQL
|
||||
</li><li>Pass arrays natively instead of as text between plperl and postgres
|
||||
</li><li>Add support for polymorphic arguments and return types to plperl
|
||||
</li><li>-<em>Pass arrays natively instead of as text between plperl and postgres</em>
|
||||
</li><li>Add support for polymorphic arguments and return types to
|
||||
languages other than PL/PgSQL
|
||||
</li><li>Add support for OUT and INOUT parameters to languages other
|
||||
than PL/PgSQL
|
||||
</li></ul>
|
||||
</li></ul>
|
||||
<h1><a name="section_9">Clients</a></h1>
|
||||
@ -506,13 +507,9 @@ first.
|
||||
<ul>
|
||||
<li>Add a libpq function to support Parse/DescribeStatement capability
|
||||
</li><li>Prevent libpq's PQfnumber() from lowercasing the column name?
|
||||
</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>
|
||||
</li><li>Add PQescapeIdentifier() to libpq
|
||||
</li><li>Have initdb set DateStyle based on locale?
|
||||
</li><li>Have initdb set the input DateStyle (MDY or DMY) based on locale?
|
||||
</li><li>Have pg_ctl look at PGHOST in case it is a socket directory?
|
||||
</li><li>Add a schema option to createlang
|
||||
</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
|
||||
@ -546,13 +543,11 @@ first.
|
||||
</li><li>Stop dumping CASCADE on DROP TYPE commands in clean mode
|
||||
</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.
|
||||
<p> This is probably best done by combining pg_dump and pg_dumpall
|
||||
into a single binary.
|
||||
</p>
|
||||
</li><li>Add pg_dumpall custom format dumps?
|
||||
</li><li>%Add CSV output format
|
||||
</li><li>Update pg_dump and psql to use the new COPY libpq API (Christopher)
|
||||
</li><li>Remove unnecessary abstractions in pg_dump source code
|
||||
</li><li>Remove unnecessary function pointer abstractions in pg_dump source
|
||||
code
|
||||
</li></ul>
|
||||
</li><li>ecpg
|
||||
<ul>
|
||||
@ -598,10 +593,6 @@ first.
|
||||
</p>
|
||||
</li><li>Allow statement-level triggers to access modified rows
|
||||
</li><li>Support triggers on columns (Greg Sabino Mullane)
|
||||
</li><li>%Remove CREATE CONSTRAINT TRIGGER
|
||||
<p> This was used in older releases to dump referential integrity
|
||||
constraints.
|
||||
</p>
|
||||
</li><li>Enforce referential integrity for system tables
|
||||
</li><li>Allow AFTER triggers on system tables
|
||||
<p> System tables are modified in many places in the backend without going
|
||||
@ -615,6 +606,10 @@ first.
|
||||
<ul>
|
||||
<li>Flush cached query plans when the dependent objects change
|
||||
</li><li>Track dependencies in function bodies and recompile/invalidate
|
||||
<p> This is particularly important for references to temporary tables
|
||||
in PL/PgSQL because PL/PgSQL caches query plans. The only workaround
|
||||
in PL/PgSQL is to use EXECUTE.
|
||||
</p>
|
||||
</li></ul>
|
||||
<h1><a name="section_12">Exotic Features</a></h1>
|
||||
|
||||
@ -672,7 +667,7 @@ first.
|
||||
<p> Uniqueness (index) checks are done when updating a column even if the
|
||||
column is not modified by the UPDATE.
|
||||
</p>
|
||||
</li><li>Fetch heap pages matching index entries in sequential order
|
||||
</li><li>-<em>Fetch heap pages matching index entries in sequential order</em>
|
||||
<p> Rather than randomly accessing heap pages based on index entries, mark
|
||||
heap pages needing access in a bitmap and do the lookups in sequential
|
||||
order. Another method would be to sort heap ctids matching the index
|
||||
@ -714,7 +709,7 @@ first.
|
||||
</li><li>Hash
|
||||
<ul>
|
||||
<li>Pack hash index buckets onto disk pages more efficiently
|
||||
<p> Currently no only one hash bucket can be stored on a page. Ideally
|
||||
<p> Currently only one hash bucket can be stored on a page. Ideally
|
||||
several hash buckets could be stored on a single page and greater
|
||||
granularity used for the hash algorithm.
|
||||
</p>
|
||||
@ -722,6 +717,8 @@ first.
|
||||
binary search, rather than a linear scan
|
||||
</li><li>In hash indexes, consider storing the hash value with or instead
|
||||
of the key itself
|
||||
</li><li>Add WAL logging for crash recovery
|
||||
</li><li>Allow multi-column hash indexes
|
||||
</li></ul>
|
||||
</li></ul>
|
||||
<h1><a name="section_14">Fsync</a></h1>
|
||||
@ -729,6 +726,9 @@ first.
|
||||
<ul>
|
||||
<li>Improve commit_delay handling to reduce fsync()
|
||||
</li><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.
|
||||
</p>
|
||||
</li><li>-<em>Allow multiple blocks to be written to WAL with one write()</em>
|
||||
</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
|
||||
@ -776,7 +776,7 @@ first.
|
||||
<p> Larger local buffer cache sizes requires more efficient handling of
|
||||
local cache lookups.
|
||||
</p>
|
||||
</li><li>Improve the background writer
|
||||
</li><li>-<em>Improve the background writer</em>
|
||||
<p> Allow the background writer to more efficiently write dirty buffers
|
||||
from the end of the LRU cache and use a clock sweep algorithm to
|
||||
write other dirty buffers to reduced checkpoint I/O
|
||||
@ -793,11 +793,11 @@ first.
|
||||
|
||||
<ul>
|
||||
<li>Improve speed with indexes
|
||||
<p> For large table adjustements during vacuum, it is faster to reindex
|
||||
rather than update the index.
|
||||
<p> For large table adjustements during VACUUM FULL, it is faster to
|
||||
reindex rather than update the index.
|
||||
</p>
|
||||
</li><li>Reduce lock time by moving tuples with read lock, then write
|
||||
lock and truncate table
|
||||
</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.
|
||||
@ -820,7 +820,8 @@ first.
|
||||
<ul>
|
||||
<li>-<em>Move into the backend code</em>
|
||||
</li><li>Use free-space map information to guide refilling
|
||||
</li><li>%Suggest VACUUM FULL if a table is nearly empty
|
||||
</li><li>%Issue log message to suggest VACUUM FULL if a table is nearly
|
||||
empty?
|
||||
</li><li>Improve xid wraparound detection by recording per-table rather
|
||||
than per-database
|
||||
</li></ul>
|
||||
@ -889,7 +890,6 @@ first.
|
||||
</li></ul>
|
||||
</li><li>Reduce WAL traffic so only modified values are written rather than
|
||||
entire rows?
|
||||
</li><li>Add WAL index reliability improvement to non-btree indexes
|
||||
</li><li>Allow the pg_xlog directory location to be specified during initdb
|
||||
with a symlink back to the /data location
|
||||
</li><li>Allow WAL information to recover corrupted pg_controldata
|
||||
@ -933,9 +933,13 @@ first.
|
||||
</li><li>Consider using hash buckets to do DISTINCT, rather than sorting
|
||||
<p> This would be beneficial when there are few distinct values.
|
||||
</p>
|
||||
</li><li>ANALYZE should record a pg_statistic entry for an all-NULL column
|
||||
</li><li>-<em>ANALYZE should record a pg_statistic entry for an all-NULL column</em>
|
||||
</li><li>Log queries where the optimizer row estimates were dramatically
|
||||
different from the number of rows actually found?
|
||||
</li><li>Allow constraint_elimination to be automatically performed
|
||||
<p> This requires additional code to reduce the performance loss caused by
|
||||
constraint elimination.
|
||||
</p>
|
||||
</li></ul>
|
||||
<h1><a name="section_21">Miscellaneous Performance</a></h1>
|
||||
|
||||
@ -974,10 +978,10 @@ first.
|
||||
</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>%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 the identifier length to be increased via a configure option
|
||||
</li><li>%Promote debug_query_string into a server-side function current_query()
|
||||
</li><li>%Allow the identifier length to be increased via a configure option
|
||||
</li><li>Remove Win32 rename/unlink looping if unnecessary
|
||||
</li><li>-<em>Remove kerberos4 from source tree</em>
|
||||
</li><li>Allow cross-compiling by generating the zic database on the target system
|
||||
@ -995,7 +999,6 @@ first.
|
||||
is already possible to install into a directory that doesn't contain
|
||||
spaces and then copy the install to a directory with spaces.
|
||||
</p>
|
||||
</li><li>Fix cross-compiling of time zone database via 'zic'
|
||||
</li><li>Fix sgmltools so PDFs can be generated with bookmarks
|
||||
</li><li>-<em>Add C code on Unix to copy directories for use in creating new databases</em>
|
||||
</li><li>%Clean up compiler warnings (especially with gcc version 4)
|
||||
@ -1010,9 +1013,9 @@ first.
|
||||
backslashes
|
||||
</li><li>Re-enable timezone output on log_line_prefix '%t' when a
|
||||
shorter timezone string is available
|
||||
</li><li>Improve dlerror() reporting string
|
||||
</li><li>-<em>Improve dlerror() reporting string</em>
|
||||
</li><li>Fix problem with shared memory on the Win32 Terminal Server
|
||||
</li><li>Add support for Unicode
|
||||
</li><li>%Add support for Unicode
|
||||
<p> To fix this, the data needs to be converted to/from UTF16/UTF8
|
||||
so the Win32 wcscoll() can be used, and perhaps other functions
|
||||
like towupper(). However, UTF8 already works with normal
|
||||
|
Loading…
Reference in New Issue
Block a user