mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-29 22:49:41 +03: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:
		
							
								
								
									
										208
									
								
								doc/TODO
									
									
									
									
									
								
							
							
						
						
									
										208
									
								
								doc/TODO
									
									
									
									
									
								
							| @@ -1,7 +1,7 @@ | |||||||
| PostgreSQL TODO List | PostgreSQL TODO List | ||||||
| ==================== | ==================== | ||||||
| Current maintainer:	Bruce Momjian (bruce@momjian.us) | 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 | The most recent version of this document can be viewed at | ||||||
| http://www.postgresql.org/docs/faqs.TODO.html. | http://www.postgresql.org/docs/faqs.TODO.html. | ||||||
| @@ -20,13 +20,6 @@ http://developer.postgresql.org. | |||||||
| Administration | 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 | * Allow administrators to safely terminate individual sessions either | ||||||
|   via an SQL function or SIGTERM |   via an SQL function or SIGTERM | ||||||
|  |  | ||||||
| @@ -37,6 +30,11 @@ Administration | |||||||
|  |  | ||||||
|   http://archives.postgresql.org/pgsql-hackers/2006-08/msg00174.php |   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 | * Set proper permissions on non-system schemas during db creation | ||||||
|  |  | ||||||
|   Currently all schemas are owned by the super-user because they are copied |   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 |   from the template database, it is not clear that setting schemas to the db | ||||||
|   owner is correct. |   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 | * Add function to report the time of the most recent server reload | ||||||
| * Allow statistics collector information to be pulled from the collector | * Allow statistics collector information to be pulled from the collector | ||||||
|   process directly, rather than requiring the collector to write a |   process directly, rather than requiring the collector to write a | ||||||
| @@ -61,8 +56,8 @@ Administration | |||||||
| * Simplify ability to create partitioned tables | * Simplify ability to create partitioned tables | ||||||
|  |  | ||||||
|   This would allow creation of partitioned tables without requiring |   This would allow creation of partitioned tables without requiring | ||||||
|   creation of rules for INSERT/UPDATE/DELETE, and constraints for |   creation of triggers or rules for INSERT/UPDATE/DELETE, and constraints | ||||||
|   rapid partition selection.  Options could include range and hash |   for rapid partition selection.  Options could include range and hash | ||||||
|   partition selection. |   partition selection. | ||||||
|  |  | ||||||
|   http://archives.postgresql.org/pgsql-hackers/2007-03/msg00375.php |   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 |   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 | * Configuration files | ||||||
|  |  | ||||||
| 	o Allow pg_hba.conf to specify host names along with IP addresses | 	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 Allow the server to be stopped/restarted via an SQL API | ||||||
| 	o Issue a warning if a change-on-restart-only postgresql.conf value | 	o Issue a warning if a change-on-restart-only postgresql.conf value | ||||||
| 	  is modified  and the server config files are reloaded | 	  is modified  and the server config files are reloaded | ||||||
| 	o Mark change-on-restart-only values in postgresql.conf |  | ||||||
|  |  | ||||||
|  |  | ||||||
| * Tablespaces | * Tablespaces | ||||||
| @@ -127,14 +109,15 @@ Administration | |||||||
| 	  tablespace t2 to be used as a template for a new database created | 	  tablespace t2 to be used as a template for a new database created | ||||||
| 	  with default tablespace t2 | 	  with default tablespace t2 | ||||||
|  |  | ||||||
| 	  All objects in the default database tablespace must have default | 	  Currently all objects in the default database tablespace must | ||||||
| 	  tablespace specifications. This is because new databases are | 	  have default tablespace specifications. This is because new | ||||||
| 	  created by copying directories. If you mix default tablespace | 	  databases are created by copying directories. If you mix default | ||||||
| 	  tables and tablespace-specified tables in the same directory, | 	  tablespace tables and tablespace-specified tables in the same | ||||||
| 	  creating a new database from such a mixed directory would create a | 	  directory, creating a new database from such a mixed directory | ||||||
| 	  new database with tables that had incorrect explicit tablespaces. | 	  would create a new database with tables that had incorrect | ||||||
| 	  To fix this would require modifying pg_class in the newly copied | 	  explicit tablespaces.  To fix this would require modifying | ||||||
| 	  database, which we don't currently do. | 	  pg_class in the newly copied database, which we don't currently | ||||||
|  | 	  do. | ||||||
|  |  | ||||||
| 	o Allow reporting of which objects are in which tablespaces | 	o Allow reporting of which objects are in which tablespaces | ||||||
|  |  | ||||||
| @@ -156,13 +139,12 @@ Administration | |||||||
| 	    [pitr] | 	    [pitr] | ||||||
|  |  | ||||||
| 	    This is useful for checking PITR recovery. | 	    This is useful for checking PITR recovery. | ||||||
|  |  | ||||||
| 	    http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php | 	    http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php | ||||||
|  |  | ||||||
| 	  o %Create dump tool for write-ahead logs for use in determining | 	  o %Create dump tool for write-ahead logs for use in determining | ||||||
| 	    transaction id for point-in-time recovery | 	    transaction id for point-in-time recovery | ||||||
| 	  o Allow the PITR process to be debugged and data examined | 	  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 | 	    postgresql.conf, including quoting | ||||||
|  |  | ||||||
| 	    http://archives.postgresql.org/pgsql-hackers/2006-12/msg00497.php | 	    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 |   http://archives.postgresql.org/pgsql-patches/2007-02/msg00505.php | ||||||
|  |  | ||||||
| * Fix data types where equality comparison isn't intuitive, e.g. box | * 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 | * Add support for public SYNONYMs | ||||||
|  |  | ||||||
|   http://archives.postgresql.org/pgsql-hackers/2006-03/msg00519.php |   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 | * Consider placing all sequences in a single table, or create a system | ||||||
|   view |   view | ||||||
| * Allow all data types to cast to and from TEXT |  | ||||||
|  |  | ||||||
|   http://archives.postgresql.org/pgsql-hackers/2007-04/msg00017.php |  | ||||||
|  |  | ||||||
|  |  | ||||||
| * Dates and Times | * Dates and Times | ||||||
|  |  | ||||||
| 	o Allow infinite dates and intervals just like infinite timestamps | 	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 | 		  range of units supported, e.g. PostgreSQL supports '1 year 1 | ||||||
| 		  hour', while the SQL standard does not. | 		  hour', while the SQL standard does not. | ||||||
|  |  | ||||||
| 		o Add support for year-month syntax, INTERVAL '50-6' YEAR TO MONTH | 		o Add support for year-month syntax, INTERVAL '50-6' YEAR | ||||||
| 		o Interpret INTERVAL '1 year' MONTH as CAST (INTERVAL '1 year' AS | 		  TO MONTH | ||||||
| 		  INTERVAL MONTH), and this should return '12 months' | 		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. | 		o Round or truncate values to the requested precision, e.g. | ||||||
| 		  INTERVAL '11 months' AS YEAR should return one or zero | 		  INTERVAL '11 months' AS YEAR should return one or zero | ||||||
| 		o Support precision, CREATE TABLE foo (a INTERVAL MONTH(3)) | 		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 | 	* MONEY dumps in a locale-specific format making it difficult to | ||||||
| 	  restore to a system with a different locale | 	  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 | Functions | ||||||
| @@ -335,7 +312,6 @@ Functions | |||||||
|  |  | ||||||
|   http://archives.postgresql.org/pgsql-hackers/2005-12/msg00948.php |   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 substring/replace() to get/set bit values | ||||||
| * Allow to_char() on interval values to accumulate the highest unit | * Allow to_char() on interval values to accumulate the highest unit | ||||||
|   requested |   requested | ||||||
| @@ -430,10 +406,6 @@ Multi-Language Support | |||||||
|  |  | ||||||
|   http://archives.postgresql.org/pgsql-hackers/2006-08/msg01696.php |   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 | Views / Rules | ||||||
| @@ -481,7 +453,7 @@ SQL Commands | |||||||
|   manually or automatically when statistics for execute parameters |   manually or automatically when statistics for execute parameters | ||||||
|   differ dramatically from those used during planning. |   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 |   http://archives.postgresql.org/pgsql-hackers/2006-11/msg00092.php | ||||||
|  |  | ||||||
| @@ -523,7 +495,7 @@ SQL Commands | |||||||
|   constraint_exclusion |   constraint_exclusion | ||||||
| * Allow EXPLAIN output to be more easily processed by scripts, perhaps XML | * Allow EXPLAIN output to be more easily processed by scripts, perhaps XML | ||||||
| * Enable standard_conforming_strings | * 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'' |   When this is done, backslash-quote should be prohibited in non-E'' | ||||||
|   strings because of possible confusion over how such strings treat |   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 | * Simplify dropping roles that have objects in several databases | ||||||
| * Allow COMMENT ON to accept an expression rather than just a string | * 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 |   to allow a higher range of values | ||||||
| * Add SQL99 WITH clause to SELECT | * Add SQL99 WITH clause to SELECT | ||||||
| * Add SQL:2003 WITH RECURSIVE (hierarchical) queries 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 | 	o Allow CREATE TABLE AS to determine column lengths for complex | ||||||
| 	  expressions like SELECT col1 || col2 | 	  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 | 	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 | 	  be removed or have its heap and index files truncated.  One | ||||||
| 	  issue is that no other backend should be able to add to | 	  issue is that no other backend should be able to add to | ||||||
| 	  the table at the same time, which is something that is | 	  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 | * GRANT/REVOKE | ||||||
| @@ -699,9 +667,6 @@ SQL Commands | |||||||
|  |  | ||||||
| 	o Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM | 	o Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM | ||||||
| 	  ANALYZE, and CLUSTER | 	  ANALYZE, and CLUSTER | ||||||
| 	o Add SET PATH for schemas? |  | ||||||
|  |  | ||||||
| 	  This is basically the same as SET search_path. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| * Referential Integrity | * Referential Integrity | ||||||
| @@ -709,7 +674,6 @@ SQL Commands | |||||||
| 	o Add MATCH PARTIAL referential integrity | 	o Add MATCH PARTIAL referential integrity | ||||||
| 	o Change foreign key constraint for array -> element to mean element | 	o Change foreign key constraint for array -> element to mean element | ||||||
| 	  in array? | 	  in array? | ||||||
| 	o Enforce referential integrity for system tables |  | ||||||
| 	o Fix problem when cascading referential triggers make changes on | 	o Fix problem when cascading referential triggers make changes on | ||||||
| 	  cascaded tables, seeing the tables in an intermediate state | 	  cascaded tables, seeing the tables in an intermediate state | ||||||
|  |  | ||||||
| @@ -738,16 +702,6 @@ SQL Commands | |||||||
|  |  | ||||||
| 		o Allow function parameters to be passed by name, | 		o Allow function parameters to be passed by name, | ||||||
| 		  get_employee_salary(12345 AS emp_id, 2001 AS tax_year) | 		  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 handling of %TYPE arrays, e.g. tab.col%TYPE[] | ||||||
| 		o Allow listing of record column names, and access to | 		o Allow listing of record column names, and access to | ||||||
| 		  record columns via variables, e.g. columns := r.(*), | 		  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-05/msg00302.php | ||||||
| 		  http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.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 SCROLL cursors | ||||||
| 		o Add support for WITH HOLD 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, | 		o Allow row and record variables to be set to NULL constants, | ||||||
| 		  and allow NULL tests on such variables | 		  and allow NULL tests on such variables | ||||||
|  |  | ||||||
| @@ -808,13 +750,7 @@ Clients | |||||||
|   allow pg_ctl to read and understand postgresql.conf to find the |   allow pg_ctl to read and understand postgresql.conf to find the | ||||||
|   data_directory value. |   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 | * psql | ||||||
|  |  | ||||||
| 	o Have psql show current values for a sequence | 	o Have psql show current values for a sequence | ||||||
| 	o Move psql backslash database information into the backend, use | 	o Move psql backslash database information into the backend, use | ||||||
| 	  mnemonic commands? [psql] | 	  mnemonic commands? [psql] | ||||||
| @@ -842,11 +778,6 @@ Clients | |||||||
| 	  because setting the transaction isolation level must be the | 	  because setting the transaction isolation level must be the | ||||||
| 	  first statement of a transaction. | 	  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 | 	o Add a \set variable to control whether \s displays line numbers | ||||||
|  |  | ||||||
| 	  Another option is to add \# which lists line numbers, and | 	  Another option is to add \# which lists line numbers, and | ||||||
| @@ -856,13 +787,10 @@ Clients | |||||||
|  |  | ||||||
|  |  | ||||||
| * pg_dump | * pg_dump | ||||||
|  |  | ||||||
| 	o %Add dumping of comments on index columns and composite type columns | 	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 | 	o %Add full object name to the tag field.  eg. for operators we need | ||||||
| 	  '=(integer, integer)', instead of just '='. | 	  '=(integer, integer)', instead of just '='. | ||||||
| 	o Add pg_dumpall custom format dumps? | 	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 | 	o Allow selection of individual object(s) of all types, not just | ||||||
| 	  tables | 	  tables | ||||||
| 	o In a selective dump, allow dumping of an object and all its | 	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 | 	  applied to the loaded database, even if the database has a | ||||||
| 	  different name.  This will require new backend syntax, perhaps | 	  different name.  This will require new backend syntax, perhaps | ||||||
| 	  COMMENT ON CURRENT DATABASE. | 	  COMMENT ON CURRENT DATABASE. | ||||||
|  | 	o Remove unnecessary function pointer abstractions in pg_dump source | ||||||
|  | 	  code | ||||||
|  |  | ||||||
|  |  | ||||||
| * ecpg | * ecpg | ||||||
|  |  | ||||||
| 	o Docs | 	o Docs | ||||||
|  |  | ||||||
| 	  Document differences between ecpg and the SQL standard and | 	  Document differences between ecpg and the SQL standard and | ||||||
| @@ -898,7 +827,6 @@ Clients | |||||||
|  |  | ||||||
|  |  | ||||||
| * libpq | * libpq | ||||||
|  |  | ||||||
| 	o Add PQescapeIdentifierConn() | 	o Add PQescapeIdentifierConn() | ||||||
| 	o Prevent PQfnumber() from lowercasing unquoted the column name | 	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. | 	  held on the server waiting for them to be requested by libpq. | ||||||
| 	  One complexity is that a statement like SELECT 1/col could error | 	  One complexity is that a statement like SELECT 1/col could error | ||||||
| 	  out mid-way through the result set. | 	  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 | 	o Consider disallowing multiple queries in PQexec() as an | ||||||
| 	  additional barrier to SQL injection attacks | 	  additional barrier to SQL injection attacks | ||||||
|  |  | ||||||
| @@ -996,9 +923,6 @@ Indexes | |||||||
|  |  | ||||||
| * Consider compressing indexes by storing key values duplicated in | * Consider compressing indexes by storing key values duplicated in | ||||||
|   several rows as a single index entry |   several rows as a single index entry | ||||||
|  |  | ||||||
|   This is difficult because it requires datatype-specific knowledge. |  | ||||||
|  |  | ||||||
| * Add REINDEX CONCURRENTLY, like CREATE INDEX CONCURRENTLY | * Add REINDEX CONCURRENTLY, like CREATE INDEX CONCURRENTLY | ||||||
|  |  | ||||||
|   This is difficult because you must upgrade to an exclusive table lock |   This is difficult because you must upgrade to an exclusive table lock | ||||||
| @@ -1059,14 +983,12 @@ Indexes | |||||||
| Fsync | Fsync | ||||||
| ===== | ===== | ||||||
|  |  | ||||||
| * Improve commit_delay handling to reduce fsync() |  | ||||||
| * Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options | * Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options | ||||||
|  |  | ||||||
|   Ideally this requires a separate test program that can be run |   Ideally this requires a separate test program that can be run | ||||||
|   at initdb time or optionally later.  Consider O_SYNC when |   at initdb time or optionally later.  Consider O_SYNC when | ||||||
|   O_DIRECT exists. |   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 | * Add program to test if fsync has a delay compared to non-fsync | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -1129,6 +1051,7 @@ Cache Usage | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| Vacuum | Vacuum | ||||||
| ====== | ====== | ||||||
|  |  | ||||||
| @@ -1141,13 +1064,6 @@ Vacuum | |||||||
|   http://archives.postgresql.org/pgsql-hackers/2007-03/msg00024.php |   http://archives.postgresql.org/pgsql-hackers/2007-03/msg00024.php | ||||||
|   http://archives.postgresql.org/pgsql-performance/2007-05/msg00296.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 | * Auto-fill the free space map by scanning the buffer cache or by | ||||||
|   checking pages written by the background writer |   checking pages written by the background writer | ||||||
|  |  | ||||||
| @@ -1176,20 +1092,10 @@ Vacuum | |||||||
|  |  | ||||||
|   http://archives.postgresql.org/pgsql-patches/2007-03/msg00358.php |   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 | * Auto-vacuum | ||||||
|  |  | ||||||
| 	o Use free-space map information to guide refilling |  | ||||||
| 	o %Issue log message to suggest VACUUM FULL if a table is nearly | 	o %Issue log message to suggest VACUUM FULL if a table is nearly | ||||||
| 	  empty? | 	  empty? | ||||||
| 	o Consider logging activity either to the logs or a system view |  | ||||||
| 	o Improve control of auto-vacuum | 	o Improve control of auto-vacuum | ||||||
|  |  | ||||||
| 	  http://archives.postgresql.org/pgsql-hackers/2006-12/msg00876.php | 	  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 | 	o Prevent long-lived temporary tables from causing frozen-xid | ||||||
| 	  advancement starvation | 	  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 | 	  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 |   Solaris) might benefit from threading.  Also explore the idea of | ||||||
|   a single session using multiple threads to execute a statement faster. |   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 | Write-Ahead Log | ||||||
| =============== | =============== | ||||||
| @@ -1383,10 +1285,6 @@ Miscellaneous Performance | |||||||
|  |  | ||||||
|   http://archives.postgresql.org/pgsql-general/2007-02/msg00493.php |   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 | * Experiment with multi-threaded backend better resource utilization | ||||||
|  |  | ||||||
|   This would allow a single query to make use of multiple CPU's or |   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 | * Add optional CRC checksum to heap and index pages | ||||||
| * Improve documentation to build only interfaces (Marc) | * Improve documentation to build only interfaces (Marc) | ||||||
| * Remove or relicense modules that are not under the BSD license, if possible | * 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 | * 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 | * Allow cross-compiling by generating the zic database on the target system | ||||||
| * Improve NLS maintenance of libpgport messages linked onto applications | * 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 | * Clean up casting in /contrib/isn | ||||||
|  |  | ||||||
|   http://archives.postgresql.org/pgsql-hackers/2006-11/msg00245.php |   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 | * Use UTF8 encoding for NLS messages so all server encodings can | ||||||
|   read them properly |   read them properly | ||||||
| * Update Bonjour to work with newer cross-platform SDK | * 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-hackers/2006-09/msg02238.php | ||||||
|   http://archives.postgresql.org/pgsql-patches/2006-10/msg00048.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 detoasting keys before sorting | ||||||
| * Consider GnuTLS if OpenSSL license becomes a problem | * Consider GnuTLS if OpenSSL license becomes a problem | ||||||
|  |  | ||||||
|   http://archives.postgresql.org/pgsql-patches/2006-05/msg00040.php |   http://archives.postgresql.org/pgsql-patches/2006-05/msg00040.php | ||||||
|   http://archives.postgresql.org/pgsql-hackers/2006-12/msg01213.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 | * Consider changing documentation format from SGML to XML | ||||||
|  |  | ||||||
|   http://archives.postgresql.org/pgsql-docs/2006-12/msg00152.php |   http://archives.postgresql.org/pgsql-docs/2006-12/msg00152.php | ||||||
| @@ -1474,8 +1356,6 @@ Source Code | |||||||
| 	  extra newline | 	  extra newline | ||||||
| 	o Allow psql to use readline once non-US code pages work with | 	o Allow psql to use readline once non-US code pages work with | ||||||
| 	  backslashes | 	  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 Fix problem with shared memory on the Win32 Terminal Server | ||||||
| 	o Improve signal handling | 	o Improve signal handling | ||||||
|  |  | ||||||
| @@ -1502,17 +1382,15 @@ Exotic Features | |||||||
|   modification. |   modification. | ||||||
|  |  | ||||||
| * Allow plug-in modules to emulate features from other databases | * Allow plug-in modules to emulate features from other databases | ||||||
| * Allow statements across databases or servers with transaction | * Add Oracle-style packages  (Pavel) | ||||||
|   semantics |  | ||||||
|  |  | ||||||
|   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 | 	  http://archives.postgresql.org/pgsql-hackers/2006-08/msg00384.php | ||||||
|  |  | ||||||
| 	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 |  | ||||||
|  |  | ||||||
| * Consider allowing control of upper/lower case folding of unquoted | * Consider allowing control of upper/lower case folding of unquoted | ||||||
|   identifiers |   identifiers | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ | |||||||
| <body bgcolor="#FFFFFF" text="#000000" link="#FF0000" vlink="#A00000" alink="#0000FF"> | <body bgcolor="#FFFFFF" text="#000000" link="#FF0000" vlink="#A00000" alink="#0000FF"> | ||||||
| <h1><a name="section_1">PostgreSQL TODO List</a></h1> | <h1><a name="section_1">PostgreSQL TODO List</a></h1> | ||||||
| <p>Current maintainer:     Bruce Momjian (<a href="mailto:bruce@momjian.us">bruce@momjian.us</a>)<br/> | <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> | ||||||
| <p>The most recent version of this document can be viewed at<br/> | <p>The most recent version of this document can be viewed at<br/> | ||||||
| <a href="http://www.postgresql.org/docs/faqs.TODO.html">http://www.postgresql.org/docs/faqs.TODO.html</a>. | <a href="http://www.postgresql.org/docs/faqs.TODO.html">http://www.postgresql.org/docs/faqs.TODO.html</a>. | ||||||
| @@ -26,13 +26,7 @@ first.  There is also a developer's wiki at<br/> | |||||||
| <h1><a name="section_2">Administration</a></h1> | <h1><a name="section_2">Administration</a></h1> | ||||||
|  |  | ||||||
| <ul> | <ul> | ||||||
|   <li>Allow major upgrades without dump/reload, perhaps using pg_upgrade |   <li>Allow administrators to safely terminate individual sessions either | ||||||
|   [<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 |  | ||||||
|   via an SQL function or SIGTERM |   via an SQL function or SIGTERM | ||||||
| <p>  Lock table corruption following SIGTERM of an individual backend | <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 |   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. |   requires additional testing rather than of writing any new code. | ||||||
| </p> | </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>  <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> | </p> | ||||||
|   </li><li>Set proper permissions on non-system schemas during db creation |   </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 | <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 |   from the template database, it is not clear that setting schemas to the db | ||||||
|   owner is correct. |   owner is correct. | ||||||
| </p> | </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>Add function to report the time of the most recent server reload | ||||||
|   </li><li>Allow statistics collector information to be pulled from the collector |   </li><li>Allow statistics collector information to be pulled from the collector | ||||||
|   process directly, rather than requiring the collector to write a |   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> | </p> | ||||||
|   </li><li>Simplify ability to create partitioned tables |   </li><li>Simplify ability to create partitioned tables | ||||||
| <p>  This would allow creation of partitioned tables without requiring | <p>  This would allow creation of partitioned tables without requiring | ||||||
|   creation of rules for INSERT/UPDATE/DELETE, and constraints for |   creation of triggers or rules for INSERT/UPDATE/DELETE, and constraints | ||||||
|   rapid partition selection.  Options could include range and hash |   for rapid partition selection.  Options could include range and hash | ||||||
|   partition selection. |   partition selection. | ||||||
| </p> | </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> | <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 |   </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>  <a href="http://archives.postgresql.org/pgsql-hackers/2007-12/msg00924.php">http://archives.postgresql.org/pgsql-hackers/2007-12/msg00924.php</a> | ||||||
| </p> | </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 |   </li><li>Configuration files | ||||||
|   <ul> |   <ul> | ||||||
|     <li>Allow pg_hba.conf to specify host names along with IP addresses |     <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>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 |     </li><li>Issue a warning if a change-on-restart-only postgresql.conf value | ||||||
|           is modified  and the server config files are reloaded |           is modified  and the server config files are reloaded | ||||||
|     </li><li>Mark change-on-restart-only values in postgresql.conf |  | ||||||
|   </li></ul> |   </li></ul> | ||||||
|   </li><li>Tablespaces |   </li><li>Tablespaces | ||||||
|   <ul> |   <ul> | ||||||
|     <li>Allow a database in tablespace t1 with tables created in |     <li>Allow a database in tablespace t1 with tables created in | ||||||
|           tablespace t2 to be used as a template for a new database created |           tablespace t2 to be used as a template for a new database created | ||||||
|           with default tablespace t2 |           with default tablespace t2 | ||||||
| <p>          All objects in the default database tablespace must have default | <p>          Currently all objects in the default database tablespace must | ||||||
|           tablespace specifications. This is because new databases are |           have default tablespace specifications. This is because new | ||||||
|           created by copying directories. If you mix default tablespace |           databases are created by copying directories. If you mix default | ||||||
|           tables and tablespace-specified tables in the same directory, |           tablespace tables and tablespace-specified tables in the same | ||||||
|           creating a new database from such a mixed directory would create a |           directory, creating a new database from such a mixed directory | ||||||
|           new database with tables that had incorrect explicit tablespaces. |           would create a new database with tables that had incorrect | ||||||
|           To fix this would require modifying pg_class in the newly copied |           explicit tablespaces.  To fix this would require modifying | ||||||
|           database, which we don't currently do. |           pg_class in the newly copied database, which we don't currently | ||||||
|  |           do. | ||||||
| </p> | </p> | ||||||
|     </li><li>Allow reporting of which objects are in which tablespaces |     </li><li>Allow reporting of which objects are in which tablespaces | ||||||
| <p>          This item is difficult because a tablespace can contain objects | <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 |     <li>Allow a warm standby system to also allow read-only statements | ||||||
|             [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?pitr">pitr</a>] |             [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?pitr">pitr</a>] | ||||||
| <p>            This is useful for checking PITR recovery. | <p>            This is useful for checking PITR recovery. | ||||||
| </p> |             <a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php</a> | ||||||
| <p>            <a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php</a> |  | ||||||
| </p> | </p> | ||||||
|     </li><li>%Create dump tool for write-ahead logs for use in determining |     </li><li>%Create dump tool for write-ahead logs for use in determining | ||||||
|             transaction id for point-in-time recovery |             transaction id for point-in-time recovery | ||||||
|     </li><li>Allow the PITR process to be debugged and data examined |     </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 |             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>            <a href="http://archives.postgresql.org/pgsql-hackers/2006-12/msg00497.php">http://archives.postgresql.org/pgsql-hackers/2006-12/msg00497.php</a> | ||||||
| </p> | </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> |   <a href="http://archives.postgresql.org/pgsql-patches/2007-02/msg00505.php">http://archives.postgresql.org/pgsql-patches/2007-02/msg00505.php</a> | ||||||
| </p> | </p> | ||||||
|   </li><li>Fix data types where equality comparison isn't intuitive, e.g. box |   </li><li>Fix data types where equality comparison isn't intuitive, e.g. box | ||||||
|   </li><li>Allow user-defined types to specify a type modifier at table creation |  | ||||||
|   time |  | ||||||
|   </li><li>Add support for public SYNONYMs |   </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>  <a href="http://archives.postgresql.org/pgsql-hackers/2006-03/msg00519.php">http://archives.postgresql.org/pgsql-hackers/2006-03/msg00519.php</a> | ||||||
| </p> | </p> | ||||||
| @@ -184,9 +167,6 @@ first.  There is also a developer's wiki at<br/> | |||||||
| </p> | </p> | ||||||
|   </li><li>Consider placing all sequences in a single table, or create a system |   </li><li>Consider placing all sequences in a single table, or create a system | ||||||
|   view |   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 |   </li><li>Dates and Times | ||||||
|   <ul> |   <ul> | ||||||
|     <li>Allow infinite dates and intervals just like infinite timestamps |     <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 |                   range of units supported, e.g. PostgreSQL supports '1 year 1 | ||||||
|                   hour', while the SQL standard does not. |                   hour', while the SQL standard does not. | ||||||
| </p> | </p> | ||||||
|   </li><li>Add support for year-month syntax, INTERVAL '50-6' YEAR TO MONTH |   </li><li>Add support for year-month syntax, INTERVAL '50-6' YEAR | ||||||
|   </li><li>Interpret INTERVAL '1 year' MONTH as CAST (INTERVAL '1 year' AS |                   TO MONTH | ||||||
|                   INTERVAL MONTH), and this should return '12 months' |   </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. |   </li><li>Round or truncate values to the requested precision, e.g. | ||||||
|                   INTERVAL '11 months' AS YEAR should return one or zero |                   INTERVAL '11 months' AS YEAR should return one or zero | ||||||
|   </li><li>Support precision, CREATE TABLE foo (a INTERVAL MONTH(3)) |   </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> | </p> | ||||||
|       </li><li>MONEY dumps in a locale-specific format making it difficult to |       </li><li>MONEY dumps in a locale-specific format making it difficult to | ||||||
|           restore to a system with a different locale |           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> |   </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() |   </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>  <a href="http://archives.postgresql.org/pgsql-hackers/2005-12/msg00948.php">http://archives.postgresql.org/pgsql-hackers/2005-12/msg00948.php</a> | ||||||
| </p> | </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 substring/replace() to get/set bit values | ||||||
|   </li><li>Allow to_char() on interval values to accumulate the highest unit |   </li><li>Allow to_char() on interval values to accumulate the highest unit | ||||||
|   requested |   requested | ||||||
| @@ -383,10 +363,6 @@ first.  There is also a developer's wiki at<br/> | |||||||
|   defaults to the server encoding. |   defaults to the server encoding. | ||||||
| </p> | </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>  <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> | </p> | ||||||
| </li></ul> | </li></ul> | ||||||
| <h1><a name="section_6">Views / Rules</a></h1> | <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 |   manually or automatically when statistics for execute parameters | ||||||
|   differ dramatically from those used during planning. |   differ dramatically from those used during planning. | ||||||
| </p> | </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>  <a href="http://archives.postgresql.org/pgsql-hackers/2006-11/msg00092.php">http://archives.postgresql.org/pgsql-hackers/2006-11/msg00092.php</a> | ||||||
| </p> | </p> | ||||||
|   </li><li>Allow LISTEN/NOTIFY to store info in memory rather than tables? |   </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 |   constraint_exclusion | ||||||
|   </li><li>Allow EXPLAIN output to be more easily processed by scripts, perhaps XML |   </li><li>Allow EXPLAIN output to be more easily processed by scripts, perhaps XML | ||||||
|   </li><li>Enable standard_conforming_strings |   </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'' | <p>  When this is done, backslash-quote should be prohibited in non-E'' | ||||||
|   strings because of possible confusion over how such strings treat |   strings because of possible confusion over how such strings treat | ||||||
|   backslashes.  Basically, '' is always safe for a literal single |   backslashes.  Basically, '' is always safe for a literal single | ||||||
| @@ -474,7 +450,7 @@ first.  There is also a developer's wiki at<br/> | |||||||
| </p> | </p> | ||||||
|   </li><li>Simplify dropping roles that have objects in several databases |   </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 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 |   to allow a higher range of values | ||||||
|   </li><li>Add SQL99 WITH clause to SELECT |   </li><li>Add SQL99 WITH clause to SELECT | ||||||
|   </li><li>Add SQL:2003 WITH RECURSIVE (hierarchical) queries 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> |   <ul> | ||||||
|     <li>Allow CREATE TABLE AS to determine column lengths for complex |     <li>Allow CREATE TABLE AS to determine column lengths for complex | ||||||
|           expressions like SELECT col1 || col2 |           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 |     </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>          <a href="http://archives.postgresql.org/pgsql-patches/2007-04/msg00149.php">http://archives.postgresql.org/pgsql-patches/2007-04/msg00149.php</a> | ||||||
| </p> | </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 |           be removed or have its heap and index files truncated.  One | ||||||
|           issue is that no other backend should be able to add to |           issue is that no other backend should be able to add to | ||||||
|           the table at the same time, which is something that is |           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> | </p> | ||||||
|   </li></ul> |   </li></ul> | ||||||
|   </li><li>GRANT/REVOKE |   </li><li>GRANT/REVOKE | ||||||
| @@ -619,16 +591,12 @@ first.  There is also a developer's wiki at<br/> | |||||||
|   <ul> |   <ul> | ||||||
|     <li>Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM |     <li>Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM | ||||||
|           ANALYZE, and CLUSTER |           ANALYZE, and CLUSTER | ||||||
|     </li><li>Add SET PATH for schemas? |  | ||||||
| <p>          This is basically the same as SET search_path. |  | ||||||
| </p> |  | ||||||
|   </li></ul> |   </li></ul> | ||||||
|   </li><li>Referential Integrity |   </li><li>Referential Integrity | ||||||
|   <ul> |   <ul> | ||||||
|     <li>Add MATCH PARTIAL referential integrity |     <li>Add MATCH PARTIAL referential integrity | ||||||
|     </li><li>Change foreign key constraint for array -> element to mean element |     </li><li>Change foreign key constraint for array -> element to mean element | ||||||
|           in array? |           in array? | ||||||
|     </li><li>Enforce referential integrity for system tables |  | ||||||
|     </li><li>Fix problem when cascading referential triggers make changes on |     </li><li>Fix problem when cascading referential triggers make changes on | ||||||
|           cascaded tables, seeing the tables in an intermediate state |           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> | <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> | </p> | ||||||
|       </li><li>Allow function parameters to be passed by name, |       </li><li>Allow function parameters to be passed by name, | ||||||
|                   get_employee_salary(12345 AS emp_id, 2001 AS tax_year) |                   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 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 |       </li><li>Allow listing of record column names, and access to | ||||||
|                   record columns via variables, e.g. columns := r.(*), |                   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-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> |                   <a href="http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php">http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php</a> | ||||||
| </p> | </p> | ||||||
|       </li><li>Add single-step debugging of functions |  | ||||||
|       </li><li>Add support for SCROLL cursors |       </li><li>Add support for SCROLL cursors | ||||||
|       </li><li>Add support for WITH HOLD 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, |       </li><li>Allow row and record variables to be set to NULL constants, | ||||||
|                   and allow NULL tests on such variables |                   and allow NULL tests on such variables | ||||||
| <p>                  Because a row is not scalar, do not allow assignment | <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 |   allow pg_ctl to read and understand postgresql.conf to find the | ||||||
|   data_directory value. |   data_directory value. | ||||||
| </p> | </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 |   </li><li>psql | ||||||
|   <ul> |   <ul> | ||||||
|     <li>Have psql show current values for a sequence |     <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 |           supported session variables.  This query causes problems | ||||||
|           because setting the transaction isolation level must be the |           because setting the transaction isolation level must be the | ||||||
|           first statement of a transaction. |           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> | </p> | ||||||
|     </li><li>Add a \set variable to control whether \s displays line numbers |     </li><li>Add a \set variable to control whether \s displays line numbers | ||||||
| <p>          Another option is to add \# which lists line numbers, and | <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 |     </li><li>%Add full object name to the tag field.  eg. for operators we need | ||||||
|           '=(integer, integer)', instead of just '='. |           '=(integer, integer)', instead of just '='. | ||||||
|     </li><li>Add pg_dumpall custom format dumps? |     </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 |     </li><li>Allow selection of individual object(s) of all types, not just | ||||||
|           tables |           tables | ||||||
|     </li><li>In a selective dump, allow dumping of an object and all its |     </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 |           applied to the loaded database, even if the database has a | ||||||
|           different name.  This will require new backend syntax, perhaps |           different name.  This will require new backend syntax, perhaps | ||||||
|           COMMENT ON CURRENT DATABASE. |           COMMENT ON CURRENT DATABASE. | ||||||
|  |     </li><li>Remove unnecessary function pointer abstractions in pg_dump source | ||||||
|  |           code | ||||||
|   </li></ul> |   </li></ul> | ||||||
|   </li><li>ecpg |   </li><li>ecpg | ||||||
|   <ul> |   <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. |           held on the server waiting for them to be requested by libpq. | ||||||
|           One complexity is that a statement like SELECT 1/col could error |           One complexity is that a statement like SELECT 1/col could error | ||||||
|           out mid-way through the result set. |           out mid-way through the result set. | ||||||
|     <li>Fix SSL retry to avoid useless repeated connection attempts and | </p> | ||||||
|           ensuing misleading error messages |  | ||||||
|     </li><li>Consider disallowing multiple queries in PQexec() as an |     </li><li>Consider disallowing multiple queries in PQexec() as an | ||||||
|           additional barrier to SQL injection attacks |           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> | <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>          <a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg01803.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg01803.php</a> | ||||||
| </p> | </p> | ||||||
|   </li></ul> |   </li></ul> | ||||||
| </p></ul> | </li></ul> | ||||||
| <h1><a name="section_9">Triggers</a></h1> | <h1><a name="section_9">Triggers</a></h1> | ||||||
|  |  | ||||||
| <ul> | <ul> | ||||||
| @@ -884,8 +825,6 @@ first.  There is also a developer's wiki at<br/> | |||||||
| </p> | </p> | ||||||
|   </li><li>Consider compressing indexes by storing key values duplicated in |   </li><li>Consider compressing indexes by storing key values duplicated in | ||||||
|   several rows as a single index entry |   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 |   </li><li>Add REINDEX CONCURRENTLY, like CREATE INDEX CONCURRENTLY | ||||||
| <p>  This is difficult because you must upgrade to an exclusive table lock | <p>  This is difficult because you must upgrade to an exclusive table lock | ||||||
|   to replace the existing index file.  CREATE INDEX CONCURRENTLY does not |   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> | <h1><a name="section_11">Fsync</a></h1> | ||||||
|  |  | ||||||
| <ul> | <ul> | ||||||
|   <li>Improve commit_delay handling to reduce fsync() |   <li>Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options | ||||||
|   </li><li>Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options |  | ||||||
| <p>  Ideally this requires a separate test program that can be run | <p>  Ideally this requires a separate test program that can be run | ||||||
|   at initdb time or optionally later.  Consider O_SYNC when |   at initdb time or optionally later.  Consider O_SYNC when | ||||||
|   O_DIRECT exists. |   O_DIRECT exists. | ||||||
| </p> | </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><li>Add program to test if fsync has a delay compared to non-fsync | ||||||
| </li></ul> | </li></ul> | ||||||
| <h1><a name="section_12">Cache Usage</a></h1> | <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> | ||||||
| <p>  <a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg00024.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg00024.php</a> | <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> |   <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> | </p> | ||||||
|   </li><li>Auto-fill the free space map by scanning the buffer cache or by |   </li><li>Auto-fill the free space map by scanning the buffer cache or by | ||||||
|   checking pages written by the background writer |   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 |   </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>  <a href="http://archives.postgresql.org/pgsql-patches/2007-03/msg00358.php">http://archives.postgresql.org/pgsql-patches/2007-03/msg00358.php</a> | ||||||
| </p> | </p> | ||||||
|   </li><li>Prevent long-lived temporary tables from causing frozen-xid advancement |   </li><li>Auto-vacuum | ||||||
|    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 |  | ||||||
|   <ul> |   <ul> | ||||||
|     <li>Use free-space map information to guide refilling |     <li>%Issue log message to suggest VACUUM FULL if a table is nearly | ||||||
|     </li><li>%Issue log message to suggest VACUUM FULL if a table is nearly |  | ||||||
|           empty? |           empty? | ||||||
|     </li><li>Consider logging activity either to the logs or a system view |  | ||||||
|     </li><li>Improve control of auto-vacuum |     </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>          <a href="http://archives.postgresql.org/pgsql-hackers/2006-12/msg00876.php">http://archives.postgresql.org/pgsql-hackers/2006-12/msg00876.php</a> | ||||||
| </p> | </p> | ||||||
|     </li><li>Prevent long-lived temporary tables from causing frozen-xid |     </li><li>Prevent long-lived temporary tables from causing frozen-xid | ||||||
|           advancement starvation |           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> | </p> | ||||||
|   </li></ul> |   </li></ul> | ||||||
| </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, |   database startup overhead, but a few operating systems (Win32, | ||||||
|   Solaris) might benefit from threading.  Also explore the idea of |   Solaris) might benefit from threading.  Also explore the idea of | ||||||
|   a single session using multiple threads to execute a statement faster. |   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> | </p> | ||||||
| </li></ul> | </li></ul> | ||||||
| <h1><a name="section_16">Write-Ahead Log</a></h1> | <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. |   waits possible, research shows that this is not a huge problem. | ||||||
| </p> | </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>  <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> | </p> | ||||||
|   </li><li>Experiment with multi-threaded backend better resource utilization |   </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 | <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>Add optional CRC checksum to heap and index pages | ||||||
|   </li><li>Improve documentation to build only interfaces (Marc) |   </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 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>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>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>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 |   </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>  <a href="http://archives.postgresql.org/pgsql-hackers/2006-11/msg00245.php">http://archives.postgresql.org/pgsql-hackers/2006-11/msg00245.php</a> | ||||||
| </p> | </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 |   </li><li>Use UTF8 encoding for NLS messages so all server encodings can | ||||||
|   read them properly |   read them properly | ||||||
|   </li><li>Update Bonjour to work with newer cross-platform SDK |   </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> | <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> |   <a href="http://archives.postgresql.org/pgsql-patches/2006-10/msg00048.php">http://archives.postgresql.org/pgsql-patches/2006-10/msg00048.php</a> | ||||||
| </p> | </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 detoasting keys before sorting | ||||||
|   </li><li>Consider GnuTLS if OpenSSL license becomes a problem |   </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> | <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> |   <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> | </p> | ||||||
|   </li><li>Consider changing documentation format from SGML to XML |   </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> | <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 |           extra newline | ||||||
|     </li><li>Allow psql to use readline once non-US code pages work with |     </li><li>Allow psql to use readline once non-US code pages work with | ||||||
|           backslashes |           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>Fix problem with shared memory on the Win32 Terminal Server | ||||||
|     </li><li>Improve signal handling |     </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> | <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. |   modification. | ||||||
| </p> | </p> | ||||||
|   </li><li>Allow plug-in modules to emulate features from other databases |   </li><li>Allow plug-in modules to emulate features from other databases | ||||||
|   </li><li>Allow statements across databases or servers with transaction |   </li><li>Add Oracle-style packages  (Pavel) | ||||||
|   semantics | </li></ul> | ||||||
| <p>  This can be done using dblink and two-phase commit. | <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> | </p> | ||||||
|   </li><li>Add the features of packages | <p>          <a href="http://archives.postgresql.org/pgsql-hackers/2006-08/msg00384.php">http://archives.postgresql.org/pgsql-hackers/2006-08/msg00384.php</a> | ||||||
|   <ul> | </p> | ||||||
|     <li>Make private objects accessible only to objects in the same schema | <ul> | ||||||
|     </li><li>Allow current_schema.objname to access current schema objects |   <li>Consider allowing control of upper/lower case folding of unquoted | ||||||
|     </li><li>Add session variables |  | ||||||
|     </li><li>Allow nested schemas |  | ||||||
|   </li></ul> |  | ||||||
|   </li><li>Consider allowing control of upper/lower case folding of unquoted |  | ||||||
|   identifiers |   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> | <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> |   <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 |   to run in the same process address space as the client application | ||||||
|   would add too much complexity and failure cases.</p> |   would add too much complexity and failure cases.</p> | ||||||
| </li></ul> | </li></ul> | ||||||
| </li></ul></li></ul> |  | ||||||
| </body> | </body> | ||||||
| </html> | </html> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user