TODO
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:11k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. TODO list for PostgreSQL
  2. ========================
  3. Last updated: Mon Sep  6 23:55:43 EDT 1999
  4. Current maintainer: Bruce Momjian (maillist@candle.pha.pa.us)
  5. The most recent version of this document can be viewed at
  6. the PostgreSQL web site, http://www.PostgreSQL.org.
  7. A dash(-) marks changes that will appear in the next release.
  8. RELIABILITY
  9. -----------
  10. RESOURCES
  11. * Elog() does not free all its memory(Jan)
  12. * spinlock stuck problem when elog(FATAL) and elog(ERROR) inside bufmgr
  13. * Recover or force failure when disk space is exhausted
  14. PARSER
  15. * Disallow inherited columns with the same name as new columns
  16. * INSERT INTO ... SELECT with AS columns matching result columns problem
  17. * SELECT pg_class FROM pg_class generates strange error
  18. * Alter TABLE ADD COLUMN does not honor DEFAULT, add CONSTRAINT
  19. * Do not allow bpchar column creation without length
  20. * Select a[1] FROM test fails, it needs test.a[1]
  21. * -Array index references without table name cause problems
  22. * Update table SET table.value = 3 fails
  23. * Creating index of TIMESTAMP & RELTIME fails, or rename to DATETIME(Thomas)
  24. * SELECT foo UNION SELECT foo is incorrectly simplified to SELECT foo
  25. * -INSERT ... SELECT ... GROUP BY groups by target columns not source columns
  26. * -CREATE TABLE test (a char(5) DEFAULT text '', b int4) fails on INSERT
  27. * UNION with LIMIT fails
  28. * Unique index on base column not honored on inserts from inherited table
  29.   INSERT INTO inherit_table (unique_index_col) VALUES (dup) should fail
  30. * CREATE TABLE x AS SELECT 1 UNION SELECT 2 fails
  31. * CREATE TABLE test(col char(2) DEFAULT user) fails in length restriction
  32. * SELECT ... UNION ... ORDER BY fails when sort expr not in result list
  33. * Be smarter about promoting types when UNION merges different data types
  34. * SELECT ... UNION ... GROUP BY fails if column types disagree
  35. * redesign INSERT ... SELECT to have two levels of target list
  36. * -select * from pg_class where oid in (0,-1)
  37. * have INTERSECT/EXCEPT prevent duplicates unless ALL is specified
  38. VIEWS
  39. * Views containing aggregates sometimes fail(Jan)
  40. * Views with spaces in view name fail when referenced
  41. MISC
  42. * User who can create databases can modify pg_database table
  43. * Plpgsql does not handle quoted mixed-case identifiers
  44. * Fix btree to give a useful elog when key > 1/2 (page - overhead)
  45. * pg_dump should preserve primary key information
  46. ENHANCEMENTS
  47. ------------
  48. URGENT
  49. * Add referential integrity(Jan?)
  50. * Add OUTER joins, left and right(Thomas, Bruce)
  51. * Allow long tuples by chaining or auto-storing outside db (chaining,large objs)
  52. * Eliminate limits on query length
  53. * Fix memory leak for expressions?, aggregates?(Tom?)
  54. ADMIN
  55. * Better interface for adding to pg_group
  56. * More access control over who can create tables and access the database
  57. * Add syslog functionality
  58. * Allow elog() to return error codes, not just messages
  59. * Allow international error message support and add error codes
  60. * Generate postmaster pid file and remove flock/fcntl lock code
  61. * Add ability to specifiy location of lock/socket files
  62. TYPES
  63. * Add BIT, BIT VARYING
  64. * Nchar (as distinguished from ordinary varchar),
  65. * Domain capability
  66. * Add STDDEV/VARIANCE() function for standard deviation computation/variance
  67. * Allow compression of large fields or a compressed field type
  68. * Large objects
  69. o Fix large object mapping scheme, own typeid or reltype(Peter)
  70. o Allow large text type to use large objects(Peter)
  71. o Not to stuff everything as files in a single directory, hash dirs
  72. o Allow large object vacuuming
  73. o Tables that start with xinv confused to be large objects
  74. * Allow pg_descriptions when creating types, tables, columns, and functions
  75. * Add IPv6 capability to INET/CIDR types
  76. * Make a separate SERIAL type?
  77. * Store binary-compatible type information in the system
  78. * Allow user to define char1 column
  79. * Add support for & operator
  80. * Allow LOCALE on a per-column basis, default to ASCII
  81. * Allow array on int8[]
  82. * Remove Money type, add money formatting for decimal type
  83. * Declare typein/out functions in pg_proc with a special "C string" data type
  84. * Add non-large-object binary field
  85. * Add index on NUMERIC/DECIMAL type
  86. * Make Absolutetime/Relativetime int4 because time_t can be int8 on some ports
  87. VIEWS
  88. * Allow DISTINCT on views
  89. * Allow views of aggregate columns
  90. * Allow views with subselects
  91. INDEXES
  92. * Allow CREATE INDEX zman_index ON test (date_trunc( 'day', zman ) datetime_ops)
  93.   fails index can't store constant parameters
  94. * Allow creation of functional indexes to use default types
  95. * Permissions on indexes - prevent them?
  96. * Allow SQL function indexes
  97. * Add FILLFACTOR to index creation
  98. * Allow indexing of LIKE with localle character sets
  99. * Allow indexing of more than eight columns
  100. COMMANDS
  101. * ALTER TABLE ADD COLUMN to inherited table put column in wrong place
  102. * Add ALTER TABLE DROP/ALTER COLUMN feature
  103. * Allow CLUSTER on all tables at once, and improve CLUSTER
  104. * Generate error on CREATE OPERATOR of ~~, ~ and and ~*
  105. * Add SIMILAR TO to allow character classes, 'pg_[a-c]%'
  106. * Auto-destroy sequence on DROP of table with SERIAL(Ryan)
  107. * Allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison
  108. * Allow INSERT/UPDATE of system-generated oid value for a row
  109. * Allow ESCAPE '' at the end of LIKE for ANSI compliance
  110. * Rewrite the LIKE handling by rewriting the user string with the 
  111.   supplied ESCAPE
  112. * Move LIKE index optimization handling to the optimizer
  113. * Allow RULE recompilation
  114. * Support UNION/INTERSECT/EXCEPT in sub-selects
  115.   
  116. CLIENTS
  117. * Make NULL's come out at the beginning or end depending on the 
  118.   ORDER BY direction
  119. * Allow flag to control COPY input/output of NULLs
  120. * Update reltuples from COPY command
  121. * Allow psql copy to allow delimiters
  122. * Add a function to return the last inserted oid, for use in psql scripts
  123. * Allow psql to print nulls as distinct from ""(?)
  124. * PQrequestCancel() be able to terminate backend waiting for lock
  125. EXOTIC FEATURES
  126. * Add sql3 recursive unions
  127. * Add the concept of dataspaces
  128. * Add replication of distributed databases
  129. * Allow queries across multiple databases
  130. MISC
  131. * Increase identifier length(NAMEDATALEN) if small performance hit
  132. * Allow row re-use without vacuum(Vadim)
  133. * Create a background process for each database that runs while
  134.   database is idle, finding superceeded rows, gathering stats and vacuuming
  135. * Add UNIQUE capability to non-btree indexes
  136. * Certain indexes will not shrink, i.e. oid indexes with many inserts
  137. * Restore unused oid's on backend exit if no one else has gotten oids
  138. * Have UPDATE/DELETE clean out indexes
  139. * Allow WHERE restriction on ctid
  140. * Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
  141. * Allow PQrequestCancel() to terminate when in waiting-for-lock state
  142. * Transaction log, so re-do log can be on a separate disk by
  143.   with after-row images(Vadim)
  144. * Populate backend status area and write program to dump status data
  145. * Make oid use unsigned int more reliably, pg_atoi()
  146. * Allow subqueries in target list
  147. * Put sort files, large objects in their on directory
  148. * Do autocommit so always in a transaction block
  149. * Show location of syntax error in query
  150. * Redesign the function call interface to handle NULLs better(Jan)
  151. * Document/trigger/rule so changes to pg_shadow create pg_pwd
  152. * Missing optimizer selectivities for date, r-tree, etc.
  153. * Overhaul mdmgr/smgr to fix double unlinking and double opens, cleanup
  154. * Overhaul bufmgr/lockmgr/transaction manager
  155. * Add PL/Perl(Mark Hollomon)
  156. * Make postgres user have a password by default
  157. * Add configure test to check for C++ need for *.h and namespaces
  158. * Allow BLCKSZ <= 64k, not <= 32k
  159. * redesign UNION structures to have separarate target lists
  160. PERFORMANCE
  161. -----------
  162. FSYNC
  163. * Allow transaction commits with rollback with no-fsync performance
  164. * Prevent fsync in SELECT-only queries
  165. INDEXES
  166. * Use indexes in ORDER BY for restrictive data sets, min(), max()
  167. * Pull requested data directly from indexes, bypassing heap data
  168. * Use index to restrict rows returned by multi-key index when used with
  169.   non-consecutive keys or OR clauses, so fewer heap accesses
  170. * Convert function(constant) into a constant for index use
  171. * Allow LIMIT ability on single-table queries that have no ORDER BY to use
  172.   a matching index
  173. * Improve LIMIT processing by using index to limit rows processed
  174. * Have optimizer take LIMIT into account when considering index scans
  175. * Make index creation use psort code, because it is now faster(Vadim)
  176. * Allow creation of sort temp tables > 1 Gig
  177. * Create more system table indexes for faster cache lookups
  178. * fix indexscan() so it does leak memory by not requiring caller to free
  179. * Improve _bt_binsrch() to handle equal keys better, remove _bt_firsteq()(Tom)
  180. * Allow SELECT * FROM tab WHERE int2col = 4 use int2col index
  181. * Allow optimizer to prefer plans that match ORDER BY
  182. CACHE
  183. * Cache most recent query plan(s?)
  184. * Shared catalog cache, reduce lseek()'s by caching table size in shared area
  185. * elog() flushes cache, try invalidating just entries from current xact,
  186.   perhaps using invalidation cache
  187. MISC
  188. * Allow compression of log and meta data
  189. * Update pg_statistic table to remove operator column
  190. * Allow char() not to use variable-sized header to reduce disk size
  191. * Do async I/O to do better read-ahead of data
  192. * -Fix memory exhaustion when using many OR's
  193. * Get faster regex() code from Henry Spencer <henry@zoo.utoronto.ca>
  194.   when it is available
  195. * Use mmap() rather than SYSV shared memory(?)
  196. * Process const = const parts of OR clause in separate pass
  197. * Make oid use oidin/oidout not int4in/int4out in pg_type.h
  198. * Improve Subplan list handling
  199. * Allow Subplans to use efficient joins(hash, merge) with upper variable
  200. * use fmgr_info()/fmgr_faddr() instead of fmgr() calls in high-traffic
  201.   places, like GROUP BY, UNIQUE, index processing, etc.
  202. * improve dynamic memory allocation by introducing tuple-context memory
  203.   allocation
  204. * fix memory leak in cache code when non-existant table is referenced
  205. * In WHERE tab1.x=3 AND tab1.x=tab2.y, add tab2.y=3
  206. * pass atttypmod through parser in more cases(Bruce)
  207. * remove duplicate type in/out functions for disk and net
  208. SOURCE CODE
  209. -----------
  210. * Add use of 'const' for varibles in source tree
  211. * Fix C optimizer problem where fmgr_ptr calls return different types
  212. * Add needed includes and removed unneede include files(Bruce)
  213. * Make configure --enable-debug add -g on compile line
  214. ---------------------------------------------------------------------------
  215. Developers who have claimed items are:
  216. --------------------------------------
  217. * Billy is Billy G. Allie <Bill.Allie@mug.org>
  218. * Brook is Brook Milligan <brook@trillium.NMSU.Edu>
  219. * Bruce is Bruce Momjian<maillist@candle.pha.pa.us>
  220. * Bryan is Bryan Henderson<bryanh@giraffe.netgate.net>
  221. * D'Arcy is D'Arcy J.M. Cain <darcy@druid.net>
  222. * David is David Hartwig <daveh@insightdist.com>
  223. * Edmund is Edmund Mergl <E.Mergl@bawue.de>
  224. * Goran is Goran Thyni <goran@kyla.kiruna.se>
  225. * Hiroshi is Hiroshi Inoue<Inoue@tpf.co.jp>
  226. * Jan is Jan Wieck <wieck@sapserv.debis.de>
  227.   * Marc is Marc Fournier <scrappy@hub.org>
  228. * Massimo Dal Zotto <dz@cs.unitn.it>
  229. * Michael is Michael Meskes <meskes@postgresql.org>
  230. * Oleg is Oleg Bartunov <oleg@sai.msu.su>
  231. * Peter is Peter T Mount <peter@retep.org.uk>
  232. * Ryan is Ryan Bradetich <rbrad@hpb50023.boi.hp.com>
  233. * Stefan Simkovics <ssimkovi@rainbow.studorg.tuwien.ac.at>
  234. * Tatsuo is Tatsuo Ishii <t-ishii@sra.co.jp>
  235. * Tom is Tom Lane <tgl@sss.pgh.pa.us>
  236. * Thomas is Thomas Lockhart <lockhart@alumni.caltech.edu>
  237. * TomH is Tom I Helbekkmo <tih@Hamartun.Priv.NO>
  238. * Vadim is "Vadim B. Mikheev" <vadim@krs.ru>