]> granicus.if.org Git - postgresql/blob - HISTORY
Update HISTORY for 7.4.
[postgresql] / HISTORY
1
2                                Release Notes
3                                       
4                            7.4 Development Branch
5                                       
6
7 Valid as of 2003-09-28.  Update release.sgml later.
8
9    
10      Release date: 2003-??-??
11      _________________________________________________________________
12    
13                                   Overview
14                                       
15    Major changes in this release:
16    
17    IPv6
18          Full support for IPv6 connections and IPv6 address data types
19
20    SSL
21          Major improvements in SSL performance and security
22
23    Index Growth Prevention
24          Allow free space map to efficiently reused empty index pages,
25          and other free space management improvements.
26
27    Standards Compliance
28          Implement information schema
29          Support for read-only transactions
30          Make cursors comply more closely with the SQL standard
31
32    New Client/Server Communication Protocol
33          New protocol improves connection speed/reliability, and adds 
34          error codes, status information, a binary protocol, error
35          reporting verbosity, and cleaner startup packets.
36
37    Performance
38          IN/NOT IN subqueries now perform as efficiently as joins
39          Improved GROUP BY processing by using hash buckets
40          New multi-key hash join capability
41          ANSI joins are now fully optimized
42          Faster regular expression code
43          Function-inlining for simple SQL functions
44           
45    Holdable Cursors
46          Allow cursors to exist outside transactions
47
48    Threads
49          libpq and ecpg are now fully thread-safe with --enable-thread-safety
50
51    Contrib
52          New version of full text indexing (tsearch2)
53          New autovacuum tool
54          Array handling has been improved and moved into the main server
55
56      _________________________________________________________________
57    
58                           Migration to version 7.4
59                                       
60    A dump/restore using pg_dump is required for those wishing to migrate
61    data from any previous release.
62    
63    Observe the following incompatibilities:
64      * The server-side autocommit setting was removed an reimplemented
65        in client applications and languages.
66      * Error message wording has changed dramatically in this release,
67        and error codes have been added.
68      * ANSI joins may behave differently because they are now fully optimized
69      * A number of server variables have been renamed for clarity
70      * MOVE/FETCH 0 now does nothing; return value of MOVE/FETCH 1/0
71        varies based on the current offset in the cursor
72      * COPY now can process carriage-return/line-feed and carriage-return
73        terminated files.  Literal carriage-returns and line-feeds are no
74        longer accepted as data values;  use \r and \n instead.
75      * Trailing spaces are now trimmed when converting from CHAR(n) to
76        VARCHAR(n)/TEXT
77      * FLOAT(p) now measures 'p' in bits, not digits
78      * Date values now must match the ordering specified by DateStyle
79      * The oidrand(), oidsrand(), and userfntest() functions have been
80        removed.
81
82      _________________________________________________________________
83    
84                                   Changes
85                                       
86 Server Operation
87
88 Allow IPv6 server connections (Nigel Kukard, Johan Jordaan, Bruce, Tom, Kurt
89   Roeckx, Andrew Dunstan)
90 Fix SSL to handle errors cleanly (Nathan Mueller)
91 SSL protocol security and performance improvements (Sean Chittenden)
92 Print lock information when a deadlock is detected (Tom)
93 Update /tmp socket mod. times regularly to avoid their removal (Tom)
94 Enable PAM for MAC OS X (Aaron Hillegass)
95 Make btree indexes fully WAL-safe (Tom)
96 Allow btree index compaction and empty page reuse (Tom)
97 Fix inconsistent index lookups during split of first root page (Tom)
98 Improve free space map allocation logic (Tom)
99 Preserve free space information between postmaster restarts (Tom)
100 Set proper schema permissions in initdb (Peter)
101 Add start time to pg_stat_activity (Neil)
102 New code to detect corrupt disk pages;  erase with zero_damaged_pages (Tom)
103 New client/server protocol: faster, no username length limit, allow
104   clean exit from COPY (Tom)
105 Add transaction status, tableid, columnid to backend protocol (Tom)
106 Add new binary I/O protocol (Tom)
107 Remove autocommit server setting; move to client applications (Tom)
108 New error message wording, error codes, and three levels of error detail (Tom)
109
110      _________________________________________________________________
111
112 Performance
113
114 Add hashing for GROUP BY aggregates (Tom)
115 Allow nested loops to be smarter about multicolumn indexes (Tom)
116 Allow multi-key hash joins (Tom)
117 Improve constant folding (Tom)
118 Add ability to inline simple SQL functions (Tom)
119 Reduce memory usage for queries using complex functions (Tom)
120 Improve GEQO optimizer performance (Tom)
121 Allow IN/NOT IN to be handled via hash tables (Tom)
122 Improve NOT IN (subquery) performance (Tom)
123 Allow most IN subqueries to be processed as joins (Tom)
124 Allow the postmaster to preload libraries using preload_libraries (Joe)
125 Improve optimizer cost computations, particularly for subqueries (Tom)
126 Avoid sort when subquery ORDER BY matches upper query (Tom)
127 Assume WHERE a.x = b.y and b.y = 42 also means a.x = 42 (Tom)
128 Allow hash/merge joins on complex joins (Tom)
129 Allow hash joins for more data types (Tom)
130 Allow join optimization of ANSI joins, disable with join_collapse_limit (Tom)
131 Add from_collapse_limit to control conversion of subqueries to joins (Tom)
132 Use faster regular expression code from TCL (Henry Spencer, Tom)
133 Use bit-mapped relation sets in the optimizer (Tom)
134 Improve backend startup time (Tom)
135 Improve trigger/constraint performance (Stephan)
136 Improve speed of col IN (const, const, const, ...) (Tom)
137 Fix hash indexes which were broken in rare cases (Tom)
138 Improve hash index concurrency and speed (Tom)
139 Align shared buffers on 32-byte boundary for copy speed improvement
140
141      _________________________________________________________________
142
143 Server Configuration
144
145 Rename server parameter server_min_messages to log_min_messages (Bruce)
146 Rename show_*_stats to log_*_stats (Bruce)
147 Rename show_source_port to log_source_port (Bruce)
148 Rename hostname_lookup to log_hostname (Bruce)
149 Add checkpoint_warning to warn of excessive checkpointing (Bruce)
150 New read-only server parameters for localization (Tom)
151 Change debug server log messages to output as DEBUG rather than LOG (Bruce)
152 Prevent server log variables from being turned off by non-super users (Bruce)
153 log_min_messages/client_min_messages now controls debug_* output (Bruce)
154 Add Rendezvous server support (Chris Campbell)
155 Add ability to print only slow statements using log_min_duration_statement
156   (Christopher)
157 Allow pg_hba.conf to accept netmasks in CIDR format (Andrew Dunstan)
158 New is_superuser read-only variable (Tom)
159 New server-side parameter log_error_verbosity to control error detail (Tom)
160 postgres --help-config now dumps server config variables (Aizaz Ahmed)
161 Make default shared_buffers 1000 and max_connections 100, if possible (Tom)
162 Add new columns in pg_settings: context, type, source , min_val, max_val (Joe)
163 New pg_hba.conf 'hostnossl' to prevent SSL connections (Jon Jensen)
164 Remove geqo_random_seed server parameter (Tom)
165
166      _________________________________________________________________
167
168 Queries
169
170 New SQL-standard information schema (Peter)
171 Add read-only transactions (Peter)
172 Add server variable regex_flavor to control regular expression
173   processing (Tom)
174 Print key name and value in foreign-key violation messages (Dmitry Tkach)
175 Allow users to see their own queries in pg_stat_activity (Kevin Brown)
176 Fix subquery aggregates of upper query columns to match SQL spec. (Tom)
177 Add option to prevent auto-addition of tables referenced in query (Nigel J.
178   Andrews)
179 Allow UPDATE ... SET col = DEFAULT (Rod)
180 Allow expressions to be used in LIMIT/OFFSET (Tom)
181 Change EXECUTE INTO to CREATE TABLE AS EXECUTE (Peter)
182
183      _________________________________________________________________
184
185 Object Manipulation
186
187 Make CREATE SEQUENCE grammar more SQL1999 standards compliant (Neil)
188 Add FOR EACH STATEMENT statement-level triggers (Neil)
189 Add DOMAIN CHECK constraints (Rod)
190 Add ALTER DOMAIN .. SET / DROP NOT NULL, SET / DROP DEFAULT, ADD / DROP
191   CONSTRAINT (Rod)
192 Fix several zero-column table bugs (Tom)
193 Have ALTER TABLE ... ADD PRIMARY KEY add NOT NULL constraint (Rod)
194 Add ALTER DOMAIN OWNER (Rod)
195 Add ALTER TABLE ... WITHOUT OIDS (Rod)
196 Add ALTER SEQUENCE to modify min/max/increment/cache/cycle values (Rod)
197 Add ALTER TABLE ... CLUSTER ON (Alvaro Herrera)
198 Improve DOMAIN automatic type casting (Rod, Tom)
199 Allow dollar signs in identifiers, except as first character (Tom)
200 Disallow dollar signs in operator names, so x=$1 works (Tom)
201 Allow SQL200X inheritance syntax LIKE <subtable>, INCLUDING DEFAULTS (Rod)
202 Add WITH GRANT OPTION clause to GRANT, per SQL spec (Peter)
203
204      _________________________________________________________________
205
206 Utility Commands
207
208 Add ON COMMIT PRESERVE ROWS for temp tables (Gavin)
209 Allow cursors outside transactions using WITH HOLD (Neil)
210 Make MOVE/FETCH 0 actually move/fetch 0 (Bruce)
211 Cause FETCH 1 to return the current cursor row, or zero if at
212   beginning/end of cursor, per SQL spec (Bruce)
213 Have MOVE return 0 or 1 depending on cursor position (Bruce)
214 Properly handle SCROLL with cursors, or report an error (Neil)
215 Implement SQL92-compatible FIRST, LAST, ABSOLUTE n, RELATIVE n options
216    for FETCH and MOVE (Tom)
217 Allow EXPLAIN on DECLARE CURSOR (Tom)
218 Allow CLUSTER to use index marked as pre-clustered by default (Alvaro Herrera)
219 Allow CLUSTER to cluster all tables (Alvaro Herrera)
220 Prevent CLUSTER on partial indexes (Tom)
221 Allow \r and \r\n termination for COPY files (Bruce)
222 Disallow literal carriage return as a data value, backslash-carriage-return
223   and \r are still allowed (Bruce)
224 COPY changes (binary, \.)? (Tom)
225 Recover from COPY IN/OUT failure cleanly (Tom)
226 Prevent possible memory leaks in COPY (Tom)
227 Make TRUNCATE transaction-safe (Rod)
228 Multiple pg_dump fixes, including tar format and large objects
229 Allow pg_dump to dump specific schemas (Neil)
230 Allow pg_dump to preserve column storage characteristics (Christopher)
231 Allow pg_dump to preserve CLUSTER characteristics (Christopher)
232 Have pg_dumpall use GRANT/REVOKE to dump database-level permissions (Tom)
233 Allow pg_dumpall to support the -a, -s, -x options of pg_dump (Tom)
234 Prevent pg_dump from lowercasing identifiers specified on the command line (Tom)
235 Allow PREPARE/bind of utility commands like FETCH and EXPLAIN (Tom)
236 Add EXPLAIN EXECUTE (Neil)
237 Allow pg_get_constraintdef() to support UNIQUE, PRIMARY KEY and
238   CHECK constraints (Christopher)
239 Improve VACUUM performance on indexes by reducing WAL traffic (Tom)
240 Allow pg_ctl to better handle non-standard ports (Greg)
241 Functional indexes now support indexes on column expressions (Tom)
242 Syntax errors now reported as 'syntax error' rather than 'parse error' (Tom)
243 Have SHOW TRANSACTION_ISOLATION match input to SET TRANSACTION_ISOLATION (Tom)
244 Have COMMENT ON DATABASE on non-local database generate a warning (Rod)
245 Improve reliability of LISTEN/NOTIFY (Tom)
246 Allow REINDEX to reliably reindex non-shared system catalog indexes (Tom)
247 pg_dump --use-set-session-authorization and --no-reconnect now do nothing,
248   all dumps use SET SESSION AUTHORIZATION
249
250      _________________________________________________________________
251
252 Data Types and Functions
253
254 New extra_float_digits server parameter to control float precision display
255   (Pedro Ferreira, Tom)
256 Allow +1300 as a numeric timezone specifier, for FJST (Tom)
257 Remove rarely used oidrand(), oidsrand(), and userfntest() functions (Neil)
258 Add md5() function to main server, already in /contrib/pgcrypto (Joe)
259 Increase date range of timestamp (John Cochran)
260 Change EXTRACT(EPOCH FROM timestamp) so timestamp without time zone
261  is assumed to be in local time, not GMT (Tom)
262 Trap division by zero in case the operating system doesn't prevent it (Tom)
263 Change the NUMERIC data type internally to base 10000 (Tom)
264 New hostmask() function (Greg Wickham)
265 Fixes for to_char() (Karel)
266 Allow functions that can take any argument data type and return
267   any data type, using ANYELEMENT and ANYARRAY (Joe)
268 Arrays may now be specified as ARRAY[1,2,3], ARRAY[['a','b'],['c','d']],
269   or ARRAY[ARRAY[ARRAY[2]]] (Joe)
270 Allow proper comparisons for arrays (Joe)
271 Allow array concatenation with '||' (Joe)
272 Allow indexes on array columns, and used in ORDER BY and DISTINCT (Joe)
273 Allow WHERE qualification 'expr <oper> ANY/SOME/ALL (array-expr)' (Joe)
274 Allow polymorphic SQL functions (Joe)
275 New array functions array_append(), array_cat(), array_lower(),
276   array_prepend(), array_to_string(), array_upper(), string_to_array() (Joe)
277 Allow user defined aggregates to use polymorphic functions (Joe)
278 Allow polymorphic user defined aggregates  (Joe)
279 Allow assignments to empty arrays (Joe)
280 Allow 60 in seconds fields of timestamp, time, interval input values (Tom)
281 Allow CIDR data type to be cast to text (Tom)
282 Allow the creation of special LIKE indexes for non-C locales (Peter)
283 Disallow invalid timezone names (Tom)
284 Trim trailing spaces when CHAR() data is cast to VARCHAR or TEXT (Tom)
285 Make FLOAT(p) measure the precision p in bits, not decimal digits (Tom)
286 Add IPv6 support to the inet and cidr data types (Michael Graff)
287 Add family() function to report whether address is IPv4 or IPv6 (Michael Graff)
288 Have SHOW DATESTYLE generate output similar to that used by SET DATESTYLE (Tom)
289 Change DATESTYLE to output its value in a more common format (Tom)
290 Make EXTRACT(TIMEZONE) and SET/SHOW TIMEZONE follow the SQL convention
291   for the sign of timezone offsets, ie, positive is east from UTC (Tom)
292 Fix date_trunc('quarter',...) (B?jthe Zolt?n)
293 Make initcap() more compatible with Oracle (Mike Nolan)
294 Allow only DateStyle field order for date values not in ISO format (Greg)
295 Add new DateStyle values MDY, DMY, and YMD, honor US and European for
296   backward compatibility (Tom)
297 'now' will no longer work as a column default, use now() (change required for 
298   prepared statements) (Tom)
299 Assume NaN value to be larger than any other value in MIN()/MAX() (Tom)
300 Prevent interval from suppressing ':00' seconds display
301 New pg_get_triggerdef(prettyprint) and pg_constraint_is_visible() functions
302 Allow time to be specified as '040506' or '0405' (Tom)
303
304      _________________________________________________________________
305
306 Server-side Languages
307
308 Prevent PL/pgSQL crash when RETURN NEXT is used on a zero-row record var. (Tom)
309 Make PL/python's spi_execute interface handle NULLs properly (Andrew Bosma)
310 Allow PL/pgSQL to declare variables of composite types without %ROWTYPE (Tom)
311 Fix PL/python _quote() function to handle big integers (?)
312 Make PL/python an untrusted language, now called plpythonu (Kevin Jacobs, Tom)
313 Allow polymorphic PL/pgSQL functions (Tom, Joe)
314 Improved compiled function caching mechanism in PL/pgSQL with full
315   support for polymorphism (Joe)
316 Add new $0 parameter in PL/pgSQL representing the function's actual
317   return type (Joe)
318 Allow pltcl and plpython use the same trigger on multiple tables (Tom)
319
320      _________________________________________________________________
321
322 Psql
323
324 Add "\pset pager always" to always use pager (Greg)
325 Improve tab completion (Rod, Ross Reedstrom, Ian Barwick)
326 Reorder \? help into groupings (Harald Armin Massa, Bruce)
327 Add schema, cast, and conversion backslash commands (Christopher)
328 \encoding now changes based on client_encoding server variable (Tom)
329 Save edit history into readline history (Ross)
330 Improve \d display (Christopher)
331 Enhance HTML mode to be more standards-compliant (Greg)
332 New '\set AUTOCOMMIT off' capability (Tom)
333 New '\set VERBOSITY' to control error detail (Tom)
334 New  %T prompt string to show transaction status (Tom)
335
336      _________________________________________________________________
337
338 Libpq
339
340 Allow PQcmdTuples() to return row counts for MOVE and FETCH (Neil)
341 Add PQfreemem() for freeing memory on Win32, suggest for NOTIFY (Bruce)
342 Document service capability, and add sample file (Bruce)
343 Make PQsetdbLogin() have the same defaults as PQconnectdb() (Tom)
344 Allow libpq to cleanly fail when result sets are too large (Tom)
345 Improve performance of PGunescapeBytea() (Ben Lamb)
346 Allow thread-safe libpq with --enable-thread-safety (Lee Kindness, Philip Yarra)
347 Allow pqInternalNotice() to accept a format string and args instead of
348   just a preformatted message (Tom, Sean Chittenden)
349 Allow control SSL negotiation with sslmode values "disable", "allow", 
350   "Prefer", and "require" (Jon Jensen)
351 Allow new error codes and levels of text (Tom)
352 Allow access to the underlying table and column of a query result (Tom)
353 Allow access to the current transaction status (Tom)
354 Add ability to pass binary data directly to the backend (Tom)
355 Add PQexecPrepared() and PQsendQueryPrepared() functions which
356   perform Bind/Execute of previously prepared statements (Tom)
357
358      _________________________________________________________________
359
360 JDBC
361
362 Allow setNull on updateable resultsets
363 Allow executeBatch on a prepared statement (Barry)
364 Support SSL connections (Barry)
365 Handle schema names in result sets (Paul Sorenson)
366 Add refcursor support (Nic Ferrier)
367
368      _________________________________________________________________
369
370 Miscellaneous Interfaces
371
372 Prevent possible memory leak or core dump during libpgtcl shutdown (Tom)
373 Add ecpg Informix compatibility (Michael)
374 Add ecpg DECIMAL type that is fixed length, for Informix (Michael)
375 Allow thread-safe ecpg with --enable-thread-safety (Lee Kindness, Bruce)
376 Move python client interface to http://www.pygresql.org (Marc)
377
378      _________________________________________________________________
379
380 Source Code
381
382 Prevent need for separate platform geometry regression result files (Tom)
383 Improved PPC locking primitive (Reinhard Max)
384 Embed LD_LIBRARY_PATH used for build process into binaries (Billy)
385 New palloc0 to allocate and clear memory (Bruce)
386 Fix locking code for s390x CPU (64-bit) (Tom)
387 Allow OpenBSD to use local ident credentials (William Ahern)
388 Make query plan trees read-only to executor (Tom)
389 Add Darwin startup scripts (David Wheeler)
390 Allow libpq to compile with Borland C++ compiler (Lester Godwin, Karl Waclawek)
391 Use our own version of getopt_long() if needed (Peter)
392 Convert administration scripts to C (Peter)
393 Bison >=1.85 is now required for grammar changes
394 Merge documentation into one book (Peter)
395 Add Win32 compatibility functions (Bruce)
396 Allow client interfaces to compile under MinGW/Win32 (Bruce)
397 New ereport() function for error reporting (Tom)
398 Support Intel Linux compiler (Peter)
399 Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil)
400 Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce)
401 Remove configure --enable-recode
402 Generate a compile error if spinlock code is not found (Bruce)
403
404      _________________________________________________________________
405
406 Contrib
407
408 Change dbmirror license to BSD
409 Improve earthdistance (Bruno Wolff III)
410 Portability improvements to pgcrypto (Marko Kreen)
411 Prevent xml crash (John Gray, Michael Richards)
412 Update oracle
413 Update mysql
414 Update cube (Bruno Wolff III)
415 Update earthdistance to use cube (Bruno Wolff III)
416 Update btree_gist (Oleg)
417 New tsearch2 full-text search module (Oleg, Teodor)
418 Add hashed based crosstab function to tablefuncs (Joe)
419 Add serial column to order connectby() siblings in tablefuncs (Nabil Sayegh,Joe)
420 Add named persistent connections to dblink (Shridhar Daithanka)
421 New pg_autovacuum allows automatic VACUUM (Matthew T. O'Connor)
422 Allow pgbench to honor PGHOST, PGPORT, PGUSER env. variables (Tatsuo)
423 Improve intarray (Teodor Sigaev)
424 Improve pgstattuple (Rod)
425 Fix bug in metaphone() in fuzzystrmatch
426 Improve adddepend (Rod)
427 Update spi/timetravel (B?jthe Zolt?n)
428 Fix dbase -s option and improve non-ASCII handling (Thomas Behr,M?rcio Smiderle)
429 Remove array module because features now included by default (Joe)
430
431      _________________________________________________________________
432
433                                Release 7.3.3
434
435      Release date: 2003-05-22
436
437    This has a variety of fixes from 7.3.2.
438      _________________________________________________________________
439
440                          Migration to version 7.3.3
441
442    A dump/restore is *not* required for those running 7.3.*.
443      _________________________________________________________________
444
445                                   Changes
446
447    Repair sometimes-incorrect computation of StartUpID after a crash
448    Avoid slowness with lots of deferred triggers in one transaction (Stephan)
449    Don't lock referenced row when UPDATE doesn't change foreign key's value
450         (Jan)
451    Use -fPIC not -fpic on Sparc (Tom Callaway)
452    Repair lack of schema-awareness in contrib/reindexdb
453    Fix contrib/intarray error for zero-element result array (Teodor)
454    Ensure createuser script will exit on control-C (Oliver)
455    Fix errors when the type of a dropped column has itself been dropped
456    CHECKPOINT does not cause database panic on failure in noncritical steps
457    Accept 60 in seconds fields of timestamp, time, interval input values
458    Issue notice, not error, if TIMESTAMP, TIME, or INTERVAL precision too
459         large
460    Fix abstime-to-time cast function (fix is not applied unless you initdb)
461    Fix pg_proc entry for timestamptz_izone (fix is not applied unless you
462         initdb)
463    Make EXTRACT(EPOCH FROM timestamp without time zone) treat input as
464         local time
465    'now'::timestamptz gave wrong answer if timezone changed earlier in
466         transaction
467    HAVE_INT64_TIMESTAMP code for time with timezone overwrote its input
468    Accept GLOBAL TEMP/TEMPORARY as a synonym for TEMPORARY
469    Avoid improper schema-permissions-check failure in foreign-key triggers
470    Fix bugs in foreign-key triggers for SET DEFAULT action
471    Fix incorrect time-qual check in row fetch for UPDATE and DELETE triggers
472    Foreign-key clauses were parsed but ignored in ALTER TABLE ADD COLUMN
473    Fix createlang script breakage for case where handler function already
474         exists
475    Fix misbehavior on zero-column tables in pg_dump, COPY, ANALYZE, other
476         places
477    Fix misbehavior of func_error() on type names containing '%'
478    Fix misbehavior of replace() on strings containing '%'
479    Regular-expression patterns containing certain multibyte characters failed
480    Account correctly for NULLs in more cases in join size estimation
481    Avoid conflict with system definition of isblank() function or macro
482    Fix failure to convert large code point values in EUC_TW conversions
483         (Tatsuo)
484    Fix error recovery for SSL_read/SSL_write calls
485    Don't do early constant-folding of type coercion expressions
486    Validate page header fields immediately after reading in any page
487    Repair incorrect check for ungrouped variables in unnamed joins
488    Fix buffer overrun in to_ascii (Guido Notari)
489    contrib/ltree fixes (Teodor)
490    Fix core dump in deadlock detection on machines where char is unsigned
491    Avoid running out of buffers in many-way indexscan (bug introduced in 7.3)
492    Fix planner's selectivity estimation functions to handle domains properly
493    Fix dbmirror memory-allocation bug (Steven Singer)
494    Prevent infinite loop in ln(numeric) due to roundoff error.
495    GROUP BY got confused if there were multiple equal GROUP BY items
496    Fix bad plan when inherited UPDATE/DELETE references another inherited
497         table
498    Prevent clustering on incomplete (partial or non-NULL-storing) indexes
499    Service shutdown request at proper time if it arrives while still
500         starting up
501    Fix left-links in temporary indexes (could make backwards scans miss
502         entries)
503    Fix incorrect handling of client_encoding setting in postgresql.conf
504         (Tatsuo)
505    Fix failure to respond to 'pg_ctl stop -m fast' after Async_NotifyHandler
506         runs
507    Fix SPI for case where rule contains multiple statements of the same type
508    Fix problem with checking for wrong type of access permission in rule query
509    Fix problem with EXCEPT in CREATE RULE
510    Prevent problem with dropping temp tables having serial columns
511    Fix replace_vars_with_subplan_refs failure in complex views
512    Fix regexp slowness in single-byte encodings (Tatsuo)
513    Allow qualified type names in CREATE CAST and DROP CAST
514    Accept 'SETOF type[]', which formerly had to be written 'SETOF _type'
515    Fix pg_dump core dump in some cases with procedural languages
516    Force ISO datestyle in pg_dump output, for portability (Oliver)
517    pg_dump failed to handle error return from lo_read (Oleg Drokin)
518    pg_dumpall failed with groups having no members (Nick Eskelinen)
519    pg_dumpall failed to recognize --globals-only switch
520    pg_restore failed to restore blobs if -X disable-triggers is specified
521    Repair intrafunction memory leak in plpgsql
522    pltcl's elog command dumped core if given wrong parameters (Ian Harding)
523    plpython used wrong value of atttypmod (Brad McLean)
524    Fix improper quoting of boolean values in Python interface (D'Arcy)
525    Added addDataType() method to PGConnection interface for JDBC
526    Fixed various problems with updateable ResultSets for JDBC (Shawn Green)
527    Fixed various problems with DatabaseMetaData for JDBC (Kris Jurka,
528         Peter Royal)
529    Fixed problem with parsing table ACLs in JDBC
530    Better error message for character set conversion problems in JDBC
531      _________________________________________________________________
532
533                                Release 7.3.2
534
535      Release date: 2003-02-04
536
537    This has a variety of fixes from 7.3.1.
538      _________________________________________________________________
539
540                          Migration to version 7.3.2
541
542    A dump/restore is *not* required for those running 7.3.*.
543      _________________________________________________________________
544
545                                   Changes
546
547    Restore creation of OID column in CREATE TABLE AS / SELECT INTO
548    Fix pg_dump core dump when dumping views having comments
549    Dump DEFERRABLE/INITIALLY DEFERRED constraints properly
550    Fix UPDATE when child table's column numbering differs from parent
551    Increase default value of max_fsm_relations
552    Fix problem when fetching backwards in a cursor for a single-row query
553    Make backward fetch work properly with cursor on SELECT DISTINCT query
554    Fix problems with loading pg_dump files containing contrib/lo usage
555    Fix problem with all-numeric user names
556    Fix possible memory leak and core dump during disconnect in libpgtcl
557    Make plpython's spi_execute command handle nulls properly (Andrew Bosma)
558    Adjust plpython error reporting so that its regression test passes again
559    Work with bison 1.875
560    Handle mixed-case names properly in plpgsql's %type (Neil)
561    Fix core dump in pltcl when executing a query rewritten by a rule
562    Repair array subscript overruns (per report from Yichen Xie)
563    Reduce MAX_TIME_PRECISION from 13 to 10 in floating-point case
564    Correctly case-fold variable names in per-database and per-user settings
565    Fix coredump in plpgsql's RETURN NEXT when SELECT into record returns
566         no rows
567    Fix outdated use of pg_type.typprtlen in python client interface
568    Correctly handle fractional seconds in timestamps in JDBC driver
569    Improve performance of getImportedKeys() in JDBC
570    Make shared-library symlinks work standardly on HPUX (Giles)
571    Repair inconsistent rounding behavior for timestamp, time, interval
572    SSL negotiation fixes (Nathan Mueller)
573    Make libpq's ~/.pgpass feature work when connecting with PQconnectDB
574    Update my2pg, ora2pg
575    Translation updates
576    Add casts between types lo and oid in contrib/lo
577    fastpath code now checks for privilege to call function
578      _________________________________________________________________
579    
580                                Release 7.3.1
581                                       
582      Release date: 2002-12-18
583      
584    This has a variety of fixes from 7.3.
585      _________________________________________________________________
586    
587                          Migration to version 7.3.1
588                                       
589    A dump/restore is *not* required for those running 7.3. However, it
590    should be noted that the main PostgreSQL interface library, libpq, has
591    a new major version number for this release, which may require
592    recompilation of client code in certain cases.
593      _________________________________________________________________
594    
595                                   Changes
596                                       
597    Fix a core dump of COPY TO when client/server encodings don't match (Tom)
598    Allow pg_dump to work with pre-7.2 servers (Philip)
599    /contrib/adddepend fixes (Tom)
600    Fix problem with deletion of per-user/per-database config settings (Tom)
601    /contrib/vacuumlo fix (Tom)
602    Allow 'password' encryption even when pg_shadow contains MD5 passwords
603     (Bruce)
604    /contrib/dbmirror fix (Steven Singer)
605    Optimizer fixes (Tom)
606    /contrib/tsearch fixes (Teodor Sigaev, Magnus)
607    Allow locale names to be mixed case (Nicolai Tufar)
608    Increment libpq library's major version number (Bruce)
609    pg_hba.conf error reporting fixes (Bruce, Neil)
610    Add SCO Openserver 5.0.4 as a supported platform (Bruce)
611    Prevent EXPLAIN from crashing server (Tom)
612    SSL fixes (Nathan Mueller)
613    Prevent composite column creation via ALTER TABLE (Tom)
614      _________________________________________________________________
615    
616                                 Release 7.3
617                                       
618      Release date: 2002-11-27
619      _________________________________________________________________
620    
621                                   Overview
622                                       
623    Major changes in this release:
624    
625    Schemas
626           Schemas allow users to create objects in separate namespaces,
627           so two people or applications can have tables with the same
628           name. There is also a public schema for shared tables.
629           Table/index creation can be restricted by removing permissions
630           on the public schema.
631           
632    Drop Column
633           PostgreSQL now supports the ALTER TABLE ... DROP COLUMN
634           functionality.
635           
636    Table Functions
637           Functions returning multiple rows and/or multiple columns are
638           now much easier to use than before. You can call such a "table
639           function" in the SELECT FROM clause, treating its output like a
640           table. Also, PL/pgSQL functions can now return sets.
641           
642    Prepared Queries
643           PostgreSQL now supports prepared queries, for improved
644           performance.
645           
646    Dependency Tracking
647           PostgreSQL now records object dependencies, which allows
648           improvements in many areas. "DROP" statements now take either
649           CASCADE or RESTRICT to control whether dependent objects are
650           also dropped.
651           
652    Privileges
653           Functions and procedural languages now have privileges, and
654           functions can be defined to run with the privileges of their
655           creator.
656           
657    Internationalization
658           Both multibyte and locale support are now always enabled.
659           
660    Logging
661           A variety of logging options have been enhanced.
662           
663    Interfaces
664           A large number of interfaces have been moved to
665           http://gborg.postgresql.org where they can be developed and
666           released independently.
667           
668    Functions/Identifiers
669           By default, functions can now take up to 32 parameters, and
670           identifiers can be up to 63 bytes long. Also, OPAQUE is now
671           deprecated: there are specific "pseudo-datatypes" to represent
672           each of the former meanings of OPAQUE in function argument and
673           result types.
674      _________________________________________________________________
675    
676                           Migration to version 7.3
677                                       
678    A dump/restore using pg_dump is required for those wishing to migrate
679    data from any previous release. If your application examines the
680    system catalogs, additional changes will be required due to the
681    introduction of schemas in 7.3; for more information, see:
682    http://www.ca.postgresql.org/docs/momjian/upgrade_tips_7.3.
683    
684    Observe the following incompatibilities:
685    
686      * Pre-6.3 clients are no longer supported.
687      * "pg_hba.conf" now has a column for the user name and additional
688        features. Existing files need to be adjusted.
689      * Several "postgresql.conf" logging parameters have been renamed.
690      * LIMIT #,# has been disabled; use LIMIT # OFFSET #.
691      * "INSERT" statements with column lists must specify a value for
692        each specified column. For example, INSERT INTO tab (col1, col2)
693        VALUES ('val1') is now invalid. It's still allowed to supply fewer
694        columns than expected if the "INSERT" does not have a column list.
695      * serial columns are no longer automatically UNIQUE; thus, an index
696        will not automatically be created.
697      * A "SET" command inside an aborted transaction is now rolled back.
698      * "COPY" no longer considers missing trailing columns to be null.
699        All columns need to be specified. (However, one may achieve a
700        similar effect by specifying a column list in the "COPY" command.)
701      * The data type timestamp is now equivalent to timestamp without
702        time zone, instead of timestamp with time zone.
703      * Pre-7.3 databases loaded into 7.3 will not have the new object
704        dependencies for serial columns, unique constraints, and foreign
705        keys. See the directory "contrib/adddepend/" for a detailed
706        description and a script that will add such dependencies.
707      * An empty string ('') is no longer allowed as the input into an
708        integer field. Formerly, it was silently interpreted as 0.
709      _________________________________________________________________
710    
711                                   Changes
712                                       
713 Server Operation
714
715    Add pg_locks view to show locks (Neil)
716    Security fixes for password negotiation memory allocation (Neil)
717    Remove support for version 0 FE/BE protocol (PostgreSQL 6.2 and
718      earlier) (Tom)
719    Reserve the last few backend slots for superusers, add parameter
720      superuser_reserved_connections to control this (Nigel J. Andrews)
721      _________________________________________________________________
722    
723 Performance
724
725    Improve startup by calling localtime() only once (Tom)
726    Cache system catalog information in flat files for faster startup
727      (Tom)
728    Improve caching of index information (Tom)
729    Optimizer improvements (Tom, Fernando Nasser)
730    Catalog caches now store failed lookups (Tom)
731    Hash function improvements (Neil)
732    Improve performance of query tokenization and network handling (Peter)
733    Speed improvement for large object restore (Mario Weilguni)
734    Mark expired index entries on first lookup, saving later heap fetches
735      (Tom)
736    Avoid excessive NULL bitmap padding (Manfred Koizar)
737    Add BSD-licensed qsort() for Solaris, for performance (Bruce)
738    Reduce per-row overhead by four bytes (Manfred Koizar)
739    Fix GEQO optimizer bug (Neil Conway)
740    Make WITHOUT OID actually save four bytes per row (Manfred Koizar)
741    Add default_statistics_target variable to specify ANALYZE buckets
742      (Neil)
743    Use local buffer cache for temporary tables so no WAL overhead (Tom)
744    Improve free space map performance on large tables (Stephen Marshall,
745      Tom)
746    Improved WAL write concurrency (Tom)
747      _________________________________________________________________
748    
749 Privileges
750
751    Add privileges on functions and procedural languages (Peter)
752    Add OWNER to CREATE DATABASE so superusers can create databases
753      on behalf of unprivileged users.  (Gavin Sherry, Tom)
754    Add new object permission bits EXECUTE and USAGE (Tom)
755    Add SET SESSION AUTHORIZATION DEFAULT and RESET SESSION AUTHORIZATION
756      (Tom)
757    Allow functions to be executed with the privilege of the function
758      owner (Peter)
759      _________________________________________________________________
760    
761 Server Configuration
762
763    Server log messages now tagged with LOG, not DEBUG (Bruce)
764    Add user column to pg_hba.conf (Bruce)
765    Have log_connections output two lines in log file (Tom)
766    Remove debug_level from postgresql.conf, now server_min_messages
767      (Bruce)
768    New ALTER DATABASE/USER ... SET command for per-user/database
769       initialization (Peter)
770    New parameters server_min_messages and client_min_messages to
771      control which messages are sent to the server logs or client
772      applications (Bruce)
773    Allow pg_hba.conf to specify lists of users/databases separated by
774      commas, group names prepended with +, and file names prepended
775      with @ (Bruce)
776    Remove secondary password file capability and pg_password utility
777      (Bruce)
778    Add variable db_user_namespace for database-local user names (Bruce)
779    SSL improvements (Bear Giles)
780    Make encryption of stored passwords the default (Bruce)
781    Allow pg_statistics to be reset by calling pg_stat_reset()
782      (Christopher)
783    Add log_duration parameter (Bruce)
784    Rename debug_print_query to log_statement (Bruce)
785    Rename show_query_stats to show_statement_stats (Bruce)
786    Add param log_min_error_statement to print commands to logs on error
787      (Gavin)
788      _________________________________________________________________
789    
790 Queries
791
792    Make cursors insensitive, meaning their contents do not change (Tom)
793    Disable LIMIT #,# syntax; now only LIMIT # OFFSET # supported (Bruce)
794    Increase identifier length to 63 (Neil, Bruce)
795    UNION fixes for merging >= 3 columns of different lengths (Tom)
796    Add DEFAULT keyword to INSERT, e.g., INSERT ... (..., DEFAULT, ...)
797      (Rod)
798    Allow views to have default values using ALTER COLUMN ... SET DEFAULT
799      (Neil)
800    Fail on INSERTs with column lists that don't supply all column
801      values, e.g., INSERT INTO tab (col1, col2) VALUES ('val1');  (Rod)
802    Fix for join aliases (Tom)
803    Fix for FULL OUTER JOINs (Tom)
804    Improve reporting of invalid identifier and location (Tom, Gavin)
805    Fix OPEN cursor(args) (Tom)
806    Allow 'ctid' to be used in a view and currtid(viewname) (Hiroshi)
807    Fix for CREATE TABLE AS with UNION (Tom)
808    SQL99 syntax improvements (Thomas)
809    Add statement_timeout variable to cancel queries (Bruce)
810    Allow prepared queries with PREPARE/EXECUTE (Neil)
811    Allow FOR UPDATE to appear after LIMIT/OFFSET (Bruce)
812    Add variable autocommit (Tom, David Van Wie)
813      _________________________________________________________________
814    
815 Object Manipulation
816
817    Make equals signs optional in CREATE DATABASE (Gavin Sherry)
818    Make ALTER TABLE OWNER change index ownership too (Neil)
819    New ALTER TABLE tabname ALTER COLUMN colname SET STORAGE controls
820      TOAST storage, compression (John Gray)
821    Add schema support, CREATE/DROP SCHEMA (Tom)
822    Create schema for temporary tables (Tom)
823    Add variable search_path for schema search (Tom)
824    Add ALTER TABLE SET/DROP NOT NULL (Christopher)
825    New CREATE FUNCTION volatility levels (Tom)
826    Make rule names unique only per table (Tom)
827    Add 'ON tablename' clause to DROP RULE and COMMENT ON RULE (Tom)
828    Add ALTER TRIGGER RENAME (Joe)
829    New current_schema() and current_schemas() inquiry functions (Tom)
830    Allow functions to return multiple rows (table functions) (Joe)
831    Make WITH optional in CREATE DATABASE, for consistency (Bruce)
832    Add object dependency tracking (Rod, Tom)
833    Add RESTRICT/CASCADE to DROP commands (Rod)
834    Add ALTER TABLE DROP for non-CHECK CONSTRAINT (Rod)
835    Autodestroy sequence on DROP of table with SERIAL (Rod)
836    Prevent column dropping if column is used by foreign key (Rod)
837    Automatically drop constraints/functions when object is dropped (Rod)
838    Add CREATE/DROP OPERATOR CLASS (Bill Studenmund, Tom)
839    Add ALTER TABLE DROP COLUMN (Christopher, Tom, Hiroshi)
840    Prevent inherited columns from being removed or renamed (Alvaro
841      Herrera)
842    Fix foreign key constraints to not error on intermediate database
843      states (Stephan)
844    Propagate column or table renaming to foreign key constraints
845    Add CREATE OR REPLACE VIEW (Gavin, Neil, Tom)
846    Add CREATE OR REPLACE RULE (Gavin, Neil, Tom)
847    Have rules execute alphabetically, returning more predictable values
848      (Tom)
849    Triggers are now fired in alphabetical order (Tom)
850    Add /contrib/adddepend to handle pre-7.3 object dependencies (Rod)
851    Allow better casting when inserting/updating values (Tom)
852      _________________________________________________________________
853    
854 Utility Commands
855
856    Have COPY TO output embedded carriage returns and newlines as \r and
857      \n (Tom)
858    Allow DELIMITER in COPY FROM to be 8-bit clean (Tatsuo)
859    Make pg_dump use ALTER TABLE ADD PRIMARY KEY, for performance (Neil)
860    Disable brackets in multistatement rules (Bruce)
861    Disable VACUUM from being called inside a function (Bruce)
862    Allow dropdb and other scripts to use identifiers with spaces (Bruce)
863    Restrict database comment changes to the current database
864    Allow comments on operators, independent of the underlying function
865      (Rod)
866    Rollback SET commands in aborted transactions (Tom)
867    EXPLAIN now outputs as a query (Tom)
868    Display condition expressions and sort keys in EXPLAIN (Tom)
869    Add 'SET LOCAL var = value' to set configuration variables for a
870      single transaction (Tom)
871    Allow ANALYZE to run in a transaction (Bruce)
872    Improve COPY syntax using new WITH clauses, keep backward
873      compatibility (Bruce)
874    Fix pg_dump to consistently output tags in non-ASCII dumps (Bruce)
875    Make foreign key constraints clearer in dump file (Rod)
876    Add COMMENT ON CONSTRAINT (Rod)
877    Allow COPY TO/FROM to specify column names (Brent Verner)
878    Dump UNIQUE and PRIMARY KEY constraints as ALTER TABLE (Rod)
879    Have SHOW output a query result (Joe)
880    Generate failure on short COPY lines rather than pad NULLs (Neil)
881    Fix CLUSTER to preserve all table attributes (Alvaro Herrera)
882    New pg_settings table to view/modify GUC settings (Joe)
883    Add smart quoting, portability improvements to pg_dump output (Peter)
884    Dump serial columns out as SERIAL (Tom)
885    Enable large file support, >2G for pg_dump (Peter, Philip Warner,
886      Bruce)
887    Disallow TRUNCATE on tables that are involved in referential
888      constraints (Rod)
889    Have TRUNCATE also auto-truncate the toast table of the relation (Tom)
890    Add clusterdb utility that will auto-cluster an entire database
891      based on previous CLUSTER operations (Alvaro Herrera)
892    Overhaul pg_dumpall (Peter)
893    Allow REINDEX of TOAST tables (Tom)
894    Implemented START TRANSACTION, per SQL99 (Neil)
895    Fix rare index corruption when a page split affects bulk delete (Tom)
896    Fix ALTER TABLE ... ADD COLUMN for inheritance (Alvaro Herrera)
897      _________________________________________________________________
898    
899 Data Types and Functions
900
901    Fix factorial(0) to return 1 (Bruce)
902    Date/time/timezone improvements (Thomas)
903    Fix for array slice extraction (Tom)
904    Fix extract/date_part to report proper microseconds for timestamp
905      (Tatsuo)
906    Allow text_substr() and bytea_substr() to read TOAST values more
907      efficiently (John Gray)
908    Add domain support (Rod)
909    Make WITHOUT TIME ZONE the default for TIMESTAMP and TIME data types
910      (Thomas)
911    Allow alternate storage scheme of 64-bit integers for date/time types
912      using --enable-integer-datetimes in configure (Thomas)
913    Make timezone(timestamptz) return timestamp rather than a string
914      (Thomas)
915    Allow fractional seconds in date/time types for dates prior to 1BC
916      (Thomas)
917    Limit timestamp data types to 6 decimal places of precision (Thomas)
918    Change timezone conversion functions from timetz() to timezone()
919      (Thomas)
920    Add configuration variables datestyle and timezone (Tom)
921    Add OVERLAY(), which allows substitution of a substring in a string
922      (Thomas)
923    Add SIMILAR TO (Thomas, Tom)
924    Add regular expression SUBSTRING(string FROM pat FOR escape) (Thomas)
925    Add LOCALTIME and LOCALTIMESTAMP functions (Thomas)
926    Add named composite types using CREATE TYPE typename AS (column)
927      (Joe)
928    Allow composite type definition in the table alias clause (Joe)
929    Add new API to simplify creation of C language table functions (Joe)
930    Remove ODBC-compatible empty parentheses from calls to SQL99
931      functions for which these parentheses do not match the standard
932      (Thomas)
933    Allow macaddr data type to accept 12 hex digits with no separators
934      (Mike Wyer)
935    Add CREATE/DROP CAST (Peter)
936    Add IS DISTINCT FROM operator (Thomas)
937    Add SQL99 TREAT() function, synonym for CAST() (Thomas)
938    Add pg_backend_pid() to output backend pid (Bruce)
939    Add IS OF / IS NOT OF type predicate (Thomas)
940    Allow bit string constants without fully-specified length (Thomas)
941    Allow conversion between 8-byte integers and bit strings (Thomas)
942    Implement hex literal conversion to bit string literal (Thomas)
943    Allow table functions to appear in the FROM clause (Joe)
944    Increase maximum number of function parameters to 32 (Bruce)
945    No longer automatically create index for SERIAL column (Tom)
946    Add current_database() (Rod)
947    Fix cash_words() to not overflow buffer (Tom)
948    Add functions replace(), split_part(), to_hex() (Joe)
949    Fix LIKE for bytea as a right-hand argument (Joe)
950    Prevent crashes caused by SELECT cash_out(2) (Tom)
951    Fix to_char(1,'FM999.99') to return a period (Karel)
952    Fix trigger/type/language functions returning OPAQUE to return
953      proper type (Tom)
954      _________________________________________________________________
955    
956 Internationalization
957
958    Add additional encodings: Korean (JOHAB), Thai (WIN874), Vietnamese
959      (TCVN), Arabic (WIN1256), Simplified Chinese (GBK), Korean (UHC)
960      (Eiji Tokuya)
961    Enable locale support by default (Peter)
962    Add locale variables (Peter)
963    Escape byes >= 0x7f for multibyte in PQescapeBytea/PQunescapeBytea
964      (Tatsuo)
965    Add locale awareness to regular expression character classes
966    Enable multibyte support by default (Tatso)
967    Add GB18030 multibyte support (Bill Huang)
968    Add CREATE/DROP CONVERSION, allowing loadable encodings (Tatsuo,
969      Kaori)
970    Add pg_conversion table (Tatsuo)
971    Add SQL99 CONVERT() function (Tatsuo)
972    pg_dumpall, pg_controldata, and pg_resetxlog now national-language
973      aware (Peter)
974    New and updated translations
975      _________________________________________________________________
976    
977 Server-side Languages
978
979    Allow recursive SQL function (Peter)
980    Change PL/Tcl build to use configured compiler and Makefile.shlib
981      (Peter)
982    Overhaul the PL/pgSQL FOUND variable to be more Oracle-compatible
983      (Neil, Tom)
984    Allow PL/pgSQL to handle quoted identifiers (Tom)
985    Allow set-returning PL/pgSQL functions (Neil)
986    Make PL/pgSQL schema-aware (Joe)
987    Remove some memory leaks (Nigel J. Andrews, Tom)
988      _________________________________________________________________
989    
990 Psql
991
992    Don't lowercase psql \connect database name for 7.2.0 compatibility
993      (Tom)
994    Add psql \timing to time user queries (Greg Sabino Mullane)
995    Have psql \d show index information (Greg Sabino Mullane)
996    New psql \dD shows domains (Jonathan Eisler)
997    Allow psql to show rules on views (Paul ?)
998    Fix for psql variable substitution (Tom)
999    Allow psql \d to show temporary table structure (Tom)
1000    Allow psql \d to show foreign keys (Rod)
1001    Fix \? to honor \pset pager (Bruce)
1002    Have psql reports its version number on startup (Tom)
1003    Allow \copy to specify column names (Tom)
1004      _________________________________________________________________
1005    
1006 Libpq
1007
1008    Add $HOME/.pgpass to store host/user password combinations (Alvaro
1009      Herrera)
1010    Add PQunescapeBytea() function to libpq (Patrick Welche)
1011    Fix for sending large queries over non-blocking connections
1012      (Bernhard Herzog)
1013    Fix for libpq using timers on Win9X (David Ford)
1014    Allow libpq notify to handle servers with different-length
1015      identifiers (Tom)
1016    Add libpq PQescapeString() and PQescapeBytea() to Win32 (Bruce)
1017    Fix for SSL with non-blocking connections (Jack Bates)
1018    Add libpq connection timeout parameter (Denis A Ustimenko)
1019      _________________________________________________________________
1020    
1021 JDBC
1022
1023    Allow JDBC to compile with JDK 1.4 (Dave)
1024    Add JDBC 3 support (Barry)
1025    Allows JDBC to set loglevel by adding ?loglevel=X to the connection
1026      URL (Barry)
1027    Add Driver.info() message that prints out the version number (Barry)
1028    Add updateable result sets (Raghu Nidagal, Dave)
1029    Add support for callable statements (Paul Bethe)
1030    Add query cancel capability
1031    Add refresh row (Dave)
1032    Fix MD5 encryption handling for multibyte servers (Jun Kawai)
1033    Add support for prepared statements (Barry)
1034      _________________________________________________________________
1035    
1036 Miscellaneous Interfaces
1037
1038    Fixed ECPG bug concerning octal numbers in single quotes (Michael)
1039    Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc,
1040      Bruce)
1041    Improve Python interface (Elliot Lee, Andrew Johnson, Greg Copeland)
1042    Add libpgtcl connection close event (Gerhard Hintermayer)
1043    Move src/interfaces/libpq++ to http://gborg.postgresql.org (Marc,
1044      Bruce)
1045    Move src/interfaces/odbc to http://gborg.postgresql.org (Marc)
1046    Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc,
1047      Bruce)
1048    Move src/interfaces/perl5 to http://gborg.postgresql.org (Marc,
1049      Bruce)
1050    Remove src/bin/pgaccess from main tree, now at
1051      http://www.pgaccess.org (Bruce)
1052    Add pg_on_connection_loss command to libpgtcl (Gerhard Hintermayer,
1053      Tom)
1054      _________________________________________________________________
1055    
1056 Source Code
1057
1058    Fix for parallel make (Peter)
1059    AIX fixes for linking Tcl (Andreas Zeugswetter)
1060    Allow PL/Perl to build under Cygwin (Jason Tishler)
1061    Improve MIPS compiles (Peter, Oliver Elphick)
1062    Require Autoconf version 2.53 (Peter)
1063    Require readline and zlib by default in configure (Peter)
1064    Allow Solaris to use Intimate Shared Memory (ISM), for performance
1065      (Scott Brunza, P.J. Josh Rovero)
1066    Always enable syslog in compile, remove --enable-syslog option
1067      (Tatsuo)
1068    Always enable multibyte in compile, remove --enable-multibyte option
1069      (Tatsuo)
1070    Always enable locale in compile, remove --enable-locale option
1071      (Peter)
1072    Fix for Win9x DLL creation (Magnus Naeslund)
1073    Fix for link() usage by WAL code on Win32, BeOS (Jason Tishler)
1074    Add sys/types.h to c.h, remove from main files (Peter, Bruce)
1075    Fix AIX hang on SMP machines (Tomoyuki Niijima)
1076    AIX SMP hang fix (Tomoyuki Niijima)
1077    Fix pre-1970 date handling on newer glibc libraries (Tom)
1078    Fix PowerPC SMP locking (Tom)
1079    Prevent gcc -ffast-math from being used (Peter, Tom)
1080    Bison >= 1.50 now required for developer builds
1081    Kerberos 5 support now builds with Heimdal (Peter)
1082    Add appendix in the User's Guide which lists SQL features (Thomas)
1083    Improve loadable module linking to use RTLD_NOW (Tom)
1084    New error levels WARNING, INFO, LOG, DEBUG[1-5] (Bruce)
1085    New src/port directory holds replaced libc functions (Peter, Bruce)
1086    New pg_namespace system catalog for schemas (Tom)
1087    Add pg_class.relnamespace for schemas (Tom)
1088    Add pg_type.typnamespace for schemas (Tom)
1089    Add pg_proc.pronamespace for schemas (Tom)
1090    Restructure aggregates to have pg_proc entries (Tom)
1091    System relations now have their own namespace, pg_* test not required
1092      (Fernando Nasser)
1093    Rename TOAST index names to be *_index rather than *_idx (Neil)
1094    Add namespaces for operators, opclasses (Tom)
1095    Add additional checks to server control file (Thomas)
1096    New Polish FAQ (Marcin Mazurek)
1097    Add Posix semaphore support (Tom)
1098    Document need for reindex (Bruce)
1099    Rename some internal identifiers to simplify Win32 compile (Jan,
1100      Katherine Ward)
1101    Add documentation on computing disk space (Bruce)
1102    Remove KSQO from GUC (Bruce)
1103    Fix memory leak in rtree (Kenneth Been)
1104    Modify a few error messages for consistency (Bruce)
1105    Remove unused system table columns (Peter)
1106    Make system columns NOT NULL where appropriate (Tom)
1107    Clean up use of sprintf in favor of snprintf() (Neil, Jukka Holappa)
1108    Remove OPAQUE and create specific subtypes (Tom)
1109    Cleanups in array internal handling (Joe, Tom)
1110    Disallow pg_atoi('') (Bruce)
1111    Remove parameter wal_files because WAL files are now recycled (Bruce)
1112    Add version numbers to heap pages (Tom)
1113      _________________________________________________________________
1114    
1115 Contrib
1116
1117    Allow inet arrays in /contrib/array (Neil)
1118    Gist fixes (Teodor Sigaev, Neil)
1119    Upgrade /contrib/mysql
1120    Add /contrib/dbsize which shows table sizes without vacuum (Peter)
1121    Add /contrib/intagg, integer aggregator routines (mlw)
1122    Improve /contrib/oid2name (Neil, Bruce)
1123    Improve /contrib/tsearch (Oleg, Teodor Sigaev)
1124    Cleanups of /contrib/rserver (Alexey V. Borzov)
1125    Update /contrib/oracle conversion utility (Gilles Darold)
1126    Update /contrib/dblink (Joe)
1127    Improve options supported by /contrib/vacuumlo (Mario Weilguni)
1128    Improvements to /contrib/intarray (Oleg, Teodor Sigaev, Andrey
1129      Oktyabrski)
1130    Add /contrib/reindexdb utility (Shaun Thomas)
1131    Add indexing to /contrib/isbn_issn (Dan Weston)
1132    Add /contrib/dbmirror (Steven Singer)
1133    Improve /contrib/pgbench (Neil)
1134    Add /contrib/tablefunc table function examples (Joe)
1135    Add /contrib/ltree data type for tree structures (Teodor Sigaev,
1136      Oleg Bartunov)
1137    Move /contrib/pg_controldata, pg_resetxlog into main tree (Bruce)
1138    Fixes to /contrib/cube (Bruno Wolff)
1139    Improve /contrib/fulltextindex (Christopher)
1140      _________________________________________________________________
1141
1142                                Release 7.2.4
1143
1144      Release date: 2003-01-30
1145
1146    This  has  a  variety  of fixes from 7.2.3, including fixes to prevent
1147    possible data loss.
1148      _________________________________________________________________
1149
1150                          Migration to version 7.2.4
1151
1152    A dump/restore is *not* required for those running 7.2.X.
1153      _________________________________________________________________
1154
1155                                   Changes
1156
1157    Fix some additional cases of VACUUM "No one parent tuple was found"
1158         error
1159    Prevent VACUUM from being called inside a function  (Bruce)
1160    Ensure pg_clog updates are sync'd to disk before marking checkpoint
1161         complete
1162    Avoid integer overflow during large hash joins
1163    Make GROUP commands work when pg_group.grolist is large enough
1164         to be toasted
1165    Fix errors in datetime tables; some timezone names weren't being
1166         recognized
1167    Fix integer overflows in circle_poly(), path_encode(), path_add()
1168         (Neil)
1169    Repair long-standing logic errors in lseg_eq(), lseg_ne(), lseg_center()
1170      _________________________________________________________________
1171    
1172                                Release 7.2.3
1173                                       
1174      Release date: 2002-10-01
1175      
1176    This has a variety of fixes from 7.2.2, including fixes to prevent
1177    possible data loss.
1178      _________________________________________________________________
1179    
1180                          Migration to version 7.2.3
1181                                       
1182    A dump/restore is *not* required for those running 7.2.X.
1183      _________________________________________________________________
1184    
1185                                   Changes
1186                                       
1187    Prevent possible compressed transaction log loss (Tom)
1188    Prevent non-superuser from increasing most recent vacuum info (Tom)
1189    Handle pre-1970 date values in newer versions of glibc (Tom)
1190    Fix possible hang during server shutdown
1191    Prevent spinlock hangs on SMP PPC machines (Tomoyuki Niijima)
1192    Fix pg_dump to properly dump FULL JOIN USING (Tom)
1193      _________________________________________________________________
1194    
1195                                Release 7.2.2
1196                                       
1197      Release date: 2002-08-23
1198      
1199    This has a variety of fixes from 7.2.1.
1200      _________________________________________________________________
1201    
1202                          Migration to version 7.2.2
1203                                       
1204    A dump/restore is *not* required for those running 7.2.X.
1205      _________________________________________________________________
1206    
1207                                   Changes
1208                                       
1209    Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)
1210    Fix for compressed transaction log id wraparound (Tom)
1211    Fix PQescapeBytea/PQunescapeBytea so that they handle bytes > 0x7f (Ta
1212    tsuo)
1213    Fix for psql and pg_dump crashing when invoked with non-existand long
1214      options (Tatsuo)
1215    Fix crash when invoking geometric operators (Tom)
1216    Allow OPEN cursor(args) (Tom)
1217    Fix for rtree_gist index build (Teodor)
1218    Fix for dumping user-defined aggregates (Tom)
1219    Contrib/intarray fixes (Oleg)
1220    Fix for complex UNION/EXCEPT/INTERSECT queries using parens (Tom)
1221    Fix to pg_convert (Tatsuo)
1222    Fix for crash with long DATA strings (Thomes, Neil)
1223    Fix for repeat(), lpad(), rpad() and long strings (Neil)
1224      _________________________________________________________________
1225    
1226                                Release 7.2.1
1227                                       
1228      Release date: 2002-03-21
1229      
1230    This has a variety of fixes from 7.2.
1231      _________________________________________________________________
1232    
1233                          Migration to version 7.2.1
1234                                       
1235    A dump/restore is *not* required for those running 7.2.
1236      _________________________________________________________________
1237    
1238                                   Changes
1239                                       
1240    Ensure that sequence counters do not go backwards after a crash (Tom)
1241    Fix pgaccess kanji-coversion key binding (Tatsuo)
1242    Optimizer improvements (Tom)
1243    Cash I/O improvements (Tom)
1244    New Russian FAQ
1245    Compile fix for missing AuthBlockSig (Heiko)
1246    Additional time zones and time zone fixes (Thomas)
1247    Allow psql \connect to handle mixed case database and user names (Tom)
1248    Return proper OID on command completion even with ON INSERT rules (Tom
1249    )
1250    Allow COPY FROM to use 8-bit DELIMITERS (Tatsuo)
1251    Fix bug in extract/date_part for milliseconds/microseconds (Tatsuo)
1252    Improve handling of multiple UNIONs with different lengths (Tom)
1253    contrib/btree_gist improvements (Teodor Sigaev)
1254    contrib/tsearch dictionary improvements, see README.tsearch for
1255      an additional installation step (Thomas T. Thai, Teodor Sigaev)
1256    Fix for array subscripts handling (Tom)
1257    Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)
1258      _________________________________________________________________
1259    
1260                                 Release 7.2
1261                                       
1262      Release date: 2002-02-04
1263      _________________________________________________________________
1264    
1265                                   Overview
1266                                       
1267    This release improves PostgreSQL for use in high-volume applications.
1268    
1269    Major changes in this release:
1270    
1271    VACUUM
1272           Vacuuming no longer locks tables, thus allowing normal user
1273           access during the vacuum. A new "VACUUM FULL" command does
1274           old-style vacuum by locking the table and shrinking the on-disk
1275           copy of the table.
1276           
1277    Transactions
1278           There is no longer a problem with installations that exceed
1279           four billion transactions.
1280           
1281    OIDs
1282           OIDs are now optional. Users can now create tables without OIDs
1283           for cases where OID usage is excessive.
1284           
1285    Optimizer
1286           The system now computes histogram column statistics during
1287           "ANALYZE", allowing much better optimizer choices.
1288           
1289    Security
1290           A new MD5 encryption option allows more secure storage and
1291           transfer of passwords. A new Unix-domain socket authentication
1292           option is available on Linux and BSD systems.
1293           
1294    Statistics
1295           Administrators can use the new table access statistics module
1296           to get fine-grained information about table and index usage.
1297           
1298    Internationalization
1299           Program and library messages can now be displayed in several
1300           languages.
1301      _________________________________________________________________
1302    
1303                           Migration to version 7.2
1304                                       
1305    A dump/restore using "pg_dump" is required for those wishing to
1306    migrate data from any previous release.
1307    
1308    Observe the following incompatibilities:
1309    
1310      * The semantics of the "VACUUM" command have changed in this
1311        release. You may wish to update your maintenance procedures
1312        accordingly.
1313      * In this release, comparisons using = NULL will always return false
1314        (or NULL, more precisely). Previous releases automatically
1315        transformed this syntax to IS NULL. The old behavior can be
1316        re-enabled using a "postgresql.conf" parameter.
1317      * The "pg_hba.conf" and "pg_ident.conf" configuration is now only
1318        reloaded after receiving a SIGHUP signal, not with each
1319        connection.
1320      * The function "octet_length()" now returns the uncompressed data
1321        length.
1322      * The date/time value 'current' is no longer available. You will
1323        need to rewrite your applications.
1324      * The timestamp(), time(), and interval() functions are no longer
1325        available. Instead of timestamp(), use timestamp 'string' or CAST.
1326        
1327    The SELECT ... LIMIT #,# syntax will be removed in the next release.
1328    You should change your queries to use separate LIMIT and OFFSET
1329    clauses, e.g. LIMIT 10 OFFSET 20.
1330      _________________________________________________________________
1331    
1332                                   Changes
1333                                       
1334 Server Operation
1335
1336    Create temporary files in a separate directory (Bruce)
1337    Delete orphaned temporary files on postmaster startup (Bruce)
1338    Added unique indexes to some system tables (Tom)
1339    System table operator reorganization (Oleg Bartunov, Teodor Sigaev, To
1340    m)
1341    Renamed pg_log to pg_clog (Tom)
1342    Enable SIGTERM, SIGQUIT to kill backends (Jan)
1343    Removed compile-time limit on number of backends (Tom)
1344    Better cleanup for semaphore resource failure (Tatsuo, Tom)
1345    Allow safe transaction ID wraparound (Tom)
1346    Removed OIDs from some system tables (Tom)
1347    Removed "triggered data change violation" error check (Tom)
1348    SPI portal creation of prepared/saved plans (Jan)
1349    Allow SPI column functions to work for system columns (Tom)
1350    Long value compression improvement (Tom)
1351    Statistics collector for table, index access (Jan)
1352    Truncate extra-long sequence names to a reasonable value (Tom)
1353    Measure transaction times in milliseconds (Thomas)
1354    Fix TID sequential scans (Hiroshi)
1355    Superuser ID now fixed at 1 (Peter E)
1356    New pg_ctl "reload" option (Tom)
1357      _________________________________________________________________
1358    
1359 Performance
1360
1361    Optimizer improvements (Tom)
1362    New histogram column statistics for optimizer (Tom)
1363    Reuse write-ahead log files rather than discarding them (Tom)
1364    Cache improvements (Tom)
1365    IS NULL, IS NOT NULL optimizer improvement (Tom)
1366    Improve lock manager to reduce lock contention (Tom)
1367    Keep relcache entries for index access support functions (Tom)
1368    Allow better selectivity with NaN and infinities in NUMERIC (Tom)
1369    R-tree performance improvements (Kenneth Been)
1370    B-tree splits more efficient (Tom)
1371      _________________________________________________________________
1372    
1373 Privileges
1374
1375    Change UPDATE, DELETE permissions to be distinct (Peter E)
1376    New REFERENCES, TRIGGER privileges (Peter E)
1377    Allow GRANT/REVOKE to/from more than one user at a time (Peter E)
1378    New has_table_privilege() function (Joe Conway)
1379    Allow non-superuser to vacuum database (Tom)
1380    New SET SESSION AUTHORIZATION command (Peter E)
1381    Fix bug in privilege modifications on newly created tables (Tom)
1382    Disallow access to pg_statistic for non-superuser, add user-accessible
1383     views (Tom)
1384      _________________________________________________________________
1385    
1386 Client Authentication
1387
1388    Fork postmaster before doing authentication to prevent hangs (Peter E)
1389    Add ident authentication over Unix domain sockets on Linux, *BSD (Helg
1390    e Bahmann, Oliver Elphick, Teodor Sigaev, Bruce)
1391    Add a password authentication method that uses MD5 encryption (Bruce)
1392    Allow encryption of stored passwords using MD5 (Bruce)
1393    PAM authentication (Dominic J. Eidson)
1394    Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce)
1395      _________________________________________________________________
1396    
1397 Server Configuration
1398
1399    Interpretation of some time zone abbreviations as Australian rather th
1400    an North American now settable at run time (Bruce)
1401    New parameter to set default transaction isolation level (Peter E)
1402    New parameter to enable conversion of "expr = NULL" into "expr IS NULL
1403    ", off by default (Peter E)
1404    New parameter to control memory usage by VACUUM (Tom)
1405    New parameter to set client authentication timeout (Tom)
1406    New parameter to set maximum number of open files (Tom)
1407      _________________________________________________________________
1408    
1409 Queries
1410
1411    Statements added by INSERT rules now execute after the INSERT (Jan)
1412    Prevent unadorned relation names in target list (Bruce)
1413    NULLs now sort after all normal values in ORDER BY (Tom)
1414    New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom)
1415    New SHARE UPDATE EXCLUSIVE lock mode (Tom)
1416    New EXPLAIN ANALYZE command that shows run times and row counts (Marti
1417    jn van Oosterhout)
1418    Fix problem with LIMIT and subqueries (Tom)
1419    Fix for LIMIT, DISTINCT ON pushed into subqueries (Tom)
1420    Fix nested EXCEPT/INTERSECT (Tom)
1421      _________________________________________________________________
1422    
1423 Schema Manipulation
1424
1425    Fix SERIAL in temporary tables (Bruce)
1426    Allow temporary sequences (Bruce)
1427    Sequences now use int8 internally (Tom)
1428    New SERIAL8 creates int8 columns with sequences, default still SERIAL4
1429     (Tom)
1430    Make OIDs optional using WITHOUT OIDS (Tom)
1431    Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor)
1432    Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher K
1433    ings-Lynne)
1434    New CREATE OR REPLACE FUNCTION to alter existing function (preserving
1435    the function OID) (Gavin Sherry)
1436    Add ALTER TABLE / ADD [ UNIQUE | PRIMARY ] (Christopher Kings-Lynne)
1437    Allow column renaming in views
1438    Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent
1439     Verner)
1440    Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (
1441    Stephan Szabo)
1442    ALTER TABLE RENAME update foreign-key trigger arguments correctly (Bre
1443    nt Verner)
1444    DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom)
1445    Add automatic return type data casting for SQL functions (Tom)
1446    Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov
1447    , Teodor Sigaev, Tom)
1448    Enable partial indexes (Martijn van Oosterhout)
1449      _________________________________________________________________
1450    
1451 Utility Commands
1452
1453    Add RESET ALL, SHOW ALL (Marko Kreen)
1454    CREATE/ALTER USER/GROUP now allow options in any order (Vince)
1455    Add LOCK A, B, C functionality (Neil Padgett)
1456    New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce)
1457    New light-weight VACUUM does not lock table; old semantics are availab
1458    le as VACUUM FULL (Tom)
1459    Disable COPY TO/FROM on views (Bruce)
1460    COPY DELIMITERS string must be exactly one character (Tom)
1461    VACUUM warning about index tuples fewer than heap now only appears whe
1462    n appropriate (Martijn van Oosterhout)
1463    Fix permission checks for CREATE INDEX (Tom)
1464    Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom)
1465      _________________________________________________________________
1466    
1467 Data Types and Functions
1468
1469    SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom)
1470    Add convert(), convert2() (Tatsuo)
1471    New function bit_length() (Peter E)
1472    Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tats
1473    uo)
1474    CHAR(), VARCHAR() now reject strings that are too long (Peter E)
1475    BIT VARYING now rejects bit strings that are too long (Peter E)
1476    BIT now rejects bit strings that do not match declared size (Peter E)
1477    INET, CIDR text conversion functions (Alex Pilosov)
1478    INET, CIDR operators << and <<= indexable (Alex Pilosov)
1479    Bytea \### now requires valid three digit octal number
1480    Bytea comparison improvements, now supports =, <>, >, >=, <, and <=
1481    Bytea now supports B-tree indexes
1482    Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE
1483    Bytea now supports concatenation
1484    New bytea functions: position, substring, trim, btrim, and length
1485    New encode() function mode, "escaped", converts minimally escaped byte
1486    a to/from text
1487    Add pg_database_encoding_max_length() (Tatsuo)
1488    Add pg_client_encoding() function (Tatsuo)
1489    now() returns time with millisecond precision (Thomas)
1490    New TIMESTAMP WITHOUT TIMEZONE data type (Thomas)
1491    Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas)
1492    New xid/int comparison functions (Hiroshi)
1493    Add precision to TIME, TIMESTAMP, and INVERVAL data types (Thomas)
1494    Modify type coercion logic to attempt binary-compatible functions firs
1495    t (Tom)
1496    New encode() function installed by default (Marko Kreen)
1497    Improved to_*() conversion functions (Karel Zak)
1498    Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo)
1499    New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_sal
1500    t() (Marko Kreen)
1501    Correct description of translate() function (Bruce)
1502    Add INTERVAL argument for SET TIME ZONE (Thomas)
1503    Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas)
1504    Optimize length functions when using single-byte encodings (Tatsuo)
1505    Fix path_inter, path_distance, path_length, dist_ppath to handle close
1506    d paths (Curtis Barrett, Tom)
1507    octet_length(text) now returns non-compressed length (Tatsuo, Bruce)
1508    Handle "July" full name in date/time literals (Greg Sabino Mullane)
1509    Some datatype() function calls now evaluated differently
1510    Add support for Julian and ISO time specifications (Thomas)
1511      _________________________________________________________________
1512    
1513 Internationalization
1514
1515    National language support in psql, pg_dump, libpq, and server (Peter E
1516    )
1517    Message translations in Chinese (simplified, traditional), Czech, Fren
1518    ch, German, Hungarian, Russian, Swedish (Peter E, Serguei A. Mokhov, K
1519    arel Zak, Weiping He, Zhenbang Wei, Kovacs Zoltan)
1520    Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware
1521    (Tatsuo)
1522    Add LATIN5,6,7,8,9,10 support (Tatsuo)
1523    Add ISO 8859-5,6,7,8 support (Tatsuo)
1524    Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo)
1525    Make mic2ascii() non-ASCII aware (Tatsuo)
1526    Reject invalid multibyte character sequences (Tatsuo)
1527      _________________________________________________________________
1528    
1529 PL/pgSQL
1530
1531    Now uses portals for SELECT loops, allowing huge result sets (Jan)
1532    CURSOR and REFCURSOR support (Jan)
1533    Can now return open cursors (Jan)
1534    Add ELSEIF (Klaus Reger)
1535    Improve PL/pgSQL error reporting, including location of error (Tom)
1536    Allow IS or FOR key words in cursor declaration, for compatibility (Br
1537    uce)
1538    Fix for SELECT ... FOR UPDATE (Tom)
1539    Fix for PERFORM returning multiple rows (Tom)
1540    Make PL/pgSQL use the server's type coercion code (Tom)
1541    Memory leak fix (Jan, Tom)
1542    Make trailing semicolon optional (Tom)
1543      _________________________________________________________________
1544    
1545 PL/Perl
1546
1547    New untrusted PL/Perl (Alex Pilosov)
1548    PL/Perl is now built on some platforms even if libperl is not shared (
1549    Peter E)
1550      _________________________________________________________________
1551    
1552 PL/Tcl
1553
1554    Now reports errorInfo (Vsevolod Lobko)
1555    Add spi_lastoid function (bob@redivi.com)
1556      _________________________________________________________________
1557    
1558 PL/Python
1559
1560    ...is new (Andrew Bosma)
1561      _________________________________________________________________
1562    
1563 Psql
1564
1565    \d displays indexes in unique, primary groupings (Christopher Kings-Ly
1566    nne)
1567    Allow trailing semicolons in backslash commands (Greg Sabino Mullane)
1568    Read password from /dev/tty if possible
1569    Force new password prompt when changing user and database (Tatsuo, Tom
1570    )
1571    Format the correct number of columns for Unicode (Patrice)
1572      _________________________________________________________________
1573    
1574 Libpq
1575
1576    New function PQescapeString() to escape quotes in command strings (Flo
1577    rian Weimer)
1578    New function PQescapeBytea() escapes binary strings for use as SQL str
1579    ing literals
1580      _________________________________________________________________
1581    
1582 JDBC
1583
1584    Return OID of INSERT (Ken K)
1585    Handle more data types (Ken K)
1586    Handle single quotes and newlines in strings (Ken K)
1587    Handle NULL variables (Ken K)
1588    Fix for time zone handling (Barry Lind)
1589    Improved Druid support
1590    Allow eight-bit characters with non-multibyte server (Barry Lind)
1591    Support BIT, BINARY types (Ned Wolpert)
1592    Reduce memory usage (Michael Stephens, Dave Cramer)
1593    Update DatabaseMetaData (Peter E)
1594    Add DatabaseMetaData.getCatalogs() (Peter E)
1595    Encoding fixes (Anders Bengtsson)
1596    Get/setCatalog methods (Jason Davies)
1597    DatabaseMetaData.getColumns() now returns column defaults (Jason Davie
1598    s)
1599    DatabaseMetaData.getColumns() performance improvement (Jeroen van Vian
1600    en)
1601    Some JDBC1 and JDBC2 merging (Anders Bengtsson)
1602    Transaction performance improvements (Barry Lind)
1603    Array fixes (Greg Zoller)
1604    Serialize addition
1605    Fix batch processing (Rene Pijlman)
1606    ExecSQL method reorganization (Anders Bengtsson)
1607    GetColumn() fixes (Jeroen van Vianen)
1608    Fix isWriteable() function (Rene Pijlman)
1609    Improved passage of JDBC2 conformance tests (Rene Pijlman)
1610    Add bytea type capability (Barry Lind)
1611    Add isNullable() (Rene Pijlman)
1612    JDBC date/time test suite fixes (Liam Stewart)
1613    Fix for SELECT 'id' AS xxx FROM table (Dave Cramer)
1614    Fix DatabaseMetaData to show precision properly (Mark Lillywhite)
1615    New getImported/getExported keys (Jason Davies)
1616    MD5 password encryption support (Jeremy Wohl)
1617    Fix to actually use type cache (Ned Wolpert)
1618      _________________________________________________________________
1619    
1620 ODBC
1621
1622    Remove query size limit (Hiroshi)
1623    Remove text field size limit (Hiroshi)
1624    Fix for SQLPrimaryKeys in multibyte mode (Hiroshi)
1625    Allow ODBC procedure calls (Hiroshi)
1626    Improve boolean handing (Aidan Mountford)
1627    Most configuration options on setable via DSN (Hiroshi)
1628    Multibyte, performance fixes (Hiroshi)
1629    Allow driver to be used with iODBC or unixODBC (Peter E)
1630    MD5 password encryption support (Bruce)
1631    Add more compatibility functions to odbc.sql (Peter E)
1632      _________________________________________________________________
1633    
1634 ECPG
1635
1636    EXECUTE ... INTO implemented (Christof Petig)
1637    Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig)
1638    Fix for GRANT parameters (Lee Kindness)
1639    Fix INITIALLY DEFERRED bug
1640    Various bug fixes (Michael, Christof Petig)
1641    Auto allocation for indicator variable arrays (int *ind_p=NULL)
1642    Auto allocation for string arrays (char **foo_pp=NULL)
1643    ECPGfree_auto_mem fixed
1644    All function names with external linkage are now prefixed by ECPG
1645    Fixes for arrays of structures (Michael)
1646      _________________________________________________________________
1647    
1648 Misc. Interfaces
1649
1650    Python fix fetchone() (Gerhard Haring)
1651    Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Ma
1652    x)
1653    Add Tcl COPY TO/FROM (ljb)
1654    Prevent output of default index op class in pg_dump (Tom)
1655    Fix libpgeasy memory leak (Bruce)
1656      _________________________________________________________________
1657    
1658 Build and Install
1659
1660    Configure, dynamic loader, and shared library fixes (Peter E)
1661    Fixes in QNX 4 port (Bernd Tegge)
1662    Fixes in Cygwin and Win32 ports (Jason Tishler, Gerhard Haring, Dmitry
1663     Yurtaev, Darko Prenosil, Mikhail Terekhov)
1664    Fix for Win32 socket communication failures (Magnus, Mikhail Terekhov)
1665    Hurd compile fix (Oliver Elphick)
1666    BeOS fixes (Cyril Velter)
1667    Remove configure --enable-unicode-conversion, now enabled by multibyte
1668     (Tatsuo)
1669    AIX fixes (Tatsuo, Andreas)
1670    Fix parallel make (Peter E)
1671    Install SQL language manual pages into OS-specific directories (Peter
1672    E)
1673    Rename config.h to pg_config.h (Peter E)
1674    Reorganize installation layout of header files (Peter E)
1675      _________________________________________________________________
1676    
1677 Source Code
1678
1679    Remove SEP_CHAR (Bruce)
1680    New GUC hooks (Tom)
1681    Merge GUC and command line handling (Marko Kreen)
1682    Remove EXTEND INDEX (Martijn van Oosterhout, Tom)
1683    New pgjindent utility to indent java code (Bruce)
1684    Remove define of true/false when compiling under C++ (Leandro Fanzone,
1685     Tom)
1686    pgindent fixes (Bruce, Tom)
1687    Replace strcasecmp() with strcmp() where appropriate (Peter E)
1688    Dynahash portability improvements (Tom)
1689    Add 'volatile' usage in spinlock structures
1690    Improve signal handling logic (Tom)
1691      _________________________________________________________________
1692    
1693 Contrib
1694
1695    New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev)
1696    New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev)
1697    Add contrib/dblink for remote database access (Joe Conway)
1698    contrib/ora2pg Oracle conversion utility (Gilles Darold)
1699    contrib/xml XML conversion utility (John Gray)
1700    contrib/fulltextindex fixes (Christopher Kings-Lynne)
1701    New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merg
1702    ed (Joe Conway)
1703    Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartu
1704    nov)
1705    New pg_upgrade utility (Bruce)
1706    Add new pg_resetxlog options (Bruce, Tom)
1707      _________________________________________________________________
1708    
1709                                Release 7.1.3
1710                                       
1711      Release date: 2001-08-15
1712      _________________________________________________________________
1713    
1714                          Migration to version 7.1.3
1715                                       
1716    A dump/restore is *not* required for those running 7.1.X.
1717      _________________________________________________________________
1718    
1719                                   Changes
1720                                       
1721 Remove unused WAL segements of large transactions (Tom)
1722 Multiaction rule fix (Tom)
1723 PL/pgSQL memory allocation fix (Jan)
1724 VACUUM buffer fix (Tom)
1725 Regression test fixes (Tom)
1726 pg_dump fixes for GRANT/REVOKE/comments on views, user-defined types (Tom)
1727 Fix subselects with DISTINCT ON or LIMIT (Tom)
1728 BeOS fix
1729 Disable COPY TO/FROM a view (Tom)
1730 Cygwin build (Jason Tishler)
1731
1732      _________________________________________________________________
1733    
1734                                Release 7.1.2
1735                                       
1736      Release date: 2001-05-11
1737      
1738    This has one fix from 7.1.1.
1739      _________________________________________________________________
1740    
1741                          Migration to version 7.1.2
1742                                       
1743    A dump/restore is *not* required for those running 7.1.X.
1744      _________________________________________________________________
1745    
1746                                   Changes
1747                                       
1748 Fix PL/pgSQL SELECTs when returning no rows
1749 Fix for psql backslash core dump
1750 Referential integrity permission fix
1751 Optimizer fixes
1752 pg_dump cleanups
1753
1754      _________________________________________________________________
1755    
1756                                Release 7.1.1
1757                                       
1758      Release date: 2001-05-05
1759      
1760    This has a variety of fixes from 7.1.
1761      _________________________________________________________________
1762    
1763                          Migration to version 7.1.1
1764                                       
1765    A dump/restore is *not* required for those running 7.1.
1766      _________________________________________________________________
1767    
1768                                   Changes
1769                                       
1770 Fix for numeric MODULO operator (Tom)
1771 pg_dump fixes (Philip)
1772 pg_dump can dump 7.0 databases (Philip)
1773 readline 4.2 fixes (Peter E)
1774 JOIN fixes (Tom)
1775 AIX, MSWIN, VAX, N32K fixes (Tom)
1776 Multibytes fixes (Tom)
1777 Unicode fixes (Tatsuo)
1778 Optimizer improvements (Tom)
1779 Fix for whole tuples in functions (Tom)
1780 Fix for pg_ctl and option strings with spaces (Peter E)
1781 ODBC fixes (Hiroshi)
1782 EXTRACT can now take string argument (Thomas)
1783 Python fixes (Darcy)
1784
1785      _________________________________________________________________
1786    
1787                                 Release 7.1
1788                                       
1789      Release date: 2001-04-13
1790      
1791    This release focuses on removing limitations that have existed in the
1792    PostgreSQL code for many years.
1793    
1794    Major changes in this release:
1795    
1796    Write-ahead Log (WAL)
1797           To maintain database consistency in case of an operating system
1798           crash, previous releases of PostgreSQL have forced all data
1799           modifications to disk before each transaction commit. With WAL,
1800           only one log file must be flushed to disk, greatly improving
1801           performance. If you have been using -F in previous releases to
1802           disable disk flushes, you may want to consider discontinuing
1803           its use.
1804           
1805    TOAST
1806           TOAST - Previous releases had a compiled-in row length limit,
1807           typically 8k - 32k. This limit made storage of long text fields
1808           difficult. With TOAST, long rows of any length can be stored
1809           with good performance.
1810           
1811    Outer Joins
1812           We now support outer joins. The UNION/NOT IN workaround for
1813           outer joins is no longer required. We use the SQL92 outer join
1814           syntax.
1815           
1816    Function Manager
1817           The previous C function manager did not handle null values
1818           properly, nor did it support 64-bit CPU's (Alpha). The new
1819           function manager does. You can continue using your old custom
1820           functions, but you may want to rewrite them in the future to
1821           use the new function manager call interface.
1822           
1823    Complex Queries
1824           A large number of complex queries that were unsupported in
1825           previous releases now work. Many combinations of views,
1826           aggregates, UNION, LIMIT, cursors, subqueries, and inherited
1827           tables now work properly. Inherited tables are now accessed by
1828           default. Subqueries in FROM are now supported.
1829      _________________________________________________________________
1830    
1831                           Migration to version 7.1
1832                                       
1833    A dump/restore using pg_dump is required for those wishing to migrate
1834    data from any previous release.
1835      _________________________________________________________________
1836    
1837                                   Changes
1838                                       
1839 Bug Fixes
1840 ---------
1841 Many multibyte/Unicode/locale fixes (Tatsuo and others)
1842 More reliable ALTER TABLE RENAME (Tom)
1843 Kerberos V fixes (David Wragg)
1844 Fix for INSERT INTO...SELECT where targetlist has subqueries (Tom)
1845 Prompt username/password on standard error (Bruce)
1846 Large objects inv_read/inv_write fixes (Tom)
1847 Fixes for to_char(), to_date(), to_ascii(), and to_timestamp() (Karel,
1848     Daniel Baldoni)
1849 Prevent query expressions from leaking memory (Tom)
1850 Allow UPDATE of arrays elements (Tom)
1851 Wake up lock waiters during cancel (Hiroshi)
1852 Fix rare cursor crash when using hash join (Tom)
1853 Fix for DROP TABLE/INDEX in rolled-back transaction (Hiroshi)
1854 Fix psql crash from \l+ if MULTIBYTE enabled (Peter E)
1855 Fix truncation of rule names during CREATE VIEW (Ross Reedstrom)
1856 Fix PL/perl (Alex Kapranoff)
1857 Disallow LOCK on views (Mark Hollomon)
1858 Disallow INSERT/UPDATE/DELETE on views (Mark Hollomon)
1859 Disallow DROP RULE, CREATE INDEX, TRUNCATE on views (Mark Hollomon)
1860 Allow PL/pgSQL accept non-ASCII identifiers (Tatsuo)
1861 Allow views to proper handle GROUP BY, aggregates, DISTINCT (Tom)
1862 Fix rare failure with TRUNCATE command (Tom)
1863 Allow UNION/INTERSECT/EXCEPT to be used with ALL, subqueries, views,
1864     DISTINCT, ORDER BY, SELECT...INTO (Tom)
1865 Fix parser failures during aborted transactions (Tom)
1866 Allow temporary relations to properly clean up indexes (Bruce)
1867 Fix VACUUM problem with moving rows in same page (Tom)
1868 Modify pg_dump to better handle user-defined items in template1 (Philip)
1869 Allow LIMIT in VIEW (Tom)
1870 Require cursor FETCH to honor LIMIT (Tom)
1871 Allow PRIMARY/FOREIGN Key definitions on inherited columns (Stephan)
1872 Allow ORDER BY, LIMIT in sub-selects (Tom)
1873 Allow UNION in CREATE RULE (Tom)
1874 Make ALTER/DROP TABLE rollback-able (Vadim, Tom)
1875 Store initdb collation in pg_control so collation cannot be changed (Tom)
1876 Fix INSERT...SELECT with rules (Tom)
1877 Fix FOR UPDATE inside views and subselects (Tom)
1878 Fix OVERLAPS operators conform to SQL92 spec regarding NULLs (Tom)
1879 Fix lpad() and rpad() to handle length less than input string (Tom)
1880 Fix use of NOTIFY in some rules (Tom)
1881 Overhaul btree code (Tom)
1882 Fix NOT NULL use in Pl/pgSQL variables (Tom)
1883 Overhaul GIST code (Oleg)
1884 Fix CLUSTER to preserve constraints and column default (Tom)
1885 Improved deadlock detection handling (Tom)
1886 Allow multiple SERIAL columns in a table (Tom)
1887 Prevent occasional index corruption (Vadim)
1888
1889 Enhancements
1890 ------------
1891 Add OUTER JOINs (Tom)
1892 Function manager overhaul (Tom)
1893 Allow ALTER TABLE RENAME on indexes (Tom)
1894 Improve CLUSTER (Tom)
1895 Improve ps status display for more platforms (Peter E, Marc)
1896 Improve CREATE FUNCTION failure message (Ross)
1897 JDBC improvements (Peter, Travis Bauer, Christopher Cain, William Webber,
1898     Gunnar)
1899 Grand Unified Configuration scheme/GUC.  Many options can now be set in
1900     data/postgresql.conf, postmaster/postgres flags, or SET commands (Peter E)
1901 Improved handling of file descriptor cache (Tom)
1902 New warning code about auto-created table alias entries (Bruce)
1903 Overhaul initdb process (Tom, Peter E)
1904 Overhaul of inherited tables; inherited tables now accessed by default;
1905    new ONLY keyword prevents it (Chris Bitmead, Tom)
1906 ODBC cleanups/improvements (Nick Gorham, Stephan Szabo, Zoltan Kovacs,
1907     Michael Fork)
1908 Allow renaming of temp tables (Tom)
1909 Overhaul memory manager contexts (Tom)
1910 pg_dumpall uses CREATE USER or CREATE GROUP rather using COPY (Peter E)
1911 Overhaul pg_dump (Philip Warner)
1912 Allow pg_hba.conf secondary password file to specify only username (Peter E)
1913 Allow TEMPORARY or TEMP keyword when creating temporary tables (Bruce)
1914 New memory leak checker (Karel)
1915 New SET SESSION CHARACTERISTICS (Thomas)
1916 Allow nested block comments (Thomas)
1917 Add WITHOUT TIME ZONE type qualifier (Thomas)
1918 New ALTER TABLE ADD CONSTRAINT (Stephan)
1919 Use NUMERIC accumulators for INTEGER aggregates (Tom)
1920 Overhaul aggregate code (Tom)
1921 New VARIANCE and STDDEV() aggregates
1922 Improve dependency ordering of pg_dump (Philip)
1923 New pg_restore command (Philip)
1924 New pg_dump tar output option (Philip)
1925 New pg_dump of large objects  (Philip)
1926 New ESCAPE option to LIKE (Thomas)
1927 New case-insensitive LIKE - ILIKE (Thomas)
1928 Allow functional indexes to use binary-compatible type (Tom)
1929 Allow SQL functions to be used in more contexts (Tom)
1930 New pg_config utility (Peter E)
1931 New PL/pgSQL EXECUTE command which allows dynamic SQL and utility statements
1932     (Jan)
1933 New PL/pgSQL GET DIAGNOSTICS statement for SPI value access (Jan)
1934 New quote_identifiers() and quote_literal() functions (Jan)
1935 New ALTER TABLE table OWNER TO user command (Mark Hollomon)
1936 Allow subselects in FROM, i.e. FROM (SELECT ...) [AS] alias (Tom)
1937 Update PyGreSQL to version 3.1 (D'Arcy)
1938 Store tables as files named by OID (Vadim)
1939 New SQL function setval(seq,val,bool) for use in pg_dump (Philip)
1940 Require DROP VIEW to remove views, no DROP TABLE (Mark)
1941 Allow DROP VIEW view1, view2 (Mark)
1942 Allow multiple objects in DROP INDEX, DROP RULE, and DROP TYPE (Tom)
1943 Allow automatic conversion to/from Unicode (Tatsuo, Eiji)
1944 New /contrib/pgcrypto hashing functions (Marko Kreen)
1945 New pg_dumpall --globals-only option (Peter E)
1946 New CHECKPOINT command for WAL which creates new WAL log file (Vadim)
1947 New AT TIME ZONE syntax (Thomas)
1948 Allow location of Unix domain socket to be configurable (David J. MacKenzie)
1949 Allow postmaster to listen on a specific IP address (David J. MacKenzie)
1950 Allow socket path name to be specified in hostname by using leading slash
1951     (David J. MacKenzie)
1952 Allow CREATE DATABASE to specify template database (Tom)
1953 New utility to convert MySQL schema dumps to SQL92 and PostgreSQL (Thomas)
1954 New /contrib/rserv replication toolkit (Vadim)
1955 New file format for COPY BINARY (Tom)
1956 New /contrib/oid2name to map numeric files to table names (B Palmer)
1957 New "idle in transaction" ps status message (Marc)
1958 Update to pgaccess 0.98.7 (Constantin Teodorescu)
1959 pg_ctl now defaults to -w (wait) on shutdown, new -l (log) option
1960 Add rudimentary dependency checking to pg_dump (Philip)
1961
1962 Types
1963 -----
1964 Fix INET/CIDR type ordering and add new functions (Tom)
1965 Make OID behave as an unsigned type (Tom)
1966 Allow BIGINT as synonym for INT8 (Peter E)
1967 New int2 and int8 comparison operators (Tom)
1968 New BIT and BIT VARYING types (Adriaan Joubert, Tom, Peter E)
1969 CHAR() no longer faster than VARCHAR() because of TOAST (Tom)
1970 New GIST seg/cube examples (Gene Selkov)
1971 Improved round(numeric) handling (Tom)
1972 Fix CIDR output formatting (Tom)
1973 New CIDR abbrev() function (Tom)
1974
1975 Performance
1976 -----------
1977 Write-Ahead Log (WAL) to provide crash recovery with less performance
1978     overhead (Vadim)
1979 ANALYZE stage of VACUUM no longer exclusively locks table (Bruce)
1980 Reduced file seeks (Denis Perchine)
1981 Improve BTREE code for duplicate keys (Tom)
1982 Store all large objects in a single table (Denis Perchine, Tom)
1983 Improve memory allocation performance (Karel, Tom)
1984
1985 Source Code
1986 -----------
1987 New function manager call conventions (Tom)
1988 SGI portability fixes (David Kaelbling)
1989 New configure --enable-syslog option (Peter E)
1990 New BSDI README (Bruce)
1991 configure script moved to top level, not /src (Peter E)
1992 Makefile/configuration/compilation overhaul (Peter E)
1993 New configure --with-python option (Peter E)
1994 Solaris cleanups (Peter E)
1995 Overhaul /contrib Makefiles (Karel)
1996 New OpenSSL configuration option (Magnus, Peter E)
1997 AIX fixes (Andreas)
1998 QNX fixes (Maurizio)
1999 New heap_open(), heap_openr() API (Tom)
2000 Remove colon and semi-colon operators (Thomas)
2001 New pg_class.relkind value for views (Mark Hollomon)
2002 Rename ichar() to chr() (Karel)
2003 New documentation for btrim(), ascii(), chr(), repeat() (Karel)
2004 Fixes for NT/Cygwin (Pete Forman)
2005 AIX port fixes (Andreas)
2006 New BeOS port (David Reid, Cyril Velter)
2007 Add proofreader's changes to docs (Addison-Wesley, Bruce)
2008 New Alpha spinlock code (Adriaan Joubert, Compaq)
2009 UnixWare port overhaul (Peter E)
2010 New Darwin/MacOS X port (Peter Bierman, Bruce Hartzler)
2011 New FreeBSD Alpha port (Alfred)
2012 Overhaul shared memory segments (Tom)
2013 Add IBM S/390 support (Neale Ferguson)
2014 Moved macmanuf to /contrib (Larry Rosenman)
2015 Syslog improvements (Larry Rosenman)
2016 New template0 database that contains no user additions (Tom)
2017 New /contrib/cube and /contrib/seg GIST sample code (Gene Selkov)
2018 Allow NetBSD's libedit instead of readline (Peter)
2019 Improved assembly language source code format (Bruce)
2020 New contrib/pg_logger
2021 New --template option to createdb
2022 New contrib/pg_control utility (Oliver)
2023 New FreeBSD tools ipc_check, start-scripts/freebsd
2024
2025      _________________________________________________________________
2026    
2027                                Release 7.0.3
2028                                       
2029      Release date: 2000-11-11
2030      
2031    This has a variety of fixes from 7.0.2.
2032      _________________________________________________________________
2033    
2034                          Migration to version 7.0.3
2035                                       
2036    A dump/restore is *not* required for those running 7.0.*.
2037      _________________________________________________________________
2038    
2039                                   Changes
2040                                       
2041 Jdbc fixes (Peter)
2042 Large object fix (Tom)
2043 Fix lean in COPY WITH OIDS leak (Tom)
2044 Fix backwards-index-scan (Tom)
2045 Fix SELECT ... FOR UPDATE so it checks for duplicate keys (Hiroshi)
2046 Add --enable-syslog to configure (Marc)
2047 Fix abort transaction at backend exit in rare cases (Tom)
2048 Fix for psql \l+ when multibyte enabled (Tatsuo)
2049 Allow PL/pgSQL to accept non ascii identifiers (Tatsuo)
2050 Make vacuum always flush buffers (Tom)
2051 Fix to allow cancel while waiting for a lock (Hiroshi)
2052 Fix for memory aloocation problem in user authentication code (Tom)
2053 Remove bogus use of int4out() (Tom)
2054 Fixes for multiple subqueries in COALESCE or BETWEEN (Tom)
2055 Fix for failure of triggers on heap open in certain cases (Jeroen van
2056     Vianen)
2057 Fix for erroneous selectivity of not-equals (Tom)
2058 Fix for erroneous use of strcmp() (Tom)
2059 Fix for bug where storage manager accesses items beyond end of file
2060     (Tom)
2061 Fix to include kernel errno message in all smgr elog messages (Tom)
2062 Fix for '.' not in PATH at build time (SL Baur)
2063 Fix for out-of-file-descriptors error (Tom)
2064 Fix to make pg_dump dump 'iscachable' flag for functions (Tom)
2065 Fix for subselect in targetlist of Append node (Tom)
2066 Fix for mergejoin plans (Tom)
2067 Fix TRUNCATE failure on relations with indexes (Tom)
2068 Avoid database-wide restart on write error (Hiroshi)
2069 Fix nodeMaterial to honor chgParam by recomputing its output (Tom)
2070 Fix VACUUM problem with moving chain of update tuples when source and
2071     destination of a tuple lie on the same page (Tom)
2072 Fix user.c CommandCounterIncrement (Tom)
2073 Fix for AM/PM boundary problem in to_char() (Karel Zak)
2074 Fix TIME aggregate handling (Tom)
2075 Fix to_char() to avoid coredump on NULL input (Tom)
2076 Buffer fix (Tom)
2077 Fix for inserting/copying longer multibyte strings into char() data
2078     types (Tatsuo)
2079 Fix for crash of backend, on abort (Tom)
2080
2081      _________________________________________________________________
2082    
2083                                Release 7.0.2
2084                                       
2085      Release date: 2000-06-05
2086      
2087    This is a repackaging of 7.0.1 with added documentation.
2088      _________________________________________________________________
2089    
2090                          Migration to version 7.0.2
2091                                       
2092    A dump/restore is *not* required for those running 7.*.
2093      _________________________________________________________________
2094    
2095                                   Changes
2096                                       
2097 Added documentation to tarball.
2098
2099      _________________________________________________________________
2100    
2101                                Release 7.0.1
2102                                       
2103      Release date: 2000-06-01
2104      
2105    This is a cleanup release for 7.0.
2106      _________________________________________________________________
2107    
2108                          Migration to version 7.0.1
2109                                       
2110    A dump/restore is *not* required for those running 7.0.
2111      _________________________________________________________________
2112    
2113                                   Changes
2114                                       
2115 Fix many CLUSTER failures (Tom)
2116 Allow ALTER TABLE RENAME works on indexes (Tom)
2117 Fix plpgsql to handle datetime->timestamp and timespan->interval (Bruce)
2118 New configure --with-setproctitle switch to use setproctitle() (Marc, Bruce)
2119 Fix the off by one errors in ResultSet from 6.5.3, and more.
2120 jdbc ResultSet fixes (Joseph Shraibman)
2121 optimizer tunings (Tom)
2122 Fix create user for pgaccess
2123 Fix for UNLISTEN failure
2124 IRIX fixes (David Kaelbling)
2125 QNX fixes (Andreas Kardos)
2126 Reduce COPY IN lock level (Tom)
2127 Change libpqeasy to use PQconnectdb() style parameters (Bruce)
2128 Fix pg_dump to handle OID indexes (Tom)
2129 Fix small memory leak (Tom)
2130 Solaris fix for createdb/dropdb (Tatsuo)
2131 Fix for non-blocking connections (Alfred Perlstein)
2132 Fix improper recovery after RENAME TABLE failures (Tom)
2133 Copy pg_ident.conf.sample into /lib directory in install (Bruce)
2134 Add SJIS UDC (NEC selection IBM kanji) support (Eiji Tokuya)
2135 Fix too long syslog message (Tatsuo)
2136 Fix problem with quoted indexes that are too long (Tom)
2137 JDBC ResultSet.getTimestamp() fix (Gregory Krasnow & Floyd Marinescu)
2138 ecpg changes (Michael)
2139
2140      _________________________________________________________________
2141    
2142                                 Release 7.0
2143                                       
2144      Release date: 2000-05-08
2145      
2146    This release contains improvements in many areas, demonstrating the
2147    continued growth of PostgreSQL. There are more improvements and fixes
2148    in 7.0 than in any previous release. The developers have confidence
2149    that this is the best release yet; we do our best to put out only
2150    solid releases, and this one is no exception.
2151    
2152    Major changes in this release:
2153    
2154    Foreign Keys
2155           Foreign keys are now implemented, with the exception of PARTIAL
2156           MATCH foreign keys. Many users have been asking for this
2157           feature, and we are pleased to offer it.
2158           
2159    Optimizer Overhaul
2160           Continuing on work started a year ago, the optimizer has been
2161           improved, allowing better query plan selection and faster
2162           performance with less memory usage.
2163           
2164    Updated psql
2165           psql, our interactive terminal monitor, has been updated with a
2166           variety of new features. See the psql manual page for details.
2167           
2168    Join Syntax
2169           SQL92 join syntax is now supported, though only as INNER JOIN
2170           for this release. JOIN, NATURAL JOIN, JOIN/USING, and JOIN/ON
2171           are available, as are column correlation names.
2172      _________________________________________________________________
2173    
2174                           Migration to version 7.0
2175                                       
2176    A dump/restore using pg_dump is required for those wishing to migrate
2177    data from any previous release of PostgreSQL. For those upgrading from
2178    6.5.*, you may instead use pg_upgrade to upgrade to this release;
2179    however, a full dump/reload installation is always the most robust
2180    method for upgrades.
2181    
2182    Interface and compatibility issues to consider for the new release
2183    include:
2184    
2185      * The date/time types datetime and timespan have been superseded by
2186        the SQL92-defined types timestamp and interval. Although there has
2187        been some effort to ease the transition by allowing PostgreSQL to
2188        recognize the deprecated type names and translate them to the new
2189        type names, this mechanism may not be completely transparent to
2190        your existing application.
2191      * The optimizer has been substantially improved in the area of query
2192        cost estimation. In some cases, this will result in decreased
2193        query times as the optimizer makes a better choice for the
2194        preferred plan. However, in a small number of cases, usually
2195        involving pathological distributions of data, your query times may
2196        go up. If you are dealing with large amounts of data, you may want
2197        to check your queries to verify performance.
2198      * The JDBC and ODBC interfaces have been upgraded and extended.
2199      * The string function CHAR_LENGTH is now a native function. Previous
2200        versions translated this into a call to LENGTH, which could result
2201        in ambiguity with other types implementing LENGTH such as the
2202        geometric types.
2203      _________________________________________________________________
2204    
2205                                   Changes
2206                                       
2207 Bug Fixes
2208 ---------
2209 Prevent function calls exceeding maximum number of arguments (Tom)
2210 Improve CASE construct (Tom)
2211 Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
2212 Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
2213 Fix GROUP BY scan bug (Tom)
2214 Improvements in SQL grammar processing (Tom)
2215 Fix for views involved in INSERT ... SELECT ... (Tom)
2216 Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom)
2217 Fix for subselects in INSERT ... SELECT (Tom)
2218 Prevent INSERT ... SELECT ... ORDER BY (Tom)
2219 Fixes for relations greater than 2GB, including vacuum
2220 Improve propagating system table changes to other backends (Tom)
2221 Improve propagating user table changes to other backends (Tom)
2222 Fix handling of temp tables in complex situations (Bruce, Tom)
2223 Allow table locking at table open, improving concurrent reliability (Tom)
2224 Properly quote sequence names in pg_dump (Ross J. Reedstrom)
2225 Prevent DROP DATABASE while others accessing
2226 Prevent any rows from being returned by GROUP BY if no rows processed (Tom)
2227 Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom)
2228 Fix pg_upgrade so it works for MVCC (Tom)
2229 Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) > 1) (Tom)
2230 Fix for "f1 datetime DEFAULT 'now'"  (Tom)
2231 Fix problems with CURRENT_DATE used in DEFAULT (Tom)
2232 Allow comment-only lines, and ;;; lines too. (Tom)
2233 Improve recovery after failed disk writes, disk full (Hiroshi)
2234 Fix cases where table is mentioned in FROM but not joined (Tom)
2235 Allow HAVING clause without aggregate functions (Tom)
2236 Fix for "--" comment and no trailing newline, as seen in perl interface
2237 Improve pg_dump failure error reports (Bruce)
2238 Allow sorts and hashes to exceed 2GB file sizes (Tom)
2239 Fix for pg_dump dumping of inherited rules (Tom)
2240 Fix for NULL handling comparisons (Tom)
2241 Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi)
2242 Fix for dbname with dash
2243 Prevent DROP INDEX from interfering with other backends (Tom)
2244 Fix file descriptor leak in verify_password()
2245 Fix for "Unable to identify an operator =$" problem
2246 Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann)
2247 Fix for recursive exit call (Massimo)
2248 Fix for extra-long timezones (Jeroen van Vianen)
2249 Make pg_dump preserve primary key information (Peter E)
2250 Prevent databases with single quotes (Peter E)
2251 Prevent DROP DATABASE inside  transaction (Peter E)
2252 ecpg memory leak fixes (Stephen Birch)
2253 Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom)
2254 Y2K timestamp fix (Massimo)
2255 Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom)
2256 Fix for views with tables/columns containing spaces  (Tom)
2257 Prevent permissions on indexes (Peter E)
2258 Fix for spinlock stuck problem when error is generated (Hiroshi)
2259 Fix ipcclean on Linux
2260 Fix handling of NULL constraint conditions (Tom)
2261 Fix memory leak in odbc driver (Nick Gorham)
2262 Fix for permission check on UNION tables (Tom)
2263 Fix to allow SELECT 'a' LIKE 'a' (Tom)
2264 Fix for SELECT 1 + NULL (Tom)
2265 Fixes to CHAR
2266 Fix log() on numeric type (Tom)
2267 Deprecate ':' and ';' operators
2268 Allow vacuum of temporary tables
2269 Disallow inherited columns with the same name as new columns
2270 Recover or force failure when disk space is exhausted (Hiroshi)
2271 Fix INSERT INTO ... SELECT with AS columns matching result columns
2272 Fix INSERT ... SELECT ... GROUP BY groups by target columns not source columns
2273 (Tom)
2274 Fix CREATE TABLE test (a char(5) DEFAULT text '', b int4) with INSERT (Tom)
2275 Fix UNION with LIMIT
2276 Fix CREATE TABLE x AS SELECT 1 UNION SELECT 2
2277 Fix CREATE TABLE test(col char(2) DEFAULT user)
2278 Fix mismatched types in CREATE TABLE ... DEFAULT
2279 Fix SELECT * FROM pg_class where oid in (0,-1)
2280 Fix SELECT COUNT('asdf') FROM pg_class WHERE oid=12
2281 Prevent user who can create databases can modifying pg_database table (Peter E)
2282 Fix btree to give a useful elog when key > 1/2 (page - overhead) (Tom)
2283 Fix INSERT of 0.0 into DECIMAL(4,4) field (Tom)
2284
2285 Enhancements
2286 ------------
2287 New CLI interface include file sqlcli.h, based on SQL3/SQL98
2288 Remove all limits on query length, row length limit still exists (Tom)
2289 Update jdbc protocol to 2.0 (Jens Glaser <jens@jens.de>)
2290 Add TRUNCATE command to quickly truncate relation (Mike Mascari)
2291 Fix to give super user and createdb user proper update catalog rights (Peter E)
2292 Allow ecpg bool variables to have NULL values (Christof)
2293 Issue ecpg error if NULL value for variable with no NULL indicator (Christof)
2294 Allow ^C to cancel COPY command (Massimo)
2295 Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo)
2296 Function name overloading for dynamically-loaded C functions (Frankpitt)
2297 Add CmdTuples() to libpq++(Vince)
2298 New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan)
2299 Allow CREATE FUNCTION/WITH clause to be used for all language types
2300 configure --enable-debug adds -g (Peter E)
2301 configure --disable-debug removes -g (Peter E)
2302 Allow more complex default expressions (Tom)
2303 First real FOREIGN KEY constraint trigger functionality (Jan)
2304 Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan)
2305 Add FOREIGN KEY ... MATCH <unspecified> referential actions (Don Baccus)
2306 Allow WHERE restriction on ctid (physical heap location) (Hiroshi)
2307 Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
2308 Change pgeasy connectdb() parameter ordering (Bruce)
2309 Require SELECT DISTINCT target list to have all ORDER BY columns (Tom)
2310 Add Oracle's COMMENT ON command (Mike Mascari <mascarim@yahoo.com>)
2311 libpq's PQsetNoticeProcessor function now returns previous hook(Peter E)
2312 Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
2313 Make USING in COPY optional (Bruce)
2314 Allow subselects in the target list (Tom)
2315 Allow subselects on the left side of comparison operators (Tom)
2316 New parallel regression test (Jan)
2317 Change backend-side COPY to write files with permissions 644 not 666 (Tom)
2318 Force permissions on PGDATA directory to be secure, even if it exists (Tom)
2319 Added psql LASTOID variable to return last inserted oid (Peter E)
2320 Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom)
2321 Add permissions check for vacuum (Peter E)
2322 New libpq functions to allow asynchronous connections: PQconnectStart(),
2323    PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(),
2324    PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
2325 New libpq PQsetenv() function (Ewan Mellor)
2326 create/alter user extension (Peter E)
2327 New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo)
2328 New scripts for create/drop user/db (Peter E)
2329 Major psql overhaul (Peter E)
2330 Add const to libpq interface (Peter E)
2331 New libpq function PQoidValue (Peter E)
2332 Show specific non-aggregate causing problem with GROUP BY (Tom)
2333 Make changes to pg_shadow recreate pg_pwd file (Peter E)
2334 Add aggregate(DISTINCT ...) (Tom)
2335 Allow flag to control COPY input/output of NULLs (Peter E)
2336 Make postgres user have a password by default (Peter E)
2337 Add CREATE/ALTER/DROP GROUP (Peter E)
2338 All administration scripts now support --long options (Peter E, Karel)
2339 Vacuumdb script now supports --all option (Peter E)
2340 ecpg new portable FETCH syntax
2341 Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF
2342         and EXEC SQL ENDIF directives
2343 Add pg_ctl script to control backend start-up (Tatsuo)
2344 Add postmaster.opts.default file to store start-up flags (Tatsuo)
2345 Allow --with-mb=SQL_ASCII
2346 Increase maximum number of index keys to 16 (Bruce)
2347 Increase maximum number of function arguments to 16 (Bruce)
2348 Allow configuration of maximum number of index keys and arguments (Bruce)
2349 Allow unprivileged users to change their passwords (Peter E)
2350 Password authentication enabled; required for new users (Peter E)
2351 Disallow dropping a user who owns a database (Peter E)
2352 Change initdb option --with-mb to --enable-multibyte
2353 Add option for initdb to prompts for superuser password (Peter E)
2354 Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom)
2355 Updated user interfaces on initdb, initlocation, pg_dump, ipcclean (Peter E)
2356 New pg_char_to_encoding() and pg_encoding_to_char() functions (Tatsuo)
2357 Libpq non-blocking mode (Alfred Perlstein)
2358 Improve conversion of types in casts that don't specify a length
2359 New plperl internal programming language (Mark Hollomon)
2360 Allow COPY IN to read file that do not end with a newline (Tom)
2361 Indicate when long identifiers are truncated (Tom)
2362 Allow aggregates to use type equivalency (Peter E)
2363 Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number()
2364         conversion functions (Karel Zak <zakkr@zf.jcu.cz>)
2365 Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
2366 Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
2367 Add NUMERIC and int8 types to ODBC
2368 Improve EXPLAIN results for Append, Group, Agg, Unique (Tom)
2369 Add ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo)
2370 Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi)
2371 Enable backward sequential scan even after reaching EOF (Hiroshi)
2372 Add btree indexing of boolean values, >= and <= (Don Baccus)
2373 Print current line number when COPY FROM fails (Massimo)
2374 Recognize POSIX time zone e.g. "PST+8" and "GMT-8" (Thomas)
2375 Add DEC as synonym for DECIMAL (Thomas)
2376 Add SESSION_USER as SQL92 keyword, same as CURRENT_USER (Thomas)
2377 Implement SQL92 column aliases (aka correlation names) (Thomas)
2378 Implement SQL92 join syntax (Thomas)
2379 Make INTERVAL reserved word allowed as a column identifier (Thomas)
2380 Implement REINDEX command (Hiroshi)
2381 Accept ALL in aggregate function SUM(ALL col) (Tom)
2382 Prevent GROUP BY from using column aliases (Tom)
2383 New psql \encoding option (Tatsuo)
2384 Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi)
2385 Allow negation of a negative number in all cases
2386 Add ecpg descriptors (Christof, Michael)
2387 Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl
2388 Allow casts with length, like foo::char(8)
2389 New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo)
2390 Add support for SJIS user defined characters (Tatsuo)
2391 Larger views/rules supported
2392 Make libpq's PQconndefaults() thread-safe (Tom)
2393 Disable // as comment to be ANSI conforming, should use -- (Tom)
2394 Allow column aliases on views CREATE VIEW name (collist)
2395 Fixes for views with subqueries (Tom)
2396 Allow UPDATE table SET fld = (SELECT ...) (Tom)
2397 SET command options no longer require quotes
2398 Update pgaccess to 0.98.6
2399 New SET SEED command
2400 New pg_options.sample file
2401 New SET FSYNC command (Massimo)
2402 Allow pg_descriptions when creating tables
2403 Allow pg_descriptions when creating types, columns, and functions
2404 Allow psql \copy to allow delimiters (Peter E)
2405 Allow psql to print nulls as distinct from "" [null] (Peter E)
2406
2407 Types
2408 -----
2409 Many array fixes (Tom)
2410 Allow bare column names to be subscripted as arrays (Tom)
2411 Improve type casting of int and float constants (Tom)
2412 Cleanups for int8 inputs, range checking, and type conversion (Tom)
2413 Fix for SELECT timespan('21:11:26'::time) (Tom)
2414 netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0 (Oleg Sharoiko)
2415 Add btree index on NUMERIC (Jan)
2416 Perl fix for large objects containing NUL characters (Douglas Thomson)
2417 ODBC fix for for large objects (free)
2418 Fix indexing of cidr data type
2419 Fix for Ethernet MAC addresses (macaddr type) comparisons
2420 Fix for date/time types when overflows happened in computations (Tom)
2421 Allow array on int8 (Peter E)
2422 Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom)
2423 Allow NUMERIC arrays
2424 Fix bugs in NUMERIC ceil() and floor() functions (Tom)
2425 Make char_length()/octet_length including trailing blanks (Tom)
2426 Made abstime/reltime use int4 instead of time_t (Peter E)
2427 New lztext data type for compressed text fields
2428 Revise code to handle coercion of int and float constants (Tom)
2429 Start at new code to implement a BIT and BIT VARYING type (Adriaan Joubert)
2430 NUMERIC now accepts scientific notation (Tom)
2431 NUMERIC to int4 rounds (Tom)
2432 Convert float4/8 to NUMERIC properly (Tom)
2433 Allow type conversion with NUMERIC (Thomas)
2434 Make ISO date style (2000-02-16 09:33) the default (Thomas)
2435 Add NATIONAL CHAR [ VARYING ] (Thomas)
2436 Allow NUMERIC round and trunc to accept negative scales (Tom)
2437 New TIME WITH TIME ZONE type (Thomas)
2438 Add MAX()/MIN() on time type (Thomas)
2439 Add abs(), mod(), fac() for int8 (Thomas)
2440 Rename functions to round(), sqrt(), cbrt(), pow() for float8 (Thomas)
2441 Add transcendental math functions (e.g. sin(), acos()) for float8 (Thomas)
2442 Add exp() and ln() for NUMERIC type
2443 Rename NUMERIC power() to pow() (Thomas)
2444 Improved TRANSLATE() function (Edwin Ramirez, Tom)
2445 Allow X=-Y operators  (Tom)
2446 Allow SELECT float8(COUNT(*))/(SELECT COUNT(*) FROM t) FROM t GROUP BY f1; (Tom
2447 )
2448 Allow LOCALE to use indexes in regular expression searches (Tom)
2449 Allow creation of functional indexes to use default types
2450
2451 Performance
2452 -----------
2453 Prevent exponential space consumption with many AND's and OR's (Tom)
2454 Collect attribute selectivity values for system columns (Tom)
2455 Reduce memory usage of aggregates (Tom)
2456 Fix for LIKE optimization to use indexes with multibyte encodings (Tom)
2457 Fix r-tree index optimizer selectivity (Thomas)
2458 Improve optimizer selectivity computations and functions (Tom)
2459 Optimize btree searching for cases where many equal keys exist (Tom)
2460 Enable fast LIKE index processing only if index present (Tom)
2461 Re-use free space on index pages with duplicates (Tom)
2462 Improve hash join processing (Tom)
2463 Prevent descending sort if result is already sorted(Hiroshi)
2464 Allow commuting of index scan query qualifications (Tom)
2465 Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom)
2466 Allocate large memory requests in fix-sized chunks for performance (Tom)
2467 Fix vacuum's performance by reducing memory allocation requests (Tom)
2468 Implement constant-expression simplification (Bernard Frankpitt, Tom)
2469 Use secondary columns to be used to determine start of index scan (Hiroshi)
2470 Prevent quadruple use of disk space when doing internal sorting (Tom)
2471 Faster sorting by calling fewer functions (Tom)
2472 Create system indexes to match all system caches (Bruce, Hiroshi)
2473 Make system caches use system indexes (Bruce)
2474 Make all system indexes unique (Bruce)
2475 Improve pg_statistics management for VACUUM speed improvement (Tom)
2476 Flush backend cache less frequently (Tom, Hiroshi)
2477 COPY now reuses previous memory allocation, improving performance (Tom)
2478 Improve optimization cost estimation (Tom)
2479 Improve optimizer estimate of range queries x > lowbound AND x < highbound (Tom
2480 )
2481 Use DNF instead of CNF where appropriate (Tom, Taral)
2482 Further cleanup for OR-of-AND WHERE-clauses (Tom)
2483 Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom)
2484 Smarter optimizer computations for random index page access (Tom)
2485 New SET variable to control optimizer costs (Tom)
2486 Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
2487 Reduce optimizer internal housekeeping of join paths for speedup (Tom)
2488 Major subquery speedup (Tom)
2489 Fewer fsync writes when fsync is not disabled (Tom)
2490 Improved LIKE optimizer estimates (Tom)
2491 Prevent fsync in SELECT-only queries (Vadim)
2492 Make index creation use psort code, because it is now faster (Tom)
2493 Allow creation of sort temp tables > 1 Gig
2494
2495 Source Tree Changes
2496 -------------------
2497 Fix for linux PPC compile
2498 New generic expression-tree-walker subroutine (Tom)
2499 Change form() to varargform() to prevent portability problems
2500 Improved range checking for large integers on Alphas
2501 Clean up #include in /include directory (Bruce)
2502 Add scripts for checking includes (Bruce)
2503 Remove un-needed #include's from *.c files (Bruce)
2504 Change #include's to use <> and "" as appropriate (Bruce)
2505 Enable WIN32 compilation of libpq
2506 Alpha spinlock fix from Uncle George <gatgul@voicenet.com>
2507 Overhaul of optimizer data structures (Tom)
2508 Fix to cygipc library (Yutaka Tanida)
2509 Allow pgsql to work on newer Cygwin snapshots (Dan)
2510 New catalog version number (Tom)
2511 Add Linux ARM
2512 Rename heap_replace to heap_update
2513 Update for QNX (Dr. Andreas Kardos)
2514 New platform-specific regression handling (Tom)
2515 Rename oid8 -> oidvector and int28 -> int2vector (Bruce)
2516 Included all yacc and lex files into the distribution (Peter E.)
2517 Remove lextest, no longer needed (Peter E)
2518 Fix for libpq and psql on Win32 (Magnus)
2519 Internally change datetime and timespan into timestamp and interval (Thomas)
2520 Fix for plpgsql on BSD/OS
2521 Add SQL_ASCII test case to the regression test (Tatsuo)
2522 configure --with-mb now deprecated (Tatsuo)
2523 NT fixes
2524 NetBSD fixes (Johnny C. Lam <lamj@stat.cmu.edu>)
2525 Fixes for Alpha compiles
2526 New multibyte encodings
2527
2528      _________________________________________________________________
2529    
2530                                Release 6.5.3
2531                                       
2532      Release date: 1999-10-13
2533      
2534    This is basically a cleanup release for 6.5.2. We have added a new
2535    PgAccess that was missing in 6.5.2, and installed an NT-specific fix.
2536      _________________________________________________________________
2537    
2538                          Migration to version 6.5.3
2539                                       
2540    A dump/restore is *not* required for those running 6.5.*.
2541      _________________________________________________________________
2542    
2543                                   Changes
2544                                       
2545 Updated version of pgaccess 0.98
2546 NT-specific patch
2547 Fix dumping rules on inherited tables
2548
2549      _________________________________________________________________
2550    
2551                                Release 6.5.2
2552                                       
2553      Release date: 1999-09-15
2554      
2555    This is basically a cleanup release for 6.5.1. We have fixed a variety
2556    of problems reported by 6.5.1 users.
2557      _________________________________________________________________
2558    
2559                          Migration to version 6.5.2
2560                                       
2561    A dump/restore is *not* required for those running 6.5.*.
2562      _________________________________________________________________
2563    
2564                                   Changes
2565                                       
2566 subselect+CASE fixes(Tom)
2567 Add SHLIB_LINK setting for solaris_i386 and solaris_sparc ports(Daren Sefcik)
2568 Fixes for CASE in WHERE join clauses(Tom)
2569 Fix BTScan abort(Tom)
2570 Repair the check for redundant UNIQUE and PRIMARY KEY indexes(Thomas)
2571 Improve it so that it checks for multicolumn constraints(Thomas)
2572 Fix for Win32 making problem with MB enabled(Hiroki Kataoka)
2573 Allow BSD yacc and bison to compile pl code(Bruce)
2574 Fix SET NAMES working
2575 int8 fixes(Thomas)
2576 Fix vacuum's memory consumption(Hiroshi,Tatsuo)
2577 Reduce the total memory consumption of vacuum(Tom)
2578 Fix for timestamp(datetime)
2579 Rule deparsing bugfixes(Tom)
2580 Fix quoting problems in mkMakefile.tcldefs.sh.in and mkMakefile.tkdefs.sh.in(To
2581 m)
2582 This is to re-use space on index pages freed by vacuum(Vadim)
2583 document -x for pg_dump(Bruce)
2584 Fix for unary operators in rule deparser(Tom)
2585 Comment out FileUnlink of excess segments during mdtruncate()(Tom)
2586 IRIX linking fix from Yu Cao >yucao@falcon.kla-tencor.com<
2587 Repair logic error in LIKE: should not return LIKE_ABORT
2588    when reach end of pattern before end of text(Tom)
2589 Repair incorrect cleanup of heap memory allocation during transaction abort(Tom
2590 )
2591 Updated version of pgaccess 0.98
2592
2593      _________________________________________________________________
2594    
2595                                Release 6.5.1
2596                                       
2597      Release date: 1999-07-15
2598      
2599    This is basically a cleanup release for 6.5. We have fixed a variety
2600    of problems reported by 6.5 users.
2601      _________________________________________________________________
2602    
2603                          Migration to version 6.5.1
2604                                       
2605    A dump/restore is *not* required for those running 6.5.
2606      _________________________________________________________________
2607    
2608                                   Changes
2609                                       
2610 Add NT README file
2611 Portability fixes for linux_ppc, IRIX, linux_alpha, OpenBSD, alpha
2612 Remove QUERY_LIMIT, use SELECT...LIMIT
2613 Fix for EXPLAIN on inheritance(Tom)
2614 Patch to allow vacuum on multisegment tables(Hiroshi)
2615 R-Tree optimizer selectivity fix(Tom)
2616 ACL file descriptor leak fix(Atsushi Ogawa)
2617 New expresssion subtree code(Tom)
2618 Avoid disk writes for read-only transactions(Vadim)
2619 Fix for removal of temp tables if last transaction was aborted(Bruce)
2620 Fix to prevent too large tuple from being created(Bruce)
2621 plpgsql fixes
2622 Allow port numbers 32k - 64k(Bruce)
2623 Add ^ precidence(Bruce)
2624 Rename sort files called pg_temp to pg_sorttemp(Bruce)
2625 Fix for microseconds in time values(Tom)
2626 Tutorial source cleanup
2627 New linux_m68k port
2628 Fix for sorting of NULL's in some cases(Tom)
2629 Shared library dependencies fixed (Tom)
2630 Fixed glitches affecting GROUP BY in subselects(Tom)
2631 Fix some compiler warnings (Tomoaki Nishiyama)
2632 Add Win1250 (Czech) support (Pavel Behal)
2633
2634      _________________________________________________________________
2635    
2636                                 Release 6.5
2637                                       
2638      Release date: 1999-06-09
2639      
2640    This release marks a major step in the development team's mastery of
2641    the source code we inherited from Berkeley. You will see we are now
2642    easily adding major features, thanks to the increasing size and
2643    experience of our world-wide development team.
2644    
2645    Here is a brief summary of the more notable changes:
2646    
2647    Multiversion concurrency control(MVCC)
2648           This removes our old table-level locking, and replaces it with
2649           a locking system that is superior to most commercial database
2650           systems. In a traditional system, each row that is modified is
2651           locked until committed, preventing reads by other users. MVCC
2652           uses the natural multiversion nature of PostgreSQL to allow
2653           readers to continue reading consistent data during writer
2654           activity. Writers continue to use the compact pg_log
2655           transaction system. This is all performed without having to
2656           allocate a lock for every row like traditional database
2657           systems. So, basically, we no longer are restricted by simple
2658           table-level locking; we have something better than row-level
2659           locking.
2660           
2661    Hot backups from pg_dump
2662           pg_dump takes advantage of the new MVCC features to give a
2663           consistent database dump/backup while the database stays online
2664           and available for queries.
2665           
2666    Numeric data type
2667           We now have a true numeric data type, with user-specified
2668           precision.
2669           
2670    Temporary tables
2671           Temporary tables are guaranteed to have unique names within a
2672           database session, and are destroyed on session exit.
2673           
2674    New SQL features
2675           We now have CASE, INTERSECT, and EXCEPT statement support. We
2676           have new LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL, SELECT
2677           ... FOR UPDATE, and an improved LOCK TABLE command.
2678           
2679    Speedups
2680           We continue to speed up PostgreSQL, thanks to the variety of
2681           talents within our team. We have sped up memory allocation,
2682           optimization, table joins, and row transfer routines.
2683           
2684    Ports
2685           We continue to expand our port list, this time including
2686           Windows NT/ix86 and NetBSD/arm32.
2687           
2688    Interfaces
2689           Most interfaces have new versions, and existing functionality
2690           has been improved.
2691           
2692    Documentation
2693           New and updated material is present throughout the
2694           documentation. New FAQs have been contributed for SGI and AIX
2695           platforms. The Tutorial has introductory information on SQL
2696           from Stefan Simkovics. For the User's Guide, there are
2697           reference pages covering the postmaster and more utility
2698           programs, and a new appendix contains details on date/time
2699           behavior. The Administrator's Guide has a new chapter on
2700           troubleshooting from Tom Lane. And the Programmer's Guide has a
2701           description of query processing, also from Stefan, and details
2702           on obtaining the PostgreSQL source tree via anonymous CVS and
2703           CVSup.
2704      _________________________________________________________________
2705    
2706                           Migration to version 6.5
2707                                       
2708    A dump/restore using pg_dump is required for those wishing to migrate
2709    data from any previous release of PostgreSQL. pg_upgrade can *not* be
2710    used to upgrade to this release because the on-disk structure of the
2711    tables has changed compared to previous releases.
2712    
2713    The new Multiversion Concurrency Control (MVCC) features can give
2714    somewhat different behaviors in multiuser environments. *Read and
2715    understand the following section to ensure that your existing
2716    applications will give you the behavior you need.*
2717      _________________________________________________________________
2718    
2719 Multiversion Concurrency Control
2720
2721    Because readers in 6.5 don't lock data, regardless of transaction
2722    isolation level, data read by one transaction can be overwritten by
2723    another. In other words, if a row is returned by "SELECT" it doesn't
2724    mean that this row really exists at the time it is returned (i.e.
2725    sometime after the statement or transaction began) nor that the row is
2726    protected from being deleted or updated by concurrent transactions
2727    before the current transaction does a commit or rollback.
2728    
2729    To ensure the actual existence of a row and protect it against
2730    concurrent updates one must use "SELECT FOR UPDATE" or an appropriate
2731    "LOCK TABLE" statement. This should be taken into account when porting
2732    applications from previous releases of PostgreSQL and other
2733    environments.
2734    
2735    Keep the above in mind if you are using "contrib/refint.*" triggers
2736    for referential integrity. Additional techniques are required now. One
2737    way is to use "LOCK parent_table IN SHARE ROW EXCLUSIVE MODE" command
2738    if a transaction is going to update/delete a primary key and use "LOCK
2739    parent_table IN SHARE MODE" command if a transaction is going to
2740    update/insert a foreign key.
2741    
2742      Note: Note that if you run a transaction in SERIALIZABLE mode then
2743      you must execute the "LOCK" commands above before execution of any
2744      DML statement ("SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO") in the
2745      transaction.
2746      
2747    These inconveniences will disappear in the future when the ability to
2748    read dirty (uncommitted) data (regardless of isolation level) and true
2749    referential integrity will be implemented.
2750      _________________________________________________________________
2751    
2752                                   Changes
2753                                       
2754 Bug Fixes
2755 ---------
2756 Fix text<->float8 and text<->float4 conversion functions(Thomas)
2757 Fix for creating tables with mixed-case constraints(Billy)
2758 Change exp()/pow() behavior to generate error on underflow/overflow(Jan)
2759 Fix bug in pg_dump -z
2760 Memory overrun cleanups(Tatsuo)
2761 Fix for lo_import crash(Tatsuo)
2762 Adjust handling of data type names to suppress double quotes(Thomas)
2763 Use type coercion for matching columns and DEFAULT(Thomas)
2764 Fix deadlock so it only checks once after one second of sleep(Bruce)
2765 Fixes for aggregates and PL/pgsql(Hiroshi)
2766 Fix for subquery crash(Vadim)
2767 Fix for libpq function PQfnumber and case-insensitive names(Bahman Rafatjoo)
2768 Fix for large object write-in-middle, no extra block, memory consumption(Tatsuo
2769 )
2770 Fix for pg_dump -d or -D and  quote special characters in INSERT
2771 Repair serious problems with dynahash(Tom)
2772 Fix INET/CIDR portability problems
2773 Fix problem with selectivity error in ALTER TABLE ADD COLUMN(Bruce)
2774 Fix executor so mergejoin of different column types works(Tom)
2775 Fix for Alpha OR selectivity bug
2776 Fix OR index selectivity problem(Bruce)
2777 Fix so \d shows proper length for char()/varchar()(Ryan)
2778 Fix tutorial code(Clark)
2779 Improve destroyuser checking(Oliver)
2780 Fix for Kerberos(Rodney McDuff)
2781 Fix for dropping database while dirty buffers(Bruce)
2782 Fix so sequence nextval() can be case-sensitive(Bruce)
2783 Fix !!= operator
2784 Drop buffers before destroying database files(Bruce)
2785 Fix case where executor evaluates functions twice(Tatsuo)
2786 Allow sequence nextval actions to be case-sensitive(Bruce)
2787 Fix optimizer indexing not working for negative numbers(Bruce)
2788 Fix for memory leak in executor with fjIsNull
2789 Fix for aggregate memory leaks(Erik Riedel)
2790 Allow username containing a dash GRANT permissions
2791 Cleanup of NULL in inet types
2792 Clean up system table bugs(Tom)
2793 Fix problems of PAGER and \? command(Masaaki Sakaida)
2794 Reduce default multisegment file size limit to 1GB(Peter)
2795 Fix for dumping of CREATE OPERATOR(Tom)
2796 Fix for backward scanning of cursors(Hiroshi Inoue)
2797 Fix for COPY FROM STDIN when using \i(Tom)
2798 Fix for subselect is compared inside an expression(Jan)
2799 Fix handling of error reporting while returning rows(Tom)
2800 Fix problems with reference to array types(Tom,Jan)
2801 Prevent UPDATE SET oid(Jan)
2802 Fix pg_dump so -t option can handle case-sensitive tablenames
2803 Fixes for GROUP BY in special cases(Tom, Jan)
2804 Fix for memory leak in failed queries(Tom)
2805 DEFAULT now supports mixed-case identifiers(Tom)
2806 Fix for multisegment uses of DROP/RENAME table, indexes(Ole Gjerde)
2807 Disable use of pg_dump with both -o and -d options(Bruce)
2808 Allow pg_dump to properly dump GROUP permissions(Bruce)
2809 Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan)
2810 Fix for computations in views(Jan)
2811 Fix for aggregates on array indexes(Tom)
2812 Fix for DEFAULT handles single quotes in value requiring too many quotes
2813 Fix security problem with non-super users importing/exporting large objects(Tom
2814 )
2815 Rollback of transaction that creates table cleaned up properly(Tom)
2816 Fix to allow long table and column names to generate proper serial names(Tom)
2817
2818 Enhancements
2819 ------------
2820 Add "vacuumdb" utility
2821 Speed up libpq by allocating memory better(Tom)
2822 EXPLAIN all indexes used(Tom)
2823 Implement CASE, COALESCE, NULLIF  expression(Thomas)
2824 New pg_dump table output format(Constantin)
2825 Add string min()/max() functions(Thomas)
2826 Extend new type coercion techniques to aggregates(Thomas)
2827 New moddatetime contrib(Terry)
2828 Update to pgaccess 0.96(Constantin)
2829 Add routines for single-byte "char" type(Thomas)
2830 Improved substr() function(Thomas)
2831 Improved multibyte handling(Tatsuo)
2832 Multiversion concurrency control/MVCC(Vadim)
2833 New Serialized mode(Vadim)
2834 Fix for tables over 2gigs(Peter)
2835 New SET TRANSACTION ISOLATION LEVEL(Vadim)
2836 New LOCK TABLE IN ... MODE(Vadim)
2837 Update ODBC driver(Byron)
2838 New NUMERIC data type(Jan)
2839 New SELECT FOR UPDATE(Vadim)
2840 Handle "NaN" and "Infinity" for input values(Jan)
2841 Improved date/year handling(Thomas)
2842 Improved handling of backend connections(Magnus)
2843 New options ELOG_TIMESTAMPS and USE_SYSLOG options for log files(Massimo)
2844 New TCL_ARRAYS option(Massimo)
2845 New INTERSECT and EXCEPT(Stefan)
2846 New pg_index.indisprimary for primary key tracking(D'Arcy)
2847 New pg_dump option to allow dropping of tables before creation(Brook)
2848 Speedup of row output routines(Tom)
2849 New READ COMMITTED isolation level(Vadim)
2850 New TEMP tables/indexes(Bruce)
2851 Prevent sorting if result is already sorted(Jan)
2852 New memory allocation optimization(Jan)
2853 Allow psql to do \p\g(Bruce)
2854 Allow multiple rule actions(Jan)
2855 Added LIMIT/OFFSET functionality(Jan)
2856 Improve optimizer when joining a large number of tables(Bruce)
2857 New intro to SQL from S. Simkovics' Master's Thesis (Stefan, Thomas)
2858 New intro to backend processing from S. Simkovics' Master's Thesis (Stefan)
2859 Improved int8 support(Ryan Bradetich, Thomas, Tom)
2860 New routines to convert between int8 and text/varchar types(Thomas)
2861 New bushy plans, where meta-tables are joined(Bruce)
2862 Enable right-hand queries by default(Bruce)
2863 Allow reliable maximum number of backends to be set at configure time
2864       (--with-maxbackends and postmaster switch (-N backends))(Tom)
2865 GEQO default now 10 tables because of optimizer speedups(Tom)
2866 Allow NULL=Var for MS-SQL portability(Michael, Bruce)
2867 Modify contrib check_primary_key() so either "automatic" or "dependent"(Anand)
2868 Allow psql \d on a view show query(Ryan)
2869 Speedup for LIKE(Bruce)
2870 Ecpg fixes/features, see src/interfaces/ecpg/ChangeLog file(Michael)
2871 JDBC fixes/features, see src/interfaces/jdbc/CHANGELOG(Peter)
2872 Make % operator have precedence like /(Bruce)
2873 Add new postgres -O option to allow system table structure changes(Bruce)
2874 Update contrib/pginterface/findoidjoins script(Tom)
2875 Major speedup in vacuum of deleted rows with indexes(Vadim)
2876 Allow non-SQL functions to run different versions based on arguments(Tom)
2877 Add -E option that shows actual queries sent by \dt and friends(Masaaki Sakaida
2878 )
2879 Add version number in start-up banners for psql(Masaaki Sakaida)
2880 New contrib/vacuumlo removes large objects not referenced(Peter)
2881 New initialization for table sizes so non-vacuumed tables perform better(Tom)
2882 Improve error messages when a connection is rejected(Tom)
2883 Support for arrays of char() and varchar() fields(Massimo)
2884 Overhaul of hash code to increase reliability and performance(Tom)
2885 Update to PyGreSQL 2.4(D'Arcy)
2886 Changed debug options so -d4 and -d5 produce different node displays(Jan)
2887 New pg_options: pretty_plan, pretty_parse, pretty_rewritten(Jan)
2888 Better optimization statistics for system table access(Tom)
2889 Better handling of non-default block sizes(Massimo)
2890 Improve GEQO optimizer memory consumption(Tom)
2891 UNION now suppports ORDER BY of columns not in target list(Jan)
2892 Major libpq++ improvements(Vince Vielhaber)
2893 pg_dump now uses -z(ACL's) as default(Bruce)
2894 backend cache, memory speedups(Tom)
2895 have pg_dump do everything in one snapshot transaction(Vadim)
2896 fix for large object memory leakage, fix for pg_dumping(Tom)
2897 INET type now respects netmask for comparisons
2898 Make VACUUM ANALYZE only use a readlock(Vadim)
2899 Allow VIEWs on UNIONS(Jan)
2900 pg_dump now can generate consistent snapshots on active databases(Vadim)
2901
2902 Source Tree Changes
2903 -------------------
2904 Improve port matching(Tom)
2905 Portability fixes for SunOS
2906 Add NT/Win32 backend port and enable dynamic loading(Magnus and Daniel Horak)
2907 New port to Cobalt Qube(Mips) running Linux(Tatsuo)
2908 Port to NetBSD/m68k(Mr. Mutsuki Nakajima)
2909 Port to NetBSD/sun3(Mr. Mutsuki Nakajima)
2910 Port to NetBSD/macppc(Toshimi Aoki)
2911 Fix for tcl/tk configuration(Vince)
2912 Removed CURRENT keyword for rule queries(Jan)
2913 NT dynamic loading now works(Daniel Horak)
2914 Add ARM32 support(Andrew McMurry)
2915 Better support for HP-UX 11 and UnixWare
2916 Improve file handling to be more uniform, prevent file descriptor leak(Tom)
2917 New install commands for plpgsql(Jan)
2918
2919      _________________________________________________________________
2920    
2921                                Release 6.4.2
2922                                       
2923      Release date: 1998-12-20
2924      
2925    The 6.4.1 release was improperly packaged. This also has one
2926    additional bug fix.
2927      _________________________________________________________________
2928    
2929                          Migration to version 6.4.2
2930                                       
2931    A dump/restore is *not* required for those running 6.4.*.
2932      _________________________________________________________________
2933    
2934                                   Changes
2935                                       
2936 Fix for datetime constant problem on some platforms(Thomas)
2937      _________________________________________________________________
2938    
2939                                Release 6.4.1
2940                                       
2941      Release date: 1998-12-18
2942      
2943    This is basically a cleanup release for 6.4. We have fixed a variety
2944    of problems reported by 6.4 users.
2945      _________________________________________________________________
2946    
2947                          Migration to version 6.4.1
2948                                       
2949    A dump/restore is *not* required for those running 6.4.
2950      _________________________________________________________________
2951    
2952                                   Changes
2953                                       
2954 Add pg_dump -N flag to force double quotes around identifiers.  This is
2955         the default(Thomas)
2956 Fix for NOT in where clause causing crash(Bruce)
2957 EXPLAIN VERBOSE coredump fix(Vadim)
2958 Fix shared-library problems on Linux
2959 Fix test for table existance to allow mixed-case and whitespace in
2960         the table name(Thomas)
2961 Fix a couple of pg_dump bugs
2962 Configure matches template/.similar entries better(Tom)
2963 Change builtin function names from SPI_* to spi_*
2964 OR WHERE clause fix(Vadim)
2965 Fixes for mixed-case table names(Billy)
2966 contrib/linux/postgres.init.csh/sh fix(Thomas)
2967 libpq memory overrun fix
2968 SunOS fixes(Tom)
2969 Change exp() behavior to generate error on underflow(Thomas)
2970 pg_dump fixes for memory leak, inheritance constraints, layout change
2971 update pgaccess to 0.93
2972 Fix prototype for 64-bit platforms
2973 Multibyte fixes(Tatsuo)
2974 New ecpg man page
2975 Fix memory overruns(Tatsuo)
2976 Fix for lo_import() crash(Bruce)
2977 Better search for install program(Tom)
2978 Timezone fixes(Tom)
2979 HP-UX fixes(Tom)
2980 Use implicit type coercion for matching DEFAULT values(Thomas)
2981 Add routines to help with single-byte (internal) character type(Thomas)
2982 Compilation of libpq for Win32 fixes(Magnus)
2983 Upgrade to PyGreSQL 2.2(D'Arcy)
2984      _________________________________________________________________
2985    
2986                                 Release 6.4
2987                                       
2988      Release date: 1998-10-30
2989      
2990    There are *many* new features and improvements in this release. Thanks
2991    to our developers and maintainers, nearly every aspect of the system
2992    has received some attention since the previous release. Here is a
2993    brief, incomplete summary:
2994    
2995      * Views and rules are now functional thanks to extensive new code in
2996        the rewrite rules system from Jan Wieck. He also wrote a chapter
2997        on it for the Programmer's Guide.
2998      * Jan also contributed a second procedural language, PL/pgSQL, to go
2999        with the original PL/pgTCL procedural language he contributed last
3000        release.
3001      * We have optional multiple-byte character set support from Tatsuo
3002        Ishii to complement our existing locale support.
3003      * Client/server communications has been cleaned up, with better
3004        support for asynchronous messages and interrupts thanks to Tom
3005        Lane.
3006      * The parser will now perform automatic type coercion to match
3007        arguments to available operators and functions, and to match
3008        columns and expressions with target columns. This uses a generic
3009        mechanism which supports the type extensibility features of
3010        PostgreSQL. There is a new chapter in the User's Guide which
3011        covers this topic.
3012      * Three new data types have been added. Two types, inet and cidr,
3013        support various forms of IP network, subnet, and machine
3014        addressing. There is now an 8-byte integer type available on some
3015        platforms. See the chapter on data types in the User's Guide for
3016        details. A fourth type, serial, is now supported by the parser as
3017        an amalgam of the int4 type, a sequence, and a unique index.
3018      * Several more SQL92-compatible syntax features have been added,
3019        including "INSERT DEFAULT VALUES"
3020      * The automatic configuration and installation system has received
3021        some attention, and should be more robust for more platforms than
3022        it has ever been.
3023      _________________________________________________________________
3024    
3025                           Migration to version 6.4
3026                                       
3027    A dump/restore using pg_dump or pg_dumpall is required for those
3028    wishing to migrate data from any previous release of PostgreSQL.
3029      _________________________________________________________________
3030    
3031                                   Changes
3032                                       
3033 Bug Fixes
3034 ---------
3035 Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan)
3036 Remove char2-16 data types, use char/varchar(Darren)
3037 Pqfn not handles a NOTICE message(Anders)
3038 Reduced busywaiting overhead for spinlocks with many backends (dg)
3039 Stuck spinlock detection (dg)
3040 Fix up "ISO-style" timespan decoding and encoding(Thomas)
3041 Fix problem with table drop after rollback of transaction(Vadim)
3042 Change error message and remove non-functional update message(Vadim)
3043 Fix for COPY array checking
3044 Fix for SELECT 1 UNION SELECT NULL
3045 Fix for buffer leaks in large object calls(Pascal)
3046 Change owner from oid to int4 type(Bruce)
3047 Fix a bug in the oracle compatibility functions btrim() ltrim() and rtrim()
3048 Fix for shared invalidation cache overflow(Massimo)
3049 Prevent file descriptor leaks in failed COPY's(Bruce)
3050 Fix memory leak in libpgtcl's pg_select(Constantin)
3051 Fix problems with username/passwords over 8 characters(Tom)
3052 Fix problems with handling of asynchronous NOTIFY in backend(Tom)
3053 Fix of many bad system table entries(Tom)
3054
3055 Enhancements
3056 ------------
3057 Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael)
3058 Show the index used in an EXPLAIN(Zeugswetter)
3059 EXPLAIN  invokes  rule system and shows plan(s) for rewritten queries(Jan)
3060 Multibyte awareness of many data types and functions, via configure(Tatsuo)
3061 New configure --with-mb option(Tatsuo)
3062 New initdb --pgencoding option(Tatsuo)
3063 New createdb -E multibyte option(Tatsuo)
3064 Select version(); now returns PostgreSQL version(Jeroen)
3065 Libpq now allows asynchronous clients(Tom)
3066 Allow cancel from client of backend query(Tom)
3067 Psql now cancels query with Control-C(Tom)
3068 Libpq users need not issue dummy queries to get NOTIFY messages(Tom)
3069 NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom)
3070 PGresult struct now includes associated error message, if any(Tom)
3071 Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas)
3072 Add routines to convert between varchar and bpchar(Thomas)
3073 Add routines to allow sizing of varchar and bpchar into target columns(Thomas)
3074 Add bit flags to support timezonehour and minute in data retrieval(Thomas)
3075 Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas
3076 )
3077 Fixes for unary minus parsing with leading spaces(Thomas)
3078 Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas)
3079 Check for and properly ignore FOREIGN KEY column constraints(Thomas)
3080 Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas)
3081 Enable HAVING clause but no fixes elsewhere yet.
3082 Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thoma
3083 s)
3084 Save string type if specified for DEFAULT clause handling(Thomas)
3085 Coerce operations involving different data types(Thomas)
3086 Allow some index use for columns of different types(Thomas)
3087 Add capabilities for automatic type conversion(Thomas)
3088 Cleanups for large objects, so file is truncated on open(Peter)
3089 Readline cleanups(Tom)
3090 Allow psql  \f \ to make spaces as delimiter(Bruce)
3091 Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce)
3092 Msql compatibility library in /contrib(Aldrin)
3093 Remove the requirement that ORDER/GROUP BY clause identifiers be
3094 included in the target list(David)
3095 Convert columns to match columns in UNION clauses(Thomas)
3096 Remove fork()/exec() and only do fork()(Bruce)
3097 Jdbc cleanups(Peter)
3098 Show backend status on ps command line(only works on some platforms)(Bruce)
3099 Pg_hba.conf now has a sameuser option in the database field
3100 Make lo_unlink take oid param, not int4
3101 New DISABLE_COMPLEX_MACRO for compilers that can't handle our macros(Bruce)
3102 Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom)
3103 libpgtcl cleanups(Tom)
3104 Add -error option to libpgtcl's pg_result command(Tom)
3105 New locale patch, see docs/README/locale(Oleg)
3106 Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb)
3107 New contrib/lo code for large object orphan removal(Peter)
3108 New psql command "SET CLIENT_ENCODING TO 'encoding'" for multibytes
3109 feature, see /doc/README.mb(Tatsuo)
3110 /contrib/noupdate code to revoke update permission on a column
3111 Libpq can now be compiled on win32(Magnus)
3112 Add PQsetdbLogin() in libpq
3113 New 8-byte integer type, checked by configure for OS support(Thomas)
3114 Better support for quoted table/column names(Thomas)
3115 Surround table and column names with double-quotes in pg_dump(Thomas)
3116 PQreset() now works with passwords(Tom)
3117 Handle case of GROUP BY target list column number out of range(David)
3118 Allow UNION in subselects
3119 Add auto-size to screen to \d? commands(Bruce)
3120 Use UNION to show all \d? results in one query(Bruce)
3121 Add \d? field search feature(Bruce)
3122 Pg_dump issues fewer \connect requests(Tom)
3123 Make pg_dump -z flag work better, document it in manual page(Tom)
3124 Add HAVING clause with full support for subselects and unions(Stephan)
3125 Full text indexing routines in contrib/fulltextindex(Maarten)
3126 Transaction ids now stored in shared memory(Vadim)
3127 New PGCLIENTENCODING when issuing COPY command(Tatsuo)
3128 Support for SQL92 syntax "SET NAMES"(Tatsuo)
3129 Support for LATIN2-5(Tatsuo)
3130 Add UNICODE regression test case(Tatsuo)
3131 Lock manager cleanup, new locking modes for LLL(Vadim)
3132 Allow index use with OR clauses(Bruce)
3133 Allows "SELECT NULL ORDER BY 1;"
3134 Explain VERBOSE prints the plan, and now pretty-prints the plan to
3135 the postmaster log file(Bruce)
3136 Add indexes display to \d command(Bruce)
3137 Allow GROUP BY on functions(David)
3138 New pg_class.relkind for large objects(Bruce)
3139 New way to send libpq NOTICE messages to a different location(Tom)
3140 New \w write command to psql(Bruce)
3141 New /contrib/findoidjoins scans oid columns to find join relationships(Bruce)
3142 Allow binary-compatible indexes to be considered when checking for valid
3143 Indexes for restriction clauses containing a constant(Thomas)
3144 New ISBN/ISSN code in /contrib/isbn_issn
3145 Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas)
3146 New rewrite system fixes many problems with rules and views(Jan)
3147         * Rules on relations work
3148         * Event qualifications on insert/update/delete work
3149         * New OLD variable to reference CURRENT, CURRENT will be remove in futu
3150 re
3151         * Update rules can reference NEW and OLD in rule qualifications/actions
3152         * Insert/update/delete rules on views work
3153         * Multiple rule actions are now supported, surrounded by parentheses
3154         * Regular users can create views/rules on tables they have RULE permits
3155         * Rules and views inherit the permissions on the creator
3156         * No rules at the column level
3157         * No UPDATE NEW/OLD rules
3158         * New pg_tables, pg_indexes, pg_rules and pg_views system views
3159         * Only a single action on SELECT rules
3160         * Total rewrite overhaul, perhaps for 6.5
3161         * handle subselects
3162         * handle aggregates on views
3163         * handle insert into select from view works
3164 System indexes are now multikey(Bruce)
3165 Oidint2, oidint4, and oidname types are removed(Bruce)
3166 Use system cache for more system table lookups(Bruce)
3167 New backend programming language PL/pgSQL in backend/pl(Jan)
3168 New SERIAL data type, auto-creates sequence/index(Thomas)
3169 Enable assert checking without a recompile(Massimo)
3170 User lock enhancements(Massimo)
3171 New setval() command to set sequence value(Massimo)
3172 Auto-remove unix socket file on start-up if no postmaster running(Massimo)
3173 Conditional trace package(Massimo)
3174 New UNLISTEN command(Massimo)
3175 Psql and libpq now compile under win32 using win32.mak(Magnus)
3176 Lo_read no longer stores trailing NULL(Bruce)
3177 Identifiers are now truncated to 31 characters internally(Bruce)
3178 Createuser options now availble on the command line
3179 Code for 64-bit integer supported added, configure tested, int8 type(Thomas)
3180 Prevent file descriptor leaf from failed COPY(Bruce)
3181 New pg_upgrade command(Bruce)
3182 Updated /contrib directories(Massimo)
3183 New CREATE TABLE DEFAULT VALUES statement available(Thomas)
3184 New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas)
3185 New DECLARE and FETCH feature(Thomas)
3186 libpq's internal structures now not exported(Tom)
3187 Allow up to 8 key indexes(Bruce)
3188 Remove ARCHIVE keyword, that is no longer used(Thomas)
3189 pg_dump -n flag to supress quotes around indentifiers
3190 disable system columns for views(Jan)
3191 new INET and CIDR types for network addresses(TomH, Paul)
3192 no more double quotes in psql output
3193 pg_dump now dumps views(Terry)
3194 new SET QUERY_LIMIT(Tatsuo,Jan)
3195
3196 Source Tree Changes
3197 -------------------
3198 /contrib cleanup(Jun)
3199 Inline some small functions called for every row(Bruce)
3200 Alpha/linux fixes
3201 HP-UX cleanups(Tom)
3202 Multibyte regression tests(Soonmyung.)
3203 Remove --disabled options from configure
3204 Define PGDOC to use POSTGRESDIR by default
3205 Make regression optional
3206 Remove extra braces code to pgindent(Bruce)
3207 Add bsdi shared library support(Bruce)
3208 New --without-CXX support configure option(Brook)
3209 New FAQ_CVS
3210 Update backend flowchart in tools/backend(Bruce)
3211 Change atttypmod from int16 to int32(Bruce, Tom)
3212 Getrusage() fix for platforms that do not have it(Tom)
3213 Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page
3214 NS32K platform fixes(Phil Nelson, John Buller)
3215 SCO 7/UnixWare 2.x fixes(Billy,others)
3216 Sparc/Solaris 2.5 fixes(Ryan)
3217 Pgbuiltin.3 is obsolete, move to doc files(Thomas)
3218 Even more documention(Thomas)
3219 Nextstep support(Jacek)
3220 Aix support(David)
3221 pginterface manual page(Bruce)
3222 shared libraries all have version numbers
3223 merged all OS-specific shared library defines into one file
3224 smarter TCL/TK configuration checking(Billy)
3225 smarter perl configuration(Brook)
3226 configure uses supplied install-sh if no install script found(Tom)
3227 new Makefile.shlib for shared library configuration(Tom)
3228      _________________________________________________________________
3229    
3230                                Release 6.3.2
3231                                       
3232      Release date: 1998-04-07
3233      
3234    This is a bug-fix release for 6.3.x. Refer to the release notes for
3235    version 6.3 for a more complete summary of new features.
3236    
3237    Summary:
3238    
3239      * Repairs automatic configuration support for some platforms,
3240        including Linux, from breakage inadvertently introduced in version
3241        6.3.1.
3242      * Correctly handles function calls on the left side of BETWEEN and
3243        LIKE clauses.
3244        
3245    A dump/restore is NOT required for those running 6.3 or 6.3.1. A make
3246    distclean, make, and make install is all that is required. This last
3247    step should be performed while the postmaster is not running. You
3248    should re-link any custom applications that use PostgreSQL libraries.
3249    
3250    For upgrades from pre-6.3 installations, refer to the installation and
3251    migration instructions for version 6.3.
3252      _________________________________________________________________
3253    
3254                                   Changes
3255                                       
3256 Configure detection improvements for tcl/tk(Brook Milligan, Alvin)
3257 Manual page improvements(Bruce)
3258 BETWEEN and LIKE fix(Thomas)
3259 fix for psql \connect used by pg_dump(Oliver Elphick)
3260 New odbc driver
3261 pgaccess, version 0.86
3262 qsort removed, now uses libc version, cleanups(Jeroen)
3263 fix for buffer over-runs detected(Maurice Gittens)
3264 fix for buffer overrun in libpgtcl(Randy Kunkee)
3265 fix for UNION with DISTINCT or ORDER BY(Bruce)
3266 gettimeofday configure check(Doug Winterburn)
3267 Fix "indexes not used" bug(Vadim)
3268 docs additions(Thomas)
3269 Fix for backend memory leak(Bruce)
3270 libreadline cleanup(Erwan MAS)
3271 Remove DISTDIR(Bruce)
3272 Makefile dependency cleanup(Jeroen van Vianen)
3273 ASSERT fixes(Bruce)
3274
3275      _________________________________________________________________
3276    
3277                                Release 6.3.1
3278                                       
3279      Release date: 1998-03-23
3280      
3281    Summary:
3282    
3283      * Additional support for multibyte character sets.
3284      * Repair byte ordering for mixed-endian clients and servers.
3285      * Minor updates to allowed SQL syntax.
3286      * Improvements to the configuration autodetection for installation.
3287        
3288    A dump/restore is NOT required for those running 6.3. A make
3289    distclean, make, and make install is all that is required. This last
3290    step should be performed while the postmaster is not running. You
3291    should re-link any custom applications that use PostgreSQL libraries.
3292    
3293    For upgrades from pre-6.3 installations, refer to the installation and
3294    migration instructions for version 6.3.
3295      _________________________________________________________________
3296    
3297                                   Changes
3298                                       
3299 ecpg cleanup/fixes, now version 1.1(Michael Meskes)
3300 pg_user cleanup(Bruce)
3301 large object fix for pg_dump and tclsh (alvin)
3302 LIKE fix for multiple adjacent underscores
3303 fix for redefining builtin functions(Thomas)
3304 ultrix4 cleanup
3305 upgrade to pg_access 0.83
3306 updated CLUSTER manual page
3307 multibyte character set support, see doc/README.mb(Tatsuo)
3308 configure --with-pgport fix
3309 pg_ident fix
3310 big-endian fix for backend communications(Kataoka)
3311 SUBSTR() and substring() fix(Jan)
3312 several jdbc fixes(Peter)
3313 libpgtcl improvements, see libptcl/README(Randy Kunkee)
3314 Fix for "Datasize = 0" error(Vadim)
3315 Prevent \do from wrapping(Bruce)
3316 Remove duplicate Russian character set entries
3317 Sunos4 cleanup
3318 Allow optional TABLE keyword in LOCK and SELECT INTO(Thomas)
3319 CREATE SEQUENCE options to allow a negative integer(Thomas)
3320 Add "PASSWORD" as an allowed column identifier(Thomas)
3321 Add checks for UNION target fields(Bruce)
3322 Fix Alpha port(Dwayne Bailey)
3323 Fix for text arrays containing quotes(Doug Gibson)
3324 Solaris compile fix(Albert Chin-A-Young)
3325 Better identify tcl and tk libs and includes(Bruce)
3326
3327      _________________________________________________________________
3328    
3329                                 Release 6.3
3330                                       
3331      Release date: 1998-03-01
3332      
3333    There are *many* new features and improvements in this release. Here
3334    is a brief, incomplete summary:
3335    
3336      * Many new SQL features, including full SQL92 subselect capability
3337        (everything is here but target-list subselects).
3338      * Support for client-side environment variables to specify time zone
3339        and date style.
3340      * Socket interface for client/server connection. This is the default
3341        now so you may need to start postmaster with the "-i" flag.
3342      * Better password authorization mechanisms. Default table
3343        permissions have changed.
3344      * Old-style time travel has been removed. Performance has been
3345        improved.
3346        
3347      Note: Bruce Momjian wrote the following notes to introduce the new
3348      release.
3349      
3350    There are some general 6.3 issues that I want to mention. These are
3351    only the big items that can not be described in one sentence. A review
3352    of the detailed changes list is still needed.
3353    
3354    First, we now have subselects. Now that we have them, I would like to
3355    mention that without subselects, SQL is a very limited language.
3356    Subselects are a major feature, and you should review your code for
3357    places where subselects provide a better solution for your queries. I
3358    think you will find that there are more uses for subselects than you
3359    may think. Vadim has put us on the big SQL map with subselects, and
3360    fully functional ones too. The only thing you can't do with subselects
3361    is to use them in the target list.
3362    
3363    Second, 6.3 uses Unix domain sockets rather than TCP/IP by default. To
3364    enable connections from other machines, you have to use the new
3365    postmaster -i option, and of course edit "pg_hba.conf". Also, for this
3366    reason, the format of "pg_hba.conf" has changed.
3367    
3368    Third, char() fields will now allow faster access than varchar() or
3369    text. Specifically, the text and varchar() have a penalty for access
3370    to any columns after the first column of this type. char() used to
3371    also have this access penalty, but it no longer does. This may suggest
3372    that you redesign some of your tables, especially if you have short
3373    character columns that you have defined as varchar() or text. This and
3374    other changes make 6.3 even faster than earlier releases.
3375    
3376    We now have passwords definable independent of any Unix file. There
3377    are new SQL USER commands. See the Administrator's Guide for more
3378    information. There is a new table, pg_shadow, which is used to store
3379    user information and user passwords, and it by default only
3380    SELECT-able by the postgres super-user. pg_user is now a view of
3381    pg_shadow, and is SELECT-able by PUBLIC. You should keep using pg_user
3382    in your application without changes.
3383    
3384    User-created tables now no longer have SELECT permission to PUBLIC by
3385    default. This was done because the ANSI standard requires it. You can
3386    of course GRANT any permissions you want after the table is created.
3387    System tables continue to be SELECT-able by PUBLIC.
3388    
3389    We also have real deadlock detection code. No more sixty-second
3390    timeouts. And the new locking code implements a FIFO better, so there
3391    should be less resource starvation during heavy use.
3392    
3393    Many complaints have been made about inadequate documentation in
3394    previous releases. Thomas has put much effort into many new manuals
3395    for this release. Check out the doc/ directory.
3396    
3397    For performance reasons, time travel is gone, but can be implemented
3398    using triggers (see "pgsql/contrib/spi/README"). Please check out the
3399    new \d command for types, operators, etc. Also, views have their own
3400    permissions now, not based on the underlying tables, so permissions on
3401    them have to be set separately. Check "/pgsql/interfaces" for some new
3402    ways to talk to PostgreSQL.
3403    
3404    This is the first release that really required an explanation for
3405    existing users. In many ways, this was necessary because the new
3406    release removes many limitations, and the work-arounds people were
3407    using are no longer needed.
3408      _________________________________________________________________
3409    
3410                           Migration to version 6.3
3411                                       
3412    A dump/restore using pg_dump or pg_dumpall is required for those
3413    wishing to migrate data from any previous release of PostgreSQL.
3414      _________________________________________________________________
3415    
3416                                   Changes
3417                                       
3418 Bug Fixes
3419 ---------
3420 Fix binary cursors broken by MOVE implementation(Vadim)
3421 Fix for tcl library crash(Jan)
3422 Fix for array handling, from Gerhard Hintermayer
3423 Fix acl error, and remove duplicate pqtrace(Bruce)
3424 Fix psql \e for empty file(Bruce)
3425 Fix for textcat on varchar() fields(Bruce)
3426 Fix for DBT Sendproc (Zeugswetter Andres)
3427 Fix vacuum analyze syntax problem(Bruce)
3428 Fix for international identifiers(Tatsuo)
3429 Fix aggregates on inherited tables(Bruce)
3430 Fix substr() for out-of-bounds data
3431 Fix for select 1=1 or 2=2, select 1=1 and 2=2, and select sum(2+2)(Bruce)
3432 Fix notty output to show status result.  -q option still turns it off(Bruce)
3433 Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce)
3434 Fix cluster(Bruce)
3435 Fix for PQtrace start/stop several times(Bruce)
3436 Fix a variety of locking problems like newer lock waiters getting
3437         lock before older waiters, and having readlock people not share
3438         locks if a writer is waiting for a lock, and waiting writers not
3439         getting priority over waiting readers(Bruce)
3440 Fix crashes in psql when executing queries from external files(James)
3441 Fix problem with multiple order by columns, with the first one having
3442         NULL values(Jeroen)
3443 Use correct hash table support functions for float8 and int4(Thomas)
3444 Re-enable JOIN= option in CREATE OPERATOR statement (Thomas)
3445 Change precedence for boolean operators to match expected behavior(Thomas)
3446 Generate elog(ERROR) on over-large integer(Bruce)
3447 Allow multiple-argument functions in constraint clauses(Thomas)
3448 Check boolean input literals for 'true','false','yes','no','1','0'
3449         and throw elog(ERROR) if unrecognized(Thomas)
3450 Major large objects fix
3451 Fix for GROUP BY showing duplicates(Vadim)
3452 Fix for index scans in MergeJion(Vadim)
3453
3454 Enhancements
3455 ------------
3456 Subselects with EXISTS, IN, ALL, ANY keywords (Vadim, Bruce, Thomas)
3457 New User Manual(Thomas, others)
3458 Speedup by inlining some frequently-called functions
3459 Real deadlock detection, no more timeouts(Bruce)
3460 Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
3461         CURRENT_USER(Thomas)
3462 Modify constraint syntax to be SQL92-compliant(Thomas)
3463 Implement SQL92 PRIMARY KEY and UNIQUE clauses using indexes(Thomas)
3464 Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas)
3465 Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas
3466 )
3467 Allow PostgreSQL-style casting ("::") of non-constants(Thomas)
3468 Add support for SQL3 TRUE and FALSE boolean constants(Thomas)
3469 Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas)
3470 Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas)
3471 Allow SQL92 delimited identifiers(Thomas)
3472 Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas
3473 )
3474 Support SQL92 syntax for type coercion of literal strings
3475         (e.g. "DATETIME 'now'")(Thomas)
3476 Add conversions for int2, int4, and OID types to and from text(Thomas)
3477 Use shared lock when building indexes(Vadim)
3478 Free memory allocated for an user query inside transaction block after
3479         this query is done, was turned off in <= 6.2.1(Vadim)
3480 New SQL statement CREATE PROCEDURAL LANGUAGE(Jan)
3481 New PostgreSQL Procedural Language (PL) backend interface(Jan)
3482 Rename pg_dump -H option to -h(Bruce)
3483 Add Java support for passwords, European dates(Peter)
3484 Use indexes for LIKE and ~, !~ operations(Bruce)
3485 Add hash functions for datetime and timespan(Thomas)
3486 Time Travel removed(Vadim, Bruce)
3487 Add paging for \d and \z, and fix \i(Bruce)
3488 Add Unix domain socket support to backend and to frontend library(Goran)
3489 Implement CREATE DATABASE/WITH LOCATION and initlocation utility(Thomas)
3490 Allow more SQL92 and/or PostgreSQL reserved words as column identifiers(Thomas)
3491 Augment support for SQL92 SET TIME ZONE...(Thomas)
3492 SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas)
3493 Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas)
3494 Enable SET TIME ZONE using TZ environment variable(Thomas)
3495 Add PGDATESTYLE environment variable to frontend and backend initialization(Tho
3496 mas)
3497 Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO
3498         frontend library initialization environment variables(Thomas)
3499 Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas)
3500 Add pg_description table for info on tables, columns, operators, types, and
3501         aggregates(Bruce)
3502 Increase 16 char limit on system table/index names to 32 characters(Bruce)
3503 Rename system indexes(Bruce)
3504 Add 'GERMAN' option to SET DATESTYLE(Thomas)
3505 Define an "ISO-style" timespan output format with "hh:mm:ss" fields(Thomas)
3506 Allow fractional values for delta times (e.g. '2.5 days')(Thomas)
3507 Validate numeric input more carefully for delta times(Thomas)
3508 Implement day of year as possible input to date_part()(Thomas)
3509 Define timespan_finite() and text_timespan() functions(Thomas)
3510 Remove archive stuff(Bruce)
3511 Allow for a pg_password authentication database that is separate from
3512         the system password file(Todd)
3513 Dump ACLs, GRANT, REVOKE permissions(Matt)
3514 Define text, varchar, and bpchar string length functions(Thomas)
3515 Fix Query handling for inheritance, and cost computations(Bruce)
3516 Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas)
3517 Allow NOT, IS NULL, IS NOT NULL in constraints(Thomas)
3518 Implement UNIONs for SELECT(Bruce)
3519 Add UNION, GROUP, DISTINCT to INSERT(Bruce)
3520 varchar() stores only necessary bytes on disk(Bruce)
3521 Fix for BLOBs(Peter)
3522 Mega-Patch for JDBC...see README_6.3 for list of changes(Peter)
3523 Remove unused "option" from PQconnectdb()
3524 New LOCK command and lock manual page describing deadlocks(Bruce)
3525 Add new psql \da, \dd, \df, \do, \dS, and \dT commands(Bruce)
3526 Enhance psql \z to show sequences(Bruce)
3527 Show NOT NULL and DEFAULT in psql \d table(Bruce)
3528 New psql .psqlrc file start-up(Andrew)
3529 Modify sample start-up script in contrib/linux to show syslog(Thomas)
3530 New types for IP and MAC addresses in contrib/ip_and_mac(TomH)
3531 Unix system time conversions with date/time types in contrib/unixdate(Thomas)
3532 Update of contrib stuff(Massimo)
3533 Add Unix socket support to DBD::Pg(Goran)
3534 New python interface (PyGreSQL 2.0)(D'Arcy)
3535 New frontend/backend protocol has a version number, network byte order(Phil)
3536 Security features in pg_hba.conf enhanced and documented, many cleanups(Phil)
3537 CHAR() now faster access than VARCHAR() or TEXT
3538 ecpg embedded SQL preprocessor
3539 Reduce system column overhead(Vadmin)
3540 Remove pg_time table(Vadim)
3541 Add pg_type attribute to identify types that need length (bpchar, varchar)
3542 Add report of offending line when COPY command fails
3543 Allow VIEW permissions to be set separately from the underlying tables.
3544         For security, use GRANT/REVOKE on views as appropriate(Jan)
3545 Tables now have no default GRANT SELECT TO PUBLIC.  You must
3546         explicitly grant such permissions.
3547 Clean up tutorial examples(Darren)
3548
3549 Source Tree Changes
3550 -------------------
3551 Add new html development tools, and flow chart in /tools/backend
3552 Fix for SCO compiles
3553 Stratus computer port Robert Gillies
3554 Added support for shlib for BSD44_derived & i386_solaris
3555 Make configure more automated(Brook)
3556 Add script to check regression test results
3557 Break parser functions into smaller files, group together(Bruce)
3558 Rename heap_create to heap_create_and_catalog, rename heap_creatr
3559         to heap_create()(Bruce)
3560 Sparc/Linux patch for locking(TomS)
3561 Remove PORTNAME and reorganize port-specific stuff(Marc)
3562 Add optimizer README file(Bruce)
3563 Remove some recursion in optimizer and clean up some code there(Bruce)
3564 Fix for NetBSD locking(Henry)
3565 Fix for libptcl make(Tatsuo)
3566 AIX patch(Darren)
3567 Change IS TRUE, IS FALSE, ... to expressions using "=" rather than
3568         function calls to istrue() or isfalse() to allow optimization(Thomas)
3569 Various fixes NetBSD/Sparc related(TomH)
3570 Alpha linux locking(Travis,Ryan)
3571 Change elog(WARN) to elog(ERROR)(Bruce)
3572 FAQ for FreeBSD(Marc)
3573 Bring in the PostODBC source tree as part of our standard distribution(Marc)
3574 A minor patch for HP/UX 10 vs 9(Stan)
3575 New pg_attribute.atttypmod for type-specific info like varchar length(Bruce)
3576 UnixWare patches(Billy)
3577 New i386 'lock' for spin lock asm(Billy)
3578 Support for multiplexed backends is removed
3579 Start an OpenBSD port
3580 Start an AUX port
3581 Start a Cygnus port
3582 Add string functions to regression suite(Thomas)
3583 Expand a few function names formerly truncated to 16 characters(Thomas)
3584 Remove un-needed malloc() calls and replace with palloc()(Bruce)
3585      _________________________________________________________________
3586    
3587                                Release 6.2.1
3588                                       
3589      Release date: 1997-10-17
3590      
3591    6.2.1 is a bug-fix and usability release on 6.2.
3592    
3593    Summary:
3594    
3595      * Allow strings to span lines, per SQL92.
3596      * Include example trigger function for inserting user names on table
3597        updates.
3598        
3599    This is a minor bug-fix release on 6.2. For upgrades from pre-6.2
3600    systems, a full dump/reload is required. Refer to the 6.2 release
3601    notes for instructions.
3602      _________________________________________________________________
3603    
3604                 Migration from version 6.2 to version 6.2.1
3605                                       
3606    This is a minor bug-fix release. A dump/reload is not required from
3607    version 6.2, but is required from any release prior to 6.2.
3608    
3609    In upgrading from version 6.2, if you choose to dump/reload you will
3610    find that avg(money) is now calculated correctly. All other bug fixes
3611    take effect upon updating the executables.
3612    
3613    Another way to avoid dump/reload is to use the following SQL command
3614    from "psql" to update the existing system table:
3615   update pg_aggregate set aggfinalfn = 'cash_div_flt8'
3616    where aggname = 'avg' and aggbasetype = 790;
3617
3618    This will need to be done to every existing database, including
3619    template1.
3620      _________________________________________________________________
3621    
3622                                   Changes
3623                                       
3624 Allow TIME and TYPE column names(Thomas)
3625 Allow larger range of true/false as boolean values(Thomas)
3626 Support output of "now" and "current"(Thomas)
3627 Handle DEFAULT with INSERT of NULL properly(Vadim)
3628 Fix for relation reference counts problem in buffer manager(Vadim)
3629 Allow strings to span lines, like ANSI(Thomas)
3630 Fix for backward cursor with ORDER BY(Vadim)
3631 Fix avg(cash) computation(Thomas)
3632 Fix for specifying a column twice in ORDER/GROUP BY(Vadim)
3633 Documented new libpq function to return affected rows, PQcmdTuples(Bruce)
3634 Trigger function for inserting user names for INSERT/UPDATE(Brook Milligan)
3635
3636      _________________________________________________________________
3637    
3638                                 Release 6.2
3639                                       
3640      Release date: 1997-10-02
3641      
3642    A dump/restore is required for those wishing to migrate data from
3643    previous releases of PostgreSQL.
3644      _________________________________________________________________
3645    
3646                  Migration from version 6.1 to version 6.2
3647                                       
3648    This migration requires a complete dump of the 6.1 database and a
3649    restore of the database in 6.2.
3650    
3651    Note that the "pg_dump" and "pg_dumpall" utility from 6.2 should be
3652    used to dump the 6.1 database.
3653      _________________________________________________________________
3654    
3655                  Migration from version 1.x to version 6.2
3656                                       
3657    Those migrating from earlier 1.* releases should first upgrade to 1.09
3658    because the COPY output format was improved from the 1.02 release.
3659      _________________________________________________________________
3660    
3661                                   Changes
3662                                       
3663 Bug Fixes
3664 ---------
3665 Fix problems with pg_dump for inheritance, sequences, archive tables(Bruce)
3666 Fix compile errors on overflow due to shifts, unsigned, and bad prototypes
3667          from Solaris(Diab Jerius)
3668 Fix bugs in geometric line arithmetic (bad intersection calculations)(Thomas)
3669 Check for geometric intersections at endpoints to avoid rounding ugliness(Thoma
3670 s)
3671 Catch non-functional delete attempts(Vadim)
3672 Change time function names to be more consistent(Michael Reifenberg)
3673 Check for zero divides(Michael Reifenberg)
3674 Fix very old bug which made tuples changed/inserted by a commnd
3675         visible to the command itself (so we had multiple update of
3676         updated tuples, etc)(Vadim)
3677 Fix for SELECT null, 'fail' FROM pg_am (Patrick)
3678 SELECT NULL as EMPTY_FIELD now allowed(Patrick)
3679 Remove un-needed signal stuff from contrib/pginterface
3680 Fix OR (where x != 1 or x isnull didn't return tuples with x NULL) (Vadim)
3681 Fix time_cmp function (Vadim)
3682 Fix handling of functions with non-attribute first argument in
3683         WHERE clauses (Vadim)
3684 Fix GROUP BY when order of entries is different from order
3685         in target list (Vadim)
3686 Fix pg_dump for aggregates without sfunc1 (Vadim)
3687
3688 Enhancements
3689 ------------
3690 Default genetic optimizer GEQO parameter is now 8(Bruce)
3691 Allow use parameters in target list having aggregates in functions(Vadim)
3692 Added JDBC driver as an interface(Adrian & Peter)
3693 pg_password utility
3694 Return number of tuples inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim)
3695 Triggers implemented with CREATE TRIGGER (SQL3)(Vadim)
3696 SPI (Server Programming Interface) allows execution of queries inside
3697         C-functions (Vadim)
3698 NOT NULL implemented (SQL92)(Robson Paniago de Miranda)
3699 Include reserved words for string handling, outer joins, and unions(Thomas)
3700 Implement extended comments ("/* ... */") using exclusive states(Thomas)
3701 Add "//" single-line comments(Bruce)
3702 Remove some restrictions on characters in operator names(Thomas)
3703 DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim & Thomas)
3704 Add text concatenation operator and function (SQL92)(Thomas)
3705 Support WITH TIME ZONE syntax (SQL92)(Thomas)
3706 Support INTERVAL unit TO unit syntax (SQL92)(Thomas)
3707 Define types DOUBLE PRECISION, INTERVAL, CHARACTER,
3708         and CHARACTER VARYING (SQL92)(Thomas)
3709 Define type FLOAT(p) and rudimentary DECIMAL(p,s), NUMERIC(p,s) (SQL92)(Thomas)
3710 Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM() (SQL92)(Thomas)
3711 Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP (SQL92)(Thomas)
3712 Add syntax and warnings for UNION, HAVING, INNER and OUTER JOIN (SQL92)(Thomas)
3713 Add more reserved words, mostly for SQL92 compliance(Thomas)
3714 Allow hh:mm:ss time entry for timespan/reltime types(Thomas)
3715 Add center() routines for lseg, path, polygon(Thomas)
3716 Add distance() routines for circle-polygon, polygon-polygon(Thomas)
3717 Check explicitly for points and polygons contained within polygons
3718         using an axis-crossing algorithm(Thomas)
3719 Add routine to convert circle-box(Thomas)
3720 Merge conflicting operators for different geometric data types(Thomas)
3721 Replace distance operator "<===>" with "<->"(Thomas)
3722 Replace "above" operator "!^" with ">^" and "below" operator "!|" with "<^"(Tho
3723 mas)
3724 Add routines for text trimming on both ends, substring, and string position(Tho
3725 mas)
3726 Added conversion routines circle(box) and poly(circle)(Thomas)
3727 Allow internal sorts to be stored in memory rather than in files(Bruce & Vadim)
3728 Allow functions and operators on internally-identical types to succeed(Bruce)
3729 Speed up backend start-up after profiling analysis(Bruce)
3730 Inline frequently called functions for performance(Bruce)
3731 Reduce open() calls(Bruce)
3732 psql:  Add PAGER for \h and \?,\C fix
3733 Fix for psql pager when no tty(Bruce)
3734 New entab utility(Bruce)
3735 General trigger functions for referential integrity (Vadim)
3736 General trigger functions for time travel (Vadim)
3737 General trigger functions for AUTOINCREMENT/IDENTITY feature (Vadim)
3738 MOVE implementation (Vadim)
3739
3740 Source Tree Changes
3741 -------------------
3742 HP-UX 10 patches (Vladimir Turin)
3743 Added SCO support, (Daniel Harris)
3744 MkLinux patches (Tatsuo Ishii)
3745 Change geometric box terminology from "length" to "width"(Thomas)
3746 Deprecate temporary unstored slope fields in geometric code(Thomas)
3747 Remove restart instructions from INSTALL(Bruce)
3748 Look in /usr/ucb first for install(Bruce)
3749 Fix c++ copy example code(Thomas)
3750 Add -o to psql manual page(Bruce)
3751 Prevent relname unallocated string length from being copied into database(Bruce
3752 )
3753 Cleanup for NAMEDATALEN use(Bruce)
3754 Fix pg_proc names over 15 chars in output(Bruce)
3755 Add strNcpy() function(Bruce)
3756 remove some (void) casts that are unnecessary(Bruce)
3757 new interfaces directory(Marc)
3758 Replace fopen() calls with calls to fd.c functions(Bruce)
3759 Make functions static where possible(Bruce)
3760 enclose unused functions in #ifdef NOT_USED(Bruce)
3761 Remove call to difftime() in timestamp support to fix SunOS(Bruce & Thomas)
3762 Changes for Digital Unix
3763 Portability fix for pg_dumpall(Bruce)
3764 Rename pg_attribute.attnvals to attdispersion(Bruce)
3765 "intro/unix" manual page now "pgintro"(Bruce)
3766 "built-in" manual page now "pgbuiltin"(Bruce)
3767 "drop" manual page now "drop_table"(Bruce)
3768 Add "create_trigger", "drop_trigger" manual pages(Thomas)
3769 Add constraints regression test(Vadim & Thomas)
3770 Add comments syntax regression test(Thomas)
3771 Add PGINDENT and support program(Bruce)
3772 Massive commit to run PGINDENT on all *.c and *.h files(Bruce)
3773 Files moved to /src/tools directory(Bruce)
3774 SPI and Trigger programming guides (Vadim & D'Arcy)
3775      _________________________________________________________________
3776    
3777                                Release 6.1.1
3778                                       
3779      Release date: 1997-07-22
3780      _________________________________________________________________
3781    
3782                 Migration from version 6.1 to version 6.1.1
3783                                       
3784    This is a minor bug-fix release. A dump/reload is not required from
3785    version 6.1, but is required from any release prior to 6.1. Refer to
3786    the release notes for 6.1 for more details.
3787      _________________________________________________________________
3788    
3789                                   Changes
3790                                       
3791 fix for SET with options (Thomas)
3792 allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce)
3793 new psql \connect option allows changing usernames without changing databases
3794 fix for initdb --debug option(Yoshihiko Ichikawa))
3795 lextest cleanup(Bruce)
3796 hash fixes(Vadim)
3797 fix date/time month boundary arithmetic(Thomas)
3798 fix timezone daylight handling for some ports(Thomas, Bruce, Tatsuo)
3799 timestamp overhauled to use standard functions(Thomas)
3800 other code cleanup in date/time routines(Thomas)
3801 psql's \d now case-insensitive(Bruce)
3802 psql's backslash commands can now have trailing semicolon(Bruce)
3803 fix memory leak in psql when using \g(Bruce)
3804 major fix for endian handling of communication to server(Thomas, Tatsuo)
3805 Fix for Solaris assembler and include files(Yoshihiko Ichikawa)
3806 allow underscores in usernames(Bruce)
3807 pg_dumpall now returns proper status, portability fix(Bruce)
3808
3809      _________________________________________________________________
3810    
3811                                 Release 6.1
3812                                       
3813      Release date: 1997-06-08
3814      
3815    The regression tests have been adapted and extensively modified for
3816    the 6.1 release of PostgreSQL.
3817    
3818    Three new data types (datetime, timespan, and circle) have been added
3819    to the native set of PostgreSQL types. Points, boxes, paths, and
3820    polygons have had their output formats made consistent across the data
3821    types. The polygon output in misc.out has only been spot-checked for
3822    correctness relative to the original regression output.
3823    
3824    PostgreSQL 6.1 introduces a new, alternate optimizer which uses
3825    genetic algorithms. These algorithms introduce a random behavior in
3826    the ordering of query results when the query contains multiple
3827    qualifiers or multiple tables (giving the optimizer a choice on order
3828    of evaluation). Several regression tests have been modified to
3829    explicitly order the results, and hence are insensitive to optimizer
3830    choices. A few regression tests are for data types which are
3831    inherently unordered (e.g. points and time intervals) and tests
3832    involving those types are explicitly bracketed with "set geqo to
3833    'off'" and "reset geqo".
3834    
3835    The interpretation of array specifiers (the curly braces around atomic
3836    values) appears to have changed sometime after the original regression
3837    tests were generated. The current "./expected/*.out" files reflect
3838    this new interpretation, which may not be correct!
3839    
3840    The float8 regression test fails on at least some platforms. This is
3841    due to differences in implementations of pow() and exp() and the
3842    signaling mechanisms used for overflow and underflow conditions.
3843    
3844    The "random" results in the random test should cause the "random" test
3845    to be "failed", since the regression tests are evaluated using a
3846    simple diff. However, "random" does not seem to produce random results
3847    on my test machine (Linux/gcc/i686).
3848      _________________________________________________________________
3849    
3850                           Migration to version 6.1
3851                                       
3852    This migration requires a complete dump of the 6.0 database and a
3853    restore of the database in 6.1.
3854    
3855    Those migrating from earlier 1.* releases should first upgrade to 1.09
3856    because the COPY output format was improved from the 1.02 release.
3857      _________________________________________________________________
3858    
3859                                   Changes
3860                                       
3861 Bug Fixes
3862 ---------
3863 packet length checking in library routines
3864 lock manager priority patch
3865 check for under/over flow of float8(Bruce)
3866 multitable join fix(Vadim)
3867 SIGPIPE crash fix(Darren)
3868 large object fixes(Sven)
3869 allow btree indexes to handle NULLs(Vadim)
3870 timezone fixes(D'Arcy)
3871 select SUM(x) can return NULL on no rows(Thomas)
3872 internal optimizer, executor bug fixes(Vadim)
3873 fix problem where inner loop in < or <= has no rows(Vadim)
3874 prevent re-commuting join index clauses(Vadim)
3875 fix join clauses for multiple tables(Vadim)
3876 fix hash, hashjoin for arrays(Vadim)
3877 fix btree for abstime type(Vadim)
3878 large object fixes(Raymond)
3879 fix buffer leak in hash indexes (Vadim)
3880 fix rtree for use in inner scan (Vadim)
3881 fix gist for use in inner scan, cleanups (Vadim, Andrea)
3882 avoid unnecessary local buffers allocation (Vadim, Massimo)
3883 fix local buffers leak in transaction aborts (Vadim)
3884 fix file manager memmory leaks, cleanups (Vadim, Massimo)
3885 fix storage manager memmory leaks (Vadim)
3886 fix btree duplicates handling (Vadim)
3887 fix deleted tuples re-incarnation caused by vacuum (Vadim)
3888 fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce)
3889 many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor)
3890
3891 Enhancements
3892 ------------
3893 attribute optimization statistics(Bruce)
3894 much faster new btree bulk load code(Paul)
3895 BTREE UNIQUE added to bulk load code(Vadim)
3896 new lock debug code(Massimo)
3897 massive changes to libpg++(Leo)
3898 new GEQO optimizer speeds table multitable optimization(Martin)
3899 new WARN message for non-unique insert into unique key(Marc)
3900 update x=-3, no spaces, now valid(Bruce)
3901 remove case-sensitive identifier handling(Bruce,Thomas,Dan)
3902 debug backend now pretty-prints tree(Darren)
3903 new Oracle character functions(Edmund)
3904 new plaintext password functions(Dan)
3905 no such class or insufficient privilege changed to distinct messages(Dan)
3906 new ANSI timestamp function(Dan)
3907 new ANSI Time and Date types (Thomas)
3908 move large chunks of data in backend(Martin)
3909 multicolumn btree indexes(Vadim)
3910 new SET var TO value command(Martin)
3911 update transaction status on reads(Dan)
3912 new locale settings for character types(Oleg)
3913 new SEQUENCE serial number generator(Vadim)
3914 GROUP BY function now possible(Vadim)
3915 re-organize regression test(Thomas,Marc)
3916 new optimizer operation weights(Vadim)
3917 new psql \z grant/permit option(Marc)
3918 new MONEY data type(D'Arcy,Thomas)
3919 tcp socket communication speed improved(Vadim)
3920 new VACUUM option for attribute statistics, and for certain columns (Vadim)
3921 many geometric type improvements(Thomas,Keith)
3922 additional regression tests(Thomas)
3923 new datestyle variable(Thomas,Vadim,Martin)
3924 more comparison operators for sorting types(Thomas)
3925 new conversion functions(Thomas)
3926 new more compact btree format(Vadim)
3927 allow pg_dumpall to preserve database ownership(Bruce)
3928 new SET GEQO=# and R_PLANS variable(Vadim)
3929 old (!GEQO) optimizer can use right-sided plans (Vadim)
3930 typechecking improvement in SQL parser(Bruce)
3931 new SET, SHOW, RESET commands(Thomas,Vadim)
3932 new \connect database USER option
3933 new destroydb -i option (Igor)
3934 new \dt and \di psql commands (Darren)
3935 SELECT "\n" now escapes newline (A. Duursma)
3936 new geometry conversion functions from old format (Thomas)
3937
3938 Source tree changes
3939 -------------------
3940 new configuration script(Marc)
3941 readline configuration option added(Marc)
3942 OS-specific configuration options removed(Marc)
3943 new OS-specific template files(Marc)
3944 no more need to edit Makefile.global(Marc)
3945 re-arrange include files(Marc)
3946 nextstep patches (Gregor Hoffleit)
3947 removed WIN32-specific code(Bruce)
3948 removed postmaster -e option, now only postgres -e option (Bruce)
3949 merge duplicate library code in front/backends(Martin)
3950 now works with eBones, international Kerberos(Jun)
3951 more shared library support
3952 c++ include file cleanup(Bruce)
3953 warn about buggy flex(Bruce)
3954 DG/UX, Ultrix, IRIX, AIX portability fixes
3955      _________________________________________________________________
3956    
3957                                 Release 6.0
3958                                       
3959      Release date: 1997-01-29
3960      
3961    A dump/restore is required for those wishing to migrate data from
3962    previous releases of PostgreSQL.
3963      _________________________________________________________________
3964    
3965                  Migration from version 1.09 to version 6.0
3966                                       
3967    This migration requires a complete dump of the 1.09 database and a
3968    restore of the database in 6.0.
3969      _________________________________________________________________
3970    
3971                    Migration from pre-1.09 to version 6.0
3972                                       
3973    Those migrating from earlier 1.* releases should first upgrade to 1.09
3974    because the COPY output format was improved from the 1.02 release.
3975      _________________________________________________________________
3976    
3977                                   Changes
3978                                       
3979 Bug Fixes
3980 ---------
3981 ALTER TABLE bug - running postgress process needs to re-read table definition
3982 Allow vacuum to be run on one table or entire database(Bruce)
3983 Array fixes
3984 Fix array over-runs of memory writes(Kurt)
3985 Fix elusive btree range/non-range bug(Dan)
3986 Fix for hash indexes on some types like time and date
3987 Fix for pg_log size explosion
3988 Fix permissions on lo_export()(Bruce)
3989 Fix unitialized reads of memory(Kurt)
3990 Fixed ALTER TABLE ... char(3) bug(Bruce)
3991 Fixed a few small memory leaks
3992 Fixed EXPLAIN handling of options and changed full_path option name
3993 Fixed output of group acl permissions
3994 Memory leaks (hunt and destroy with tools like Purify(Kurt)
3995 Minor improvements to rules system
3996 NOTIFY fixes
3997 New asserts for run-checking
3998 Overhauled parser/analyze code to properly report errors and increase speed
3999 Pg_dump -d now handles NULL's properly(Bruce)
4000 Prevent SELECT NULL from crashing server (Bruce)
4001 Properly report errors when INSERT ... SELECT columns did not match
4002 Properly report errors when insert column names were not correct
4003 Psql \g filename now works(Bruce)
4004 Psql fixed problem with multiple statements on one line with multiple outputs
4005 Removed duplicate system OIDs
4006 SELECT * INTO TABLE . GROUP/ORDER BY gives unlink error if table exists(Bruce)
4007 Several fixes for queries that crashed the backend
4008 Starting quote in insert string errors(Bruce)
4009 Submitting an empty query now returns empty status, not just " " query(Bruce)
4010
4011 Enhancements
4012 ------------
4013 Add EXPLAIN manual page(Bruce)
4014 Add UNIQUE index capability(Dan)
4015 Add hostname/user level access control rather than just hostname and user
4016 Add synonym of != for <>(Bruce)
4017 Allow "select oid,* from table"
4018 Allow BY,ORDER BY to specify columns by number, or by non-alias table.column(Br
4019 uce)
4020 Allow COPY from the frontend(Bryan)
4021 Allow GROUP BY to use alias column name(Bruce)
4022 Allow actual compression, not just reuse on the same page(Vadim)
4023 Allow installation-configuration option to auto-add all local users(Bryan)
4024 Allow libpq to distinguish between text value '' and null(Bruce)
4025 Allow non-postgres users with createdb privs to destroydb's
4026 Allow restriction on who can create C functions(Bryan)
4027 Allow restriction on who can do backend COPY(Bryan)
4028 Can shrink tables, pg_time and pg_log(Vadim & Erich)
4029 Change debug level 2 to print queries only, changed debug heading layout(Bruce)
4030 Change default decimal constant representation from float4 to float8(Bruce)
4031 European date format now set when postmaster is started
4032 Execute lowercase function names if not found with exact case
4033 Fixes for aggregate/GROUP processing, allow 'select sum(func(x),sum(x+y) from z
4034 '
4035 Gist now included in the distrubution(Marc)
4036 Idend authentication of local users(Bryan)
4037 Implement BETWEEN qualifier(Bruce)
4038 Implement IN qualifier(Bruce)
4039 Libpq has PQgetisnull()(Bruce)
4040 Libpq++ improvements
4041 New options to initdb(Bryan)
4042 Pg_dump allow dump of OIDs(Bruce)
4043 Pg_dump create indexes after tables are loaded for speed(Bruce)
4044 Pg_dumpall dumps all databases, and the user table
4045 Pginterface additions for NULL values(Bruce)
4046 Prevent postmaster from being run as root
4047 Psql \h and \? is now readable(Bruce)
4048 Psql allow backslashed, semicolons anywhere on the line(Bruce)
4049 Psql changed command prompt for lines in query or in quotes(Bruce)
4050 Psql char(3) now displays as (bp)char in \d output(Bruce)
4051 Psql return code now more accurate(Bryan?)
4052 Psql updated help syntax(Bruce)
4053 Re-visit and fix vacuum(Vadim)
4054 Reduce size of regression diffs, remove timezone name difference(Bruce)
4055 Remove compile-time parameters to enable binary distributions(Bryan)
4056 Reverse meaning of HBA masks(Bryan)
4057 Secure Authentication of local users(Bryan)
4058 Speed up vacuum(Vadim)
4059 Vacuum now had VERBOSE option(Bruce)
4060
4061 Source tree changes
4062 -------------------
4063 All functions now have prototypes that are compared against the calls
4064 Allow asserts to be disabled easly from Makefile.global(Bruce)
4065 Change oid constants used in code to #define names
4066 Decoupled sparc and solaris defines(Kurt)
4067 Gcc -Wall compiles cleanly with warnings only from unfixable constructs
4068 Major include file reorganization/reduction(Marc)
4069 Make now stops on compile failure(Bryan)
4070 Makefile restructuring(Bryan, Marc)
4071 Merge bsdi_2_1 to bsdi(Bruce)
4072 Monitor program removed
4073 Name change from Postgres95 to PostgreSQL
4074 New config.h file(Marc, Bryan)
4075 PG_VERSION now set to 6.0 and used by postmaster
4076 Portability additions, including Ultrix, DG/UX, AIX, and Solaris
4077 Reduced the number of #define's, centeralized #define's
4078 Remove duplicate OIDS in system tables(Dan)
4079 Remove duplicate system catalog info or report mismatches(Dan)
4080 Removed many os-specific #define's
4081 Restructured object file generation/location(Bryan, Marc)
4082 Restructured port-specific file locations(Bryan, Marc)
4083 Unused/uninialized variables corrected
4084      _________________________________________________________________
4085    
4086                                 Release 1.09
4087                                       
4088      Release date: 1996-11-04
4089      
4090    Sorry, we didn't keep track of changes from 1.02 to 1.09. Some of the
4091    changes listed in 6.0 were actually included in the 1.02.1 to 1.09
4092    releases.
4093      _________________________________________________________________
4094    
4095                                 Release 1.02
4096                                       
4097      Release date: 1996-08-01
4098      _________________________________________________________________
4099    
4100                Migration from version 1.02 to version 1.02.1
4101                                       
4102    Here is a new migration file for 1.02.1. It includes the 'copy' change
4103    and a script to convert old ASCII files.
4104    
4105      Note: The following notes are for the benefit of users who want to
4106      migrate databases from Postgres95 1.01 and 1.02 to Postgres95
4107      1.02.1.
4108      
4109      If you are starting afresh with Postgres95 1.02.1 and do not need
4110      to migrate old databases, you do not need to read any further.
4111      
4112    In order to upgrade older Postgres95 version 1.01 or 1.02 databases to
4113    version 1.02.1, the following steps are required:
4114     1. Start up a new 1.02.1 postmaster
4115     2. Add the new built-in functions and operators of 1.02.1 to 1.01 or
4116        1.02 databases. This is done by running the new 1.02.1 server
4117        against your own 1.01 or 1.02 database and applying the queries
4118        attached at the end of the file. This can be done easily through
4119        "psql". If your 1.01 or 1.02 database is named testdb and you have
4120        cut the commands from the end of this file and saved them in
4121        "addfunc.sql":
4122         % psql testdb -f addfunc.sql
4123        Those upgrading 1.02 databases will get a warning when executing
4124        the last two statements in the file because they are already
4125        present in 1.02. This is not a cause for concern.
4126      _________________________________________________________________
4127    
4128                            Dump/Reload Procedure
4129                                       
4130    If you are trying to reload a pg_dump or text-mode, copy tablename to
4131    stdout generated with a previous version, you will need to run the
4132    attached "sed" script on the ASCII file before loading it into the
4133    database. The old format used '.' as end-of-data, while '\.' is now
4134    the end-of-data marker. Also, empty strings are now loaded in as ''
4135    rather than NULL. See the copy manual page for full details.
4136         sed 's/^\.$/\\./g' <in_file >out_file
4137
4138    If you are loading an older binary copy or non-stdout copy, there is
4139    no end-of-data character, and hence no conversion necessary.
4140 -- following lines added by agc to reflect the case-insensitive
4141 -- regexp searching for varchar (in 1.02), and bpchar (in 1.02.1)
4142 create operator ~* (leftarg = bpchar, rightarg = text, procedure = texticregexe
4143 q);
4144 create operator !~* (leftarg = bpchar, rightarg = text, procedure = texticregex
4145 ne);
4146 create operator ~* (leftarg = varchar, rightarg = text, procedure = texticregex
4147 eq);
4148 create operator !~* (leftarg = varchar, rightarg = text, procedure = texticrege
4149 xne);
4150      _________________________________________________________________
4151    
4152                                   Changes
4153                                       
4154 Source code maintenance and development
4155  * worldwide team of volunteers
4156  * the source tree now in CVS at ftp.ki.net
4157
4158 Enhancements
4159  * psql (and underlying libpq library) now has many more options for
4160    formatting output, including HTML
4161  * pg_dump now output the schema and/or the data, with many fixes to
4162    enhance completeness.
4163  * psql used in place of monitor in administration shell scripts.
4164    monitor to be deprecated in next release.
4165  * date/time functions enhanced
4166  * NULL insert/update/comparison fixed/enhanced
4167  * TCL/TK lib and shell fixed to work with both tck7.4/tk4.0 and tcl7.5/tk4.1
4168
4169 Bug Fixes (almost too numerous to mention)
4170  * indexes
4171  * storage management
4172  * check for NULL pointer before dereferencing
4173  * Makefile fixes
4174
4175 New Ports
4176  * added SolarisX86 port
4177  * added BSD/OS 2.1 port
4178  * added DG/UX port
4179      _________________________________________________________________
4180    
4181                                 Release 1.01
4182                                       
4183      Release date: 1996-02-23
4184      _________________________________________________________________
4185    
4186                  Migration from version 1.0 to version 1.01
4187                                       
4188    The following notes are for the benefit of users who want to migrate
4189    databases from Postgres95 1.0 to Postgres95 1.01.
4190    
4191    If you are starting afresh with Postgres95 1.01 and do not need to
4192    migrate old databases, you do not need to read any further.
4193    
4194    In order to Postgres95 version 1.01 with databases created with
4195    Postgres95 version 1.0, the following steps are required:
4196     1. Set the definition of NAMEDATALEN in "src/Makefile.global" to 16
4197        and OIDNAMELEN to 20.
4198     2. Decide whether you want to use Host based authentication.
4199          a. If you do, you must create a file name pg_hba in your
4200             top-level data directory (typically the value of your
4201             $PGDATA). "src/libpq/pg_hba" shows an example syntax.
4202          b. If you do not want host-based authentication, you can comment
4203             out the line
4204         HBA = 1
4205             in "src/Makefile.global"
4206             Note that host-based authentication is turned on by default,
4207             and if you do not take steps A or B above, the out-of-the-box
4208             1.01 will not allow you to connect to 1.0 databases.
4209     3. Compile and install 1.01, but DO NOT do the "initdb" step.
4210     4. Before doing anything else, terminate your 1.0 postmaster, and
4211        backup your existing $PGDATA directory.
4212     5. Set your PGDATA environment variable to your 1.0 databases, but
4213        set up path up so that 1.01 binaries are being used.
4214     6. Modify the file "$PGDATA/PG_VERSION" from 5.0 to 5.1
4215     7. Start up a new 1.01 postmaster
4216     8. Add the new built-in functions and operators of 1.01 to 1.0
4217        databases. This is done by running the new 1.01 server against
4218        your own 1.0 database and applying the queries attached and saving
4219        in the file 1.0_to_1.01.sql. This can be done easily through
4220        "psql". If your 1.0 database is name testdb:
4221         % psql testdb -f 1.0_to_1.01.sql
4222        and then execute the following commands (cut and paste from here):
4223 -- add builtin functions that are new to 1.01
4224
4225 create function int4eqoid (int4, oid) returns bool as 'foo'
4226 language 'internal';
4227 create function oideqint4 (oid, int4) returns bool as 'foo'
4228 language 'internal';
4229 create function char2icregexeq (char2, text) returns bool as 'foo'
4230 language 'internal';
4231 create function char2icregexne (char2, text) returns bool as 'foo'
4232 language 'internal';
4233 create function char4icregexeq (char4, text) returns bool as 'foo'
4234 language 'internal';
4235 create function char4icregexne (char4, text) returns bool as 'foo'
4236 language 'internal';
4237 create function char8icregexeq (char8, text) returns bool as 'foo'
4238 language 'internal';
4239 create function char8icregexne (char8, text) returns bool as 'foo'
4240 language 'internal';
4241 create function char16icregexeq (char16, text) returns bool as 'foo'
4242 language 'internal';
4243 create function char16icregexne (char16, text) returns bool as 'foo'
4244 language 'internal';
4245 create function texticregexeq (text, text) returns bool as 'foo'
4246 language 'internal';
4247 create function texticregexne (text, text) returns bool as 'foo'
4248 language 'internal';
4249
4250 -- add builtin functions that are new to 1.01
4251
4252 create operator = (leftarg = int4, rightarg = oid, procedure = int4eqoid);
4253 create operator = (leftarg = oid, rightarg = int4, procedure = oideqint4);
4254 create operator ~* (leftarg = char2, rightarg = text, procedure = char2icregexe
4255 q);
4256 create operator !~* (leftarg = char2, rightarg = text, procedure = char2icregex
4257 ne);
4258 create operator ~* (leftarg = char4, rightarg = text, procedure = char4icregexe
4259 q);
4260 create operator !~* (leftarg = char4, rightarg = text, procedure = char4icregex
4261 ne);
4262 create operator ~* (leftarg = char8, rightarg = text, procedure = char8icregexe
4263 q);
4264 create operator !~* (leftarg = char8, rightarg = text, procedure = char8icregex
4265 ne);
4266 create operator ~* (leftarg = char16, rightarg = text, procedure = char16icrege
4267 xeq);
4268 create operator !~* (leftarg = char16, rightarg = text, procedure = char16icreg
4269 exne);
4270 create operator ~* (leftarg = text, rightarg = text, procedure = texticregexeq)
4271 ;
4272 create operator !~* (leftarg = text, rightarg = text, procedure = texticregexne
4273 );
4274      _________________________________________________________________
4275    
4276                                   Changes
4277                                       
4278 Incompatibilities:
4279  * 1.01 is backwards compatible with 1.0 database provided the user
4280    follow the steps outlined in the MIGRATION_from_1.0_to_1.01 file.
4281    If those steps are not taken, 1.01 is not compatible with 1.0 database.
4282
4283 Enhancements:
4284  * added PQdisplayTuples() to libpq and changed monitor and psql to use it
4285  * added NeXT port (requires SysVIPC implementation)
4286  * added CAST .. AS ... syntax
4287  * added ASC and DESC keywords
4288  * added 'internal' as a possible language for CREATE FUNCTION
4289    internal functions are C functions which have been statically linked
4290    into the postgres backend.
4291  * a new type "name" has been added for system identifiers (table names,
4292    attribute names, etc.)  This replaces the old char16 type.   The
4293    of name is set by the NAMEDATALEN #define in src/Makefile.global
4294  * a readable reference manual that describes the query language.
4295  * added host-based access control.  A configuration file ($PGDATA/pg_hba)
4296    is used to hold the configuration data.  If host-based access control
4297    is not desired, comment out HBA=1 in src/Makefile.global.
4298  * changed regex handling to be uniform use of Henry Spencer's regex code
4299    regardless of platform.  The regex code is included in the distribution
4300  * added functions and operators for case-insensitive regular expressions.
4301    The operators are ~* and !~*.
4302  * pg_dump uses COPY instead of SELECT loop for better performance
4303
4304 Bug fixes:
4305  * fixed an optimizer bug that was causing core dumps when
4306    functions calls were used in comparisons in the WHERE clause
4307  * changed all uses of getuid to geteuid so that effective uids are used
4308  * psql now returns non-zero status on errors when using -c
4309  * applied public patches 1-14
4310      _________________________________________________________________
4311    
4312                                 Release 1.0
4313                                       
4314      Release date: 1995-09-05
4315      _________________________________________________________________
4316    
4317                                   Changes
4318                                       
4319 Copyright change:
4320  * The copyright of Postgres 1.0 has been loosened to be freely modifiable
4321    and modifiable for any purpose.  Please read the COPYRIGHT file.
4322    Thanks to Professor Michael Stonebraker for making this possible.
4323
4324 Incompatibilities:
4325  *  date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using
4326    EUROPEAN STYLE).  This follows SQL-92 specs.
4327  *  "delimiters" is now a keyword
4328
4329 Enhancements:
4330  *  sql LIKE syntax has been added
4331  *  copy command now takes an optional USING DELIMITER specification.
4332    delimiters can be any single-character string.
4333  *  IRIX 5.3 port has been added.
4334    Thanks to Paul Walmsley and others.
4335  *  updated pg_dump to work with new libpq
4336  *  \d has been added psql
4337    Thanks to Keith Parks
4338  *  regexp performance for architectures that use POSIX regex has been
4339    improved due to caching of precompiled patterns.
4340    Thanks to Alistair Crooks
4341  *  a new version of libpq++
4342    Thanks to William Wanders
4343
4344 Bug fixes:
4345  *  arbitrary userids can be specified in the createuser script
4346  *  \c to connect to other databases in psql now works.
4347  *  bad pg_proc entry for float4inc() is fixed
4348  *  users with usecreatedb field set can now create databases without
4349    having to be usesuper
4350  *  remove access control entries when the entry no longer has any
4351    permissions
4352  *  fixed non-portable datetimes implementation
4353  *  added kerberos flags to the src/backend/Makefile
4354  *  libpq now works with kerberos
4355  *  typographic errors in the user manual have been corrected.
4356  *  btrees with multiple index never worked, now we tell you they don't
4357    work when you try to use them
4358      _________________________________________________________________
4359    
4360                           Postgres95 Release 0.03
4361                                       
4362      Release date: 1995-07-21
4363      _________________________________________________________________
4364    
4365                                   Changes
4366                                       
4367 Incompatible changes:
4368  * BETA-0.3 IS INCOMPATIBLE WITH DATABASES CREATED WITH PREVIOUS VERSIONS
4369    (due to system catalog changes and indexing structure changes).
4370  * double-quote (") is deprecated as a quoting character for string literals;
4371    you need to convert them to single quotes (').
4372  * name of aggregates (eg. int4sum) are renamed in accordance with the
4373    SQL standard (eg. sum).
4374  * CHANGE ACL syntax is replaced by GRANT/REVOKE syntax.
4375  * float literals (eg. 3.14) are now of type float4 (instead of float8 in
4376    previous releases); you might have to do typecasting if you depend on it
4377    being of type float8.  If you neglect to do the typecasting and you assign
4378    a float literal to a field of type float8, you may get incorrect values
4379    stored!
4380  * LIBPQ has been totally revamped so that frontend applications
4381    can connect to multiple backends
4382  * the usesysid field in pg_user has been changed from int2 to int4 to
4383    allow wider range of Unix user ids.
4384  * the netbsd/freebsd/bsd o/s ports have been consolidated into a
4385    single BSD44_derived port.  (thanks to Alistair Crooks)
4386
4387 SQL standard-compliance (the following details changes that makes postgres95
4388 more compliant to the SQL-92 standard):
4389  * the following SQL types are now built-in: smallint, int(eger), float, real,
4390    char(N), varchar(N), date and time.
4391
4392    The following are aliases to existing postgres types:
4393                 smallint -> int2
4394                 integer, int -> int4
4395                 float, real  -> float4
4396    char(N) and varchar(N) are implemented as truncated text types. In
4397    addition, char(N) does blank-padding.
4398  * single-quote (') is used for quoting string literals; '' (in addition to
4399    \') is supported as means of inserting a single quote in a string
4400  * SQL standard aggregate names (MAX, MIN, AVG, SUM, COUNT) are used
4401    (Also, aggregates can now be overloaded, i.e. you can define your
4402    own MAX aggregate to take in a user-defined type.)
4403  * CHANGE ACL removed. GRANT/REVOKE syntax added.
4404    - Privileges can be given to a group using the "GROUP" keyword.
4405         For example:
4406                 GRANT SELECT ON foobar TO GROUP my_group;
4407         The keyword 'PUBLIC' is also supported to mean all users.
4408
4409         Privileges can only be granted or revoked to one user or group
4410         at a time.
4411
4412         "WITH GRANT OPTION" is not supported.  Only class owners can change
4413         access control
4414    - The default access control is to to grant users readonly access.
4415      You must explicitly grant insert/update access to users.  To change
4416      this, modify the line in
4417                 src/backend/utils/acl.h
4418      that defines ACL_WORLD_DEFAULT
4419
4420 Bug fixes:
4421  * the bug where aggregates of empty tables were not run has been fixed. Now,
4422    aggregates run on empty tables will return the initial conditions of the
4423    aggregates. Thus, COUNT of an empty  table will now properly return 0.
4424    MAX/MIN of an empty table will return a tuple of value NULL.
4425  * allow the use of \; inside the monitor
4426  * the LISTEN/NOTIFY asynchronous notification mechanism now work
4427  * NOTIFY in rule action bodies now work
4428  * hash indexes work, and access methods in general should perform better.
4429    creation of large btree indexes should be much faster.  (thanks to Paul
4430    Aoki)
4431
4432 Other changes and enhancements:
4433  * addition of an EXPLAIN statement used for explaining the query execution
4434    plan (eg. "EXPLAIN SELECT * FROM EMP" prints out the execution plan for
4435    the query).
4436  * WARN and NOTICE messages no longer have timestamps on them. To turn on
4437    timestamps of error messages, uncomment the line in
4438    src/backend/utils/elog.h:
4439         /* define ELOG_TIMESTAMPS */
4440  * On an access control violation, the message
4441         "Either no such class or insufficient privilege"
4442    will be given.  This is the same message that is returned when
4443    a class is not found.  This dissuades non-privileged users from
4444    guessing the existence of privileged classes.
4445  * some additional system catalog changes have been made that are not
4446    visible to the user.
4447
4448 libpgtcl changes:
4449  * The -oid option has been added to the "pg_result" tcl command.
4450    pg_result -oid returns oid of the last tuple inserted.   If the
4451    last command was not an INSERT, then pg_result -oid returns "".
4452  * the large object interface is available as pg_lo* tcl commands:
4453    pg_lo_open, pg_lo_close, pg_lo_creat, etc.
4454
4455 Portability enhancements and New Ports:
4456  * flex/lex problems have been cleared up.  Now, you should be able to use
4457    flex instead of lex on any platforms.  We no longer make assumptions of
4458    what lexer you use based on the platform you use.
4459  * The Linux-ELF port is now supported.  Various configuration have been
4460    tested:  The following configuration is known to work:
4461         kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24
4462    with everything in ELF format,
4463
4464 New utilities:
4465  * ipcclean added to the distribution
4466    ipcclean usually does not need to be run, but if your backend crashes
4467    and leaves shared memory segments hanging around, ipcclean will
4468    clean them up for you.
4469
4470 New documentation:
4471  * the user manual has been revised and libpq documentation added.
4472      _________________________________________________________________
4473    
4474                           Postgres95 Release 0.02
4475                                       
4476      Release date: 1995-05-25
4477      _________________________________________________________________
4478    
4479                                   Changes
4480                                       
4481 Incompatible changes:
4482  * The SQL statement for creating a database is 'CREATE DATABASE' instead
4483    of 'CREATEDB'. Similarly, dropping a database is 'DROP DATABASE' instead
4484    of 'DESTROYDB'. However, the names of the executables 'createdb' and
4485    'destroydb' remain the same.
4486
4487 New tools:
4488  * pgperl - a Perl (4.036) interface to Postgres95
4489  * pg_dump - a utility for dumping out a postgres database into a
4490         script file containing query commands. The script files are in a ASCII
4491         format and can be used to reconstruct the database, even on other
4492         machines and other architectures. (Also good for converting
4493         a Postgres 4.2 database to Postgres95 database.)
4494
4495 The following ports have been incorporated into postgres95-beta-0.02:
4496  * the NetBSD port by Alistair Crooks
4497  * the AIX port by Mike Tung
4498  * the Windows NT port by Jon Forrest (more stuff but not done yet)
4499  * the Linux ELF port by Brian Gallew
4500
4501 The following bugs have been fixed in postgres95-beta-0.02:
4502  * new lines not escaped in COPY OUT and problem with COPY OUT when first
4503    attribute is a '.'
4504  * cannot type return to use the default user id in createuser
4505  * SELECT DISTINCT on big tables crashes
4506  * Linux installation problems
4507  * monitor doesn't allow use of 'localhost' as PGHOST
4508  * psql core dumps when doing \c or \l
4509  * the "pgtclsh" target missing from src/bin/pgtclsh/Makefile
4510  * libpgtcl has a hard-wired default port number
4511  * SELECT DISTINCT INTO TABLE hangs
4512  * CREATE TYPE doesn't accept 'variable' as the internallength
4513  * wrong result using more than 1 aggregate in a SELECT
4514      _________________________________________________________________
4515    
4516                           Postgres95 Release 0.01
4517                                       
4518      Release date: 1995-05-01
4519      
4520    Initial release.