22PostgreSQL TODO List
33====================
44Current maintainer:Bruce Momjian (pgman@candle.pha.pa.us)
5- Last updated:Wed Aug 24 10:00:31 EDT 2005
5+ Last updated:Wed Aug 24 10:05:23 EDT 2005
66
77The most recent version of this document can be viewed at
88http://www.postgresql.org/docs/faqs.TODO.html.
99
1010#A hyphen, "-", marks changes that will appear in the upcoming 8.1 release.#
11+ #A percent sign, "%", marks items that are easier to implement.#
1112
1213Bracketed items, "[]", have more detail.
1314
@@ -19,10 +20,10 @@ first.
1920Administration
2021==============
2122
22- * Remove behavior of postmaster -o after making postmaster/postgres
23+ *% Remove behavior of postmaster -o after making postmaster/postgres
2324 flags unique
2425* -Allow limits on per-db/role connections
25- * Allow pooled connections to list all prepared queries
26+ *% Allow pooled connections to list all prepared queries
2627
2728 This would allow an application inheriting a pooled connection to know
2829 the queries prepared in the current session.
@@ -37,7 +38,7 @@ Administration
3738 Currently SIGTERM of a backend can lead to lock table corruption.
3839
3940* -Prevent dropping user that still owns objects, or auto-drop the objects
40- * Set proper permissions on non-system schemas during db creation
41+ *% Set proper permissions on non-system schemas during db creation
4142
4243 Currently all schemas are owned by the super-user because they are
4344 copied from the template1 database.
@@ -61,24 +62,24 @@ Administration
6162
6263* Configuration files
6364
64- o Add "include file" functionality in postgresql.conf
65+ o% Add "include file" functionality in postgresql.conf
6566o Allow postgresql.conf values to be set so they can not be changed
6667 by the user
67- o Allow commenting of variables in postgresql.conf to restore them
68+ o% Allow commenting of variables in postgresql.conf to restore them
6869 to defaults
6970
7071 Currently, if a variable is commented out, it keeps the
7172 previous uncommented value until a server restarted.
7273
73- o Allow pg_hba.conf settings to be controlled via SQL
74+ o% Allow pg_hba.conf settings to be controlled via SQL
7475
7576 This would add a function to load the SQL table from
7677 pg_hba.conf, and one to writes its contents to the flat file.
7778 The table should have a line number that is a float so rows
7879 can be inserted between existing rows, e.g. row 2.5 goes
7980 between row 2 and row 3.
8081
81- o Allow postgresql.conf file values to be changed via an SQL
82+ o% Allow postgresql.conf file values to be changed via an SQL
8283 API, perhaps using SET GLOBAL
8384o Allow the server to be stopped/restarted via an SQL API
8485
@@ -106,7 +107,7 @@ Administration
106107 requires a tool that will call that function and connect to each
107108 database to find the objects in each database for that tablespace.
108109
109- o Add a GUC variable to control the tablespace for temporary objects
110+ o% Add a GUC variable to control the tablespace for temporary objects
110111 and sort files
111112
112113 It could start with a random tablespace from a supplied list and
@@ -135,7 +136,7 @@ Administration
135136 the archive contins all the files needed for point-in-time
136137 recovery.
137138
138- o Create dump tool for write-ahead logs for use in determining
139+ o% Create dump tool for write-ahead logs for use in determining
139140 transaction id for point-in-time recovery
140141 o Allow a warm standby system to also allow read-only queries
141142 [pitr]
@@ -153,7 +154,7 @@ Monitoring
153154 This would allow server log information to be easily loaded into
154155 a database for analysis.
155156
156- * Add ability to monitor the use of temporary sort files
157+ *% Add ability to monitor the use of temporary sort files
157158* -Add session start time and last statement time to pg_stat_activity
158159* -Add a function that returns the start time of the postmaster
159160* Allow server logs to be remotely read and removed using SQL commands
@@ -162,7 +163,7 @@ Monitoring
162163Data Types
163164==========
164165
165- * Remove Money type, add money formatting for decimal type
166+ *% Remove Money type, add money formatting for decimal type
166167* Change NUMERIC to enforce the maximum precision, and increase it
167168* Add NUMERIC division operator that doesn't round?
168169
@@ -177,14 +178,14 @@ Data Types
177178
178179* Have sequence dependency track use of DEFAULT sequences,
179180 seqname.nextval?
180- * Disallow changing default expression of a SERIAL column?
181+ *% Disallow changing default expression of a SERIAL column?
181182* Fix data types where equality comparison isn't intuitive, e.g. box
182- * Prevent INET cast to CIDR if the unmasked bits are not zero, or
183+ *% Prevent INET cast to CIDR if the unmasked bits are not zero, or
183184 zero the bits
184- * Prevent INET cast to CIDR from droping netmask, SELECT '1.1.1.1'::inet::cidr
185+ *% Prevent INET cast to CIDR from droping netmask, SELECT '1.1.1.1'::inet::cidr
185186* Allow INET + INT4 to increment the host part of the address, or
186187 throw an error on overflow
187- * Add 'tid != tid ' operator for use in corruption recovery
188+ *% Add 'tid != tid ' operator for use in corruption recovery
188189
189190
190191* Dates and Times
@@ -221,7 +222,7 @@ Data Types
221222* Arrays
222223
223224o Allow NULLs in arrays
224- o Allow MIN()/MAX() on arrays
225+ o% Allow MIN()/MAX() on arrays
225226o Delay resolution of array expression's data type so assignment
226227 coercion can be performed on empty array expressions
227228o Modify array literal representation to handle array index lower bound
@@ -255,7 +256,7 @@ Functions
255256 make time reporting more consistent and will allow reporting of
256257 the statement start time.
257258
258- * Add pg_get_acldef(), pg_get_typedefault(), and pg_get_attrdef()
259+ *% Add pg_get_acldef(), pg_get_typedefault(), and pg_get_attrdef()
259260* Allow to_char() to print localized month names
260261* Allow functions to have a schema search path specified at creation time
261262* Allow substring/replace() to get/set bit values
@@ -304,16 +305,16 @@ Multi-Language Support
304305Views / Rules
305306=============
306307
307- * Automatically create rules on views so they are updateable, per SQL99
308+ *% Automatically create rules on views so they are updateable, per SQL99
308309
309310 We can only auto-create rules for simple views. For more complex
310311 cases users will still have to write rules.
311312
312313* Add the functionality for WITH CHECK OPTION clause of CREATE VIEW
313314* Allow NOTIFY in rules involving conditionals
314- * Have views on temporary tables exist in the temporary namespace
315+ *% Have views on temporary tables exist in the temporary namespace
315316* Allow temporary views on non-temporary tables
316- * Allow RULE recompilation
317+ *% Allow RULE recompilation
317318
318319
319320SQL Commands
@@ -333,9 +334,9 @@ SQL Commands
333334* Add CORRESPONDING BY to UNION/INTERSECT/EXCEPT
334335* -Allow REINDEX to rebuild all database indexes
335336* Add ROLLUP, CUBE, GROUPING SETS options to GROUP BY
336- * Allow SET CONSTRAINTS to be qualified by schema/table name
337- * Allow TRUNCATE ... CASCADE/RESTRICT
338- * Add a separate TRUNCATE permission
337+ *% Allow SET CONSTRAINTS to be qualified by schema/table name
338+ *% Allow TRUNCATE ... CASCADE/RESTRICT
339+ *% Add a separate TRUNCATE permission
339340
340341 Currently only the owner can TRUNCATE a table because triggers are not
341342 called, and the table is locked in exclusive mode.
@@ -367,7 +368,7 @@ SQL Commands
367368 triggers?)
368369* Add NOVICE output level for helpful messages like automatic sequence/index
369370 creation
370- * Add COMMENT ON for all cluster global objects (roles, databases
371+ *% Add COMMENT ON for all cluster global objects (roles, databases
371372 and tablespaces)
372373* -Add an option to automatically use savepoints for each statement in a
373374 multi-statement transaction.
@@ -420,11 +421,11 @@ SQL Commands
420421
421422* ALTER
422423
423- o Have ALTER TABLE RENAME rename SERIAL sequence names
424- o Add ALTER DOMAIN TYPE
425- o Allow ALTER TABLE ... ALTER CONSTRAINT ... RENAME
426- o Allow ALTER TABLE to change constraint deferrability and actions
427- o Disallow dropping of an inherited constraint
424+ o% Have ALTER TABLE RENAME rename SERIAL sequence names
425+ o% Add ALTER DOMAIN TYPE
426+ o% Allow ALTER TABLE ... ALTER CONSTRAINT ... RENAME
427+ o% Allow ALTER TABLE to change constraint deferrability and actions
428+ o% Disallow dropping of an inherited constraint
428429o -Allow objects to be moved to different schemas
429430o Allow ALTER TABLESPACE to move to different directories
430431o Allow databases to be moved to different tablespaces
@@ -433,7 +434,7 @@ SQL Commands
433434 Currently non-global system tables must be in the default database
434435 tablespace. Global system tables can never be moved.
435436
436- o Prevent child tables from altering constraints like CHECK that were
437+ o% Prevent child tables from altering constraints like CHECK that were
437438 inherited from the parent table
438439
439440
@@ -449,7 +450,7 @@ SQL Commands
449450 store heap rows in hashed groups, perhaps using a user-supplied
450451 hash function.
451452
452- o Add default clustering to system tables
453+ o% Add default clustering to system tables
453454
454455 To do this, determine the ideal cluster index for each system
455456 table and set the cluster setting during initdb.
@@ -463,7 +464,7 @@ SQL Commands
463464 processed, with ROLLBACK on COPY failure.
464465
465466o -Allow COPY to understand \x as a hex byte
466- o Have COPY return the number of rows loaded/unloaded?
467+ o% Have COPY return the number of rows loaded/unloaded?
467468o -Allow COPY to optionally include column headings in the first line
468469o -Allow COPY FROM ... CSV to interpret newlines and carriage
469470 returns in data
@@ -472,7 +473,7 @@ SQL Commands
472473* GRANT/REVOKE
473474
474475o Allow column-level privileges
475- o Allow GRANT/REVOKE permissions to be applied to all schema objects
476+ o% Allow GRANT/REVOKE permissions to be applied to all schema objects
476477 with one command
477478
478479 The proposed syntax is:
@@ -495,7 +496,7 @@ SQL Commands
495496o Prevent DROP TABLE from dropping a row referenced by its own open
496497 cursor?
497498
498- o Allow pooled connections to list all open WITH HOLD cursors
499+ o% Allow pooled connections to list all open WITH HOLD cursors
499500
500501 Because WITH HOLD cursors exist outside transactions, this allows
501502 them to be listed so they can be closed.
@@ -589,22 +590,22 @@ Clients
589590
590591* pg_dump
591592
592- o Have pg_dump use multi-statement transactions for INSERT dumps
593- o Allow pg_dump to use multiple -t and -n switches [pg_dump]
594- o Add dumping of comments on composite type columns
595- o Add dumping of comments on index columns
596- o Replace crude DELETE FROM method of pg_dumpall --clean for
593+ o% Have pg_dump use multi-statement transactions for INSERT dumps
594+ o% Allow pg_dump to use multiple -t and -n switches [pg_dump]
595+ o% Add dumping of comments on composite type columns
596+ o% Add dumping of comments on index columns
597+ o% Replace crude DELETE FROM method of pg_dumpall --clean for
597598 cleaning of roles with separate DROP commands
598599o -Add dumping and restoring of LOB comments
599600o Stop dumping CASCADE on DROP TYPE commands in clean mode
600- o Add full object name to the tag field. eg. for operators we need
601+ o% Add full object name to the tag field. eg. for operators we need
601602 '=(integer, integer)', instead of just '='.
602603o Add pg_dumpall custom format dumps.
603604
604605 This is probably best done by combining pg_dump and pg_dumpall
605606 into a single binary.
606607
607- o Add CSV output format
608+ o% Add CSV output format
608609o Update pg_dump and psql to use the new COPY libpq API (Christopher)
609610o Remove unnecessary abstractions in pg_dump source code
610611
@@ -622,7 +623,7 @@ Clients
622623o Use backend PREPARE/EXECUTE facility for ecpg where possible
623624o Implement SQLDA
624625o Fix nested C comments
625- o sqlwarn[6] should be 'W' if the PRECISION or SCALE value specified
626+ o% sqlwarn[6] should be 'W' if the PRECISION or SCALE value specified
626627o Make SET CONNECTION thread-aware, non-standard?
627628o Allow multidimensional arrays
628629o Add internationalized message strings
@@ -657,7 +658,7 @@ Referential Integrity
657658
658659* Allow statement-level triggers to access modified rows
659660* Support triggers on columns (Greg Sabino Mullane)
660- * Remove CREATE CONSTRAINT TRIGGER
661+ *% Remove CREATE CONSTRAINT TRIGGER
661662
662663 This was used in older releases to dump referential integrity
663664 constraints.
@@ -808,7 +809,7 @@ Fsync
808809* Improve commit_delay handling to reduce fsync()
809810* Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options
810811* -Allow multiple blocks to be written to WAL with one write()
811- * Add an option to sync() before fsync()'ing checkpoint files
812+ *% Add an option to sync() before fsync()'ing checkpoint files
812813* Add program to test if fsync has a delay compared to non-fsync
813814
814815
@@ -906,14 +907,14 @@ Vacuum
906907 VACUUM can look at just those pages rather than the entire table. In
907908 the event of a system crash, the bitmap would probably be invalidated.
908909
909- * Add system view to show free space map contents
910+ *% Add system view to show free space map contents
910911
911912
912913* Auto-vacuum
913914
914915o -Move into the backend code
915916o Use free-space map information to guide refilling
916- o Suggest VACUUM FULL if a table is nearly empty
917+ o% Suggest VACUUM FULL if a table is nearly empty
917918o Improve xid wraparound detection by recording per-table rather
918919 than per-database
919920
@@ -1079,7 +1080,7 @@ Source Code
10791080* Rename some /contrib modules from pg* to pg_*
10801081* Move some things from /contrib into main tree
10811082* Move some /contrib modules out to their own project sites
1082- * Remove warnings created by -Wcast-align
1083+ *% Remove warnings created by -Wcast-align
10831084* Move platform-specific ps status display info from ps_status.c to ports
10841085* Add optional CRC checksum to heap and index pages
10851086* Improve documentation to build only interfaces (Marc)
@@ -1110,6 +1111,7 @@ Source Code
11101111* Fix cross-compiling of time zone database via 'zic'
11111112* Fix sgmltools so PDFs can be generated with bookmarks
11121113* -Add C code on Unix to copy directories for use in creating new databases
1114+ * %Clean up compiler warnings (especially with gcc version 4)
11131115
11141116
11151117* Win32