]> granicus.if.org Git - postgresql/blob - HISTORY
Correct busted syntax of CC invocation for tas.s.
[postgresql] / HISTORY
1   ------------------------------------------------------------------------
2                                 Release Notes
3   ------------------------------------------------------------------------
4           
5 Release 7.0
6
7    This release shows the continued growth of PostgreSQL. There are more
8    changes in 7.0 than in any previous release. Don't be concerned this
9    is a dot-zero release. We do our best to put out only solid releases,
10    and this one is no exception.
11    
12 Major changes in this release:
13    
14    Foreign Keys
15           Foreign keys are now implemented, with the exception of PARTIAL
16           MATCH foreign keys. Many users have been asking for this
17           feature, and we are pleased to offer it.
18           
19    Optimizer Overhaul
20           Continuing on work started a year ago, the optimizer has been
21           overhauled, allowing improved query execution and better
22           performance with less memory usage.
23           
24    Updated psql
25           psql, our interactive terminal monitor, has been updated with a
26           variety of new features. See the psql manual page for details.
27           
28    Upcoming Features
29           In 7.1 or 7.2, we plan to have outer joins, storage for very 
30           long rows, and a write-ahead logging system.
31           
32 Migration to v7.0
33
34    A dump/restore using pg_dump is required for those wishing to migrate
35    data from any previous release. For those upgrading from 6.5.*, you
36    can use pg_upgrade to upgrade to this release.
37    
38 Detailed Change List
39 Bug Fixes
40 ---------
41 Prevent function calls with more than maximum number of arguments (Tom)
42 Improve CASE construct (Tom)
43 Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
44 Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
45 Fix GROUP BY scan bug (Tom)
46 Improvements in SQL grammar processing (Tom)
47 Fix for views involved in INSERT ... SELECT ... (Tom)
48 Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom)
49 Fix for subselects in INSERT ... SELECT (Tom)
50 Prevent INSERT ... SELECT ... ORDER BY (Tom)
51 Fixes for relations greater than 2GB, including vacuum
52 Improve communication of system table changes to other running backends (Tom)
53 Improve communication of user table modifications to other running backends (Tom)
54 Fix handling of temp tables in complex situations (Bruce, Tom)
55 Allow table locking when tables opened, improving concurrent reliability (Tom)
56 Properly quote sequence names in pg_dump (Ross J. Reedstrom)
57 Prevent DROP DATABASE while others accessing
58 Prevent any rows from being returned by GROUP BY if no rows processed (Tom)
59 Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom)
60 Fix pg_upgrade so it works for MVCC(Tom)
61 Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) > 1) (Tom)
62 Fix for "f1 datetime DEFAULT 'now'"  (Tom)
63 Fix problems with CURRENT_DATE used in DEFAULT (Tom)
64 Allow comment-only lines, and ;;; lines too. (Tom)
65 Improve recovery after failed disk writes, disk full (Hiroshi)
66 Fix cases where table is mentioned in FROM but not joined (Tom)
67 Allow HAVING clause without aggregate functions (Tom)
68 Fix for "--" comment and no trailing newline, as seen in Perl
69 Improve pg_dump failure  error reports (Bruce)
70 Allow sorts and hashes to exceed 2GB file sizes (Tom)
71 Fix for pg_dump dumping of inherited rules (Tom)
72 Fix for NULL handling comparisons (Tom)
73 Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi)
74 Fix for dbname with dash
75 Prevent DROP INDEX from interfering with other backends (Tom)
76 Fix file descriptor leak in verify_password()
77 Fix for "Unable to identify an operator =$" problem
78 Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann)
79 Fix for recursive exit call (Massimo)
80 Fix for extra-long timezones (Jeroen van Vianen)
81 Make pg_dump preserve primary key information (Peter E)
82 Prevent databases with single quotes (Peter E)
83 Prevent DROP DATABASE inside  transaction (Peter E)
84 ecpg memory leak fixes (Stephen Birch)
85 Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom)
86 Y2K timestamp fix (Massimo)
87 Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom)
88 Fix for views with tables/columns containing spaces  (Tom)
89 Prevent permissions on indexes (Peter E)
90 Fix for spinlock stuck problem when error is generated (Hiroshi)
91 Fix ipcclean on Linux
92 Fix handling of NULL constraint conditions (Tom)
93 Fix memory leak in odbc driver (Nick Gorham)
94 Fix for permission check on UNION tables (Tom)
95 Fix to allow SELECT 'a' LIKE 'a' (Tom)
96 Fix for SELECT 1 + NULL (Tom)
97 Fixes to CHAR
98 Fix log() on numeric type (Tom)
99 Deprecate ':' and ';' operators
100 Allow vacuum of temporary tables
101 Disallow inherited columns with the same name as new columns
102 Recover or force failure when disk space is exhausted(Hiroshi)
103 Fix INSERT INTO ... SELECT with AS columns matching result columns
104 Fix INSERT ... SELECT ... GROUP BY groups by target columns not source columns(Tom)
105 Fix CREATE TABLE test (a char(5) DEFAULT text '', b int4) with INSERT(Tom)
106 Fix UNION with LIMIT
107 Fix CREATE TABLE x AS SELECT 1 UNION SELECT 2
108 Fix CREATE TABLE test(col char(2) DEFAULT user)
109 Fix mismatched types in CREATE TABLE ... DEFAULT
110 Fix SELECT * FROM pg_class where oid in (0,-1)
111 Fix SELECT COUNT('asdf') FROM pg_class WHERE oid=12
112 Prevent user who can create databases can modifying pg_database table(Peter E)
113 Fix btree to give a useful elog when key > 1/2 (page - overhead)(Tom)
114 Fix INSERT of 0.0 into DECIMAL(4,4) field(Tom)
115
116 Enhancements
117 ------------
118 New CLI interface include file sqlcli.h, based on SQL3/SQL98
119 Remove all limits on query length, row length limit still exists (Tom)
120 Update jdbc protocol to 2.0 (<ulink url="mailto:jens@jens.de">Jens Glaser</ulink>)
121 Add TRUNCATE command to quickly truncate relation (Mike Mascari)
122 Fix to give super user and createdb user proper update catalog rights (Peter E)
123 Allow ecpg bool variables to have NULL values (Christof)
124 Issue ecpg error if NULL value is returned to variable with no NULL
125 indicator (Christof)
126 Allow ^C to cancel COPY command (Massimo)
127 Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo)
128 Function name overloading for dynamically-loaded C functions (Frankpitt)
129 Add CmdTuples() to libpq++(Vince)
130 New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan)
131 Allow CREATE FUNCTION/WITH clause to be used for all language types
132 configure --enable-debug adds -g (Peter E)
133 configure --disable-debug removes -g (Peter E)
134 Allow more complex default expressions (Tom)
135 First real FOREIGN KEY constraint trigger functionality (Jan)
136 Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan)
137 Add FOREIGN KEY ... MATCH &lt;unspecified&gt; referential actions (Don Baccus)
138 Allow WHERE restriction on ctid (physical heap location) (Hiroshi)
139 Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
140 Change pgeasy connectdb() parameter ordering (Bruce)
141 Add DEC and SESSION_USER as reserved words (Thomas)
142 Require SELECT DISTINCT target list to have all ORDER BY columns (Tom)
143 Add Oracle's COMMENT ON command (<ulink url="mailto:mascarim@yahoo">Mike Mascari</ulink>)
144 libpq's PQsetNoticeProcessor function now returns previous hook(Peter E)
145 Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
146 Make USING in COPY optional (Bruce)
147 Allow subselects in the target list (Tom)
148 Allow subselects on the left side of comparison operators (Tom)
149 New parallel regression test (Jan)
150 Change backend-side COPY to write files with permissions 644 not 666 (Tom)
151 Force permissions on PGDATA directory to be secure, even if it exists (Tom)
152 Added psql LASTOID variable to return last inserted oid (Peter E)
153 Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom)
154 Add permissions check so only Postgres superuser or table owner can
155 vacuum (Peter E)
156 New libpq functions to allow asynchronous connections: PQconnectStart(), 
157    PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(), 
158    PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
159 New libpq PQsetenv() function (Ewan Mellor)
160 create/alter user extension (Peter E)
161 New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo)
162 New scripts for create/drop user/db (Peter E)
163 Major psql overhaul(Peter E)
164 Add const to libpq interface(Peter E)
165 New libpq function PQoidValue (Peter E)
166 Show specific non-aggregate causing problem with GROUP BY (Tom)
167 Make changes to pg_shadow recreate pg_pwd file (Peter E)
168 Add aggregate(DISTINCT ...) (Tom)
169 Allow flag to control COPY input/output of NULLs (Peter E)
170 Make postgres user have a password by default (Peter E)
171 Add CREATE/ALTER/DROP GROUP (Peter E)
172 All administration scripts now support --long options (Peter E, Karel)
173 Vacuumdb script now supports --all option (Peter E)
174 ecpg new portable FETCH syntax
175 Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF 
176         and EXEC SQL ENDIF directives
177 Add pg_ctl script to control backend startup (Tatsuo)
178 Add postmaster.opts.default file to store startup flags (Tatsuo)
179 Allow --with-mb=SQL_ASCII
180 Increase maximum number of index keys to 16 (Bruce)
181 Increase maximum number of function arguments to 16 (Bruce)
182 Allow configuration of maximum number of index keys and arguments (Bruce)
183 Allow unprivileged users to change their passwords (Peter E)
184 Password authentication enabled; required for new users (Peter E)
185 Disallow dropping a user who owns a database (Peter E)
186 Change initdb option --with-mb to --enable-multibyte
187 Add option for initdb to prompts for superuser password (Peter E)
188 Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom)
189 Updated user interfaces on initdb, initlocation, pg_dump, ipcclean (Peter E)
190 New pg_char_to_encoding() and pg_encoding_to_char() functions (Tatsuo)
191 Libpq non-blocking mode (Alfred Perlstein)
192 Improve conversion of types in casts that don't specify a length
193 New plperl internal programming language (Mark Hollomon)
194 Allow COPY IN to read file that do not end with a newline (Tom)
195 Indicate when long identifiers are truncated (Tom)
196 Allow aggregates to use type equivalency (Peter E)
197 Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number()
198         conversion functions (Karel Zak &lt;zakkr@zf.jcu.cz&gt;)
199 Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
200 Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
201 Add NUMERIC and int8 types to ODBC
202 Improve EXPLAIN results for Append, Group, Agg, Unique (Tom)
203 Add ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo)
204 Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi)
205 Enable backward sequential scan even after reaching EOF (Hiroshi)
206 Add btree indexing of boolean values, &gt;= and &lt;= (Don Baccus)
207 Print current line number when COPY FROM fails (Massimo)
208 Recognize special case of POSIX time zone: "GMT+8" and "GMT-8" (Thomas)
209 Add DEC as synonym for "DECIMAL" (Thomas)
210 Add SESSION_USER as SQL92 keyword, same as CURRENT_USER (Thomas)
211 Implement column aliases (aka correlation names) and join syntax (Thomas)
212 Allow queries like SELECT a FROM t1 tx (a) (Thomas)
213 Allow queries like SELECT * FROM t1 NATURAL JOIN t2 (Thomas)
214 Make INTERVAL reserved word allowed as a column identifier (Thomas)
215 Implement REINDEX command (Hiroshi)
216 Accept ALL in aggregate function SUM(ALL col) (Tom)
217 Prevent GROUP BY from using column aliases (Tom)
218 New psql \encoding option (Tatsuo)
219 Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi)
220 Allow negation of a negative number in all cases
221 Add ecpg descriptors (Christof, Michael)
222 Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl
223 Allow casts with length, like foo::char(8)
224 New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo)
225 Add support for SJIS user defined characters (Tatsuo)
226 Larger views/rules supported
227 Make libpq's PQconndefaults() thread-safe (Tom)
228 Disable // as comment to be ANSI conforming, should use -- (Tom)
229 Allow column aliases on views CREATE VIEW name (collist)
230 Fixes for views with subqueries (Tom)
231 Allow UPDATE table SET fld = (SELECT ...) (Tom)
232 SET command options no longer require quotes
233 Update pgaccess to 0.98.6
234 New SET SEED command
235 New pg_options.sample file
236 New SET FSYNC command (Massimo)
237 Allow pg_descriptions when creating tables
238 Allow pg_descriptions when creating types, columns, and functions
239 Allow psql \copy to allow delimiters(Peter E)
240 Allow psql to print nulls as distinct from "" [null](Peter E)
241
242 Types
243 -----
244 Many array fixes (Tom)
245 Allow bare column names to be subscripted as arrays (Tom)
246 Improve type casting of int and float constants (Tom)
247 Cleanups for int8 inputs, range checking, and type conversion (Tom)
248 Fix for SELECT timespan('21:11:26'::time) (Tom)
249 Fix for netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0 
250         (Oleg Sharoiko)
251 Add btree index on NUMERIC(Jan)
252 Perl fix for large objects containing NUL characters (Douglas Thomson) 
253 ODBC fix for for large objects (free)
254 Fix indexing of cidr data type
255 Fix for Ethernet MAC addresses (macaddr type) comparisons
256 Fix for date/time types when overflows happened in computations (Tom)
257 Allow array on int8 (Peter E)
258 Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom)
259 Allow NUMERIC arrays
260 Fix bugs in NUMERIC ceil() and floor() functions (Tom)
261 Make char_length()/octet_length including trailing blanks (Tom)
262 Made abstime/reltime use int4 instead of time_t (Peter E)
263 New lztext data type for compressed text fields
264 Revise code to handle coercion of int and float constants (Tom)
265 New C-routines to implement a BIT and BIT VARYING type in /contrib 
266         (Adriaan Joubert)
267 NUMERIC now accepts scientific notation (Tom)
268 NUMERIC to int4 rounds (Tom)
269 Convert float4/8 to NUMERIC properly (Tom)
270 Allow type conversion with NUMERIC (Thomas)
271 Make ISO date style (2000-02-16 09:33) the default (Thomas)
272 Add NATIONAL CHAR [ VARYING ]
273 Allow NUMERIC round and trunc to accept negative scales (Tom)
274 New TIME WITH TIME ZONE type (Thomas)
275 Add MAX()/MIN() on time type (Thomas)
276 Add abs(), mod(), fac() for int8 (Thomas)
277 Add round(), sqrt(), cbrt(), pow()
278 Rename NUMERIC power() to pow()
279 Improved TRANSLATE() function
280 Allow X=-Y operators  (Tom)
281 Add exp() and ln() as NUMERIC types
282 Allow SELECT float8(COUNT(*)) / (SELECT COUNT(*) FROM int4_tbl) FROM int4_tbl
283         GROUP BY f1; (Tom)
284 Allow LOCALE to use indexes in regular expression searches(Tom)
285 Allow creation of functional indexes to use default types
286
287 Performance
288 -----------
289 Prevent exponential space consumption with many AND's and OR's (Tom)
290 Collect attribute selectivity values for system columns (Tom)
291 Reduce memory usage of aggregates (Tom)
292 Fix for LIKE optimization to use indexes with multi-byte encodings (Tom)
293 Fix r-tree index optimizer selectivity (Thomas)
294 Improve optimizer selectivity computations and functions (Tom)
295 Optimize btree searching for cases where many equal keys exist (Tom)
296 Enable fast LIKE index processing only if index present (Tom)
297 Re-use free space on index pages with duplicates (Tom)
298 Improve hash join processing (Tom)
299 Prevent descending sort if result is already sorted(Hiroshi)
300 Allow commuting of index scan query qualifications (Tom)
301 Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom)
302 Allocate large memory requests in fix-sized chunks for performance (Tom)
303 Fix vacuum's performance by reducing memory allocation requests (Tom)
304 Implement constant-expression simplification (Bernard Frankpitt, Tom)
305 Allow more than first column to be used to determine start of index scan
306    (Hiroshi)
307 Prevent quadruple use of disk space when doing internal sorting (Tom)
308 Faster sorting by calling fewer functions (Tom)
309 Create system indexes to match all system caches (Bruce, Hiroshi)
310 Make system caches use system indexes(Bruce)
311 Make all system indexes unique(Bruce)
312 Improve pg_statistics management for VACUUM speed improvement (Tom)
313 Flush backend cache less frequently (Tom, Hiroshi)
314 COPY now reuses previous memory allocation, improving performance (Tom)
315 Improve optimization cost estimation (Tom)
316 Improve optimizer estimate of range queries x &gt; lowbound AND x &lt; highbound (Tom)
317 Use DNF instead of CNF where appropriate (Tom, Taral)
318 Further cleanup for OR-of-AND WHERE-clauses (Tom)
319 Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom)
320 Smarter optimizer computations for random index page access (Tom)
321 New SET variable to control optimizer costs (Tom)
322 Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
323 Reduce optimizer internal housekeeping of join paths for speedup (Tom)
324 Major subquery speedup (Tom)
325 Fewer fsync writes when fsync is not disabled(Tom)
326 Improved LIKE optimizer estimates(Tom)
327 Prevent fsync in SELECT-only queries(Vadim)
328 Make index creation use psort code, because it is now faster(Tom)
329 Allow creation of sort temp tables > 1 Gig
330
331 Source Tree Changes
332 -------------------
333 Fix for linux PPC compile
334 New generic expression-tree-walker subroutine (Tom)
335 Change form() to varargform() to prevent portability problems.
336 Improved range checking for large integers on Alphas
337 Clean up #include in /include directory (Bruce)
338 Add scripts for checking includes (Bruce)
339 Remove un-needed #include's from *.c files (Bruce)
340 Change #include's to use &lt;&gt; and "" as appropriate (Bruce)
341 Enable WIN32 compilation of libpq
342 Alpha spinlock fix from <ulink url="mailto:gatgul@voicenet.com">Uncle George</ulink>
343 Overhaul of optimizer data structures (Tom)
344 Fix to cygipc library (Yutaka Tanida)
345 Allow pgsql to work on newer Cygwin snapshots(Dan)
346 New catalog version number (Tom)
347 Add Linux ARM.
348 Rename heap_replace to heap_update
349 Update for QNX (Dr. Andreas Kardos)
350 New platform-specific regression handling (Tom)
351 Rename oid8 -&gt; oidvector and int28 -&gt; int2vector (Bruce)
352 Included all yacc and lex files into the distribution (Peter E.)
353 Remove lextest, no longer needed (Peter E)
354 Fix for libpq and psql on Win32 (Magnus)
355 Internally change datetime and timespan into timestamp and interval (Thomas)
356 Fix for plpgsql on BSDI
357 Add SQL_ASCII test case to the regression test (Tatsuo)
358 configure --with-mb now deprecated (Tatsuo)
359 NT fixes
360 NetBSD fixes <ulink url="mailto:lamj@stat.cmu.edu">Johnny C. Lam</ulink>
361 Fixes for Alpha compiles
362 New multibyte encodings
363
364
365
366 Release 6.5.3
367
368 This is basically a cleanup release for 6.5.2. We have added a new pgaccess
369 that was missing in 6.5.2, and installed an NT-specific fix.
370
371 Migration to v6.5.3
372
373 A dump/restore is not required for those running 6.5.*.
374
375 Detailed Change List
376
377 Updated version of pgaccess 0.98
378 NT-specific patch
379
380   ------------------------------------------------------------------------
381                                                                Release 6.5.2
382                                 Release Notes
383   ------------------------------------------------------------------------
384
385 Release 6.5.2
386
387 This is basically a cleanup release for 6.5.1. We have fixed a variety of
388 problems reported by 6.5.1 users.
389
390 Migration to v6.5.2
391
392 A dump/restore is not required for those running 6.5.*.
393
394 Detailed Change List
395
396 subselect+CASE fixes(Tom)
397 Add SHLIB_LINK setting for solaris_i386 and solaris_sparc ports(Daren Sefcik)
398 Fixes for CASE in WHERE join clauses(Tom)
399 Fix BTScan abort(Tom)
400 Repair the check for redundant UNIQUE and PRIMARY KEY indices(Thomas)
401 Improve it so that it checks for multi-column constraints(Thomas)
402 Fix for Win32 making problem with MB enabled(Hiroki Kataoka)
403 Allow BSD yacc and bison to compile pl code(Bruce)
404 Fix SET NAMES working
405 int8 fixes(Thomas)
406 Fix vacuum's memory consumption(Hiroshi,Tatsuo)
407 Reduce the total memory consumption of vacuum(Tom)
408 Fix for timestamp(datetime)
409 Rule deparsing bugfixes(Tom)
410 Fix quoting problems in mkMakefile.tcldefs.sh.in and mkMakefile.tkdefs.sh.in(Tom)
411 This is to re-use space on index pages freed by vacuum(Vadim)
412 document -x for pg_dump(Bruce)
413 Fix for unary operators in rule deparser(Tom)
414 Comment out FileUnlink of excess segments during mdtruncate()(Tom)
415 Irix linking fix from Yu Cao yucao@falcon.kla-tencor.com
416 Repair logic error in LIKE: should not return LIKE_ABORT
417    when reach end of pattern before end of text(Tom)
418 Repair incorrect cleanup of heap memory allocation during transaction abort(Tom)
419 Updated version of pgaccess 0.98
420
421   ------------------------------------------------------------------------
422 Release Notes                                                  Release 6.5.1
423                                 Release Notes
424   ------------------------------------------------------------------------
425
426 Release 6.5.1
427
428 This is basically a cleanup release for 6.5. We have fixed a variety of
429 problems reported by 6.5 users.
430
431 Migration to v6.5.1
432
433 A dump/restore is not required for those running 6.5.
434
435 Detailed Change List
436
437 Add NT README file
438 Portability fixes for linux_ppc, Irix, linux_alpha, OpenBSD, alpha
439 Remove QUERY_LIMIT, use SELECT...LIMIT
440 Fix for EXPLAIN on inheritance(Tom)
441 Patch to allow vacuum on multi-segment tables(Hiroshi)
442 R-Tree optimizer selectivity fix(Tom)
443 ACL file descriptor leak fix(Atsushi Ogawa)
444 New expresssion subtree code(Tom)
445 Avoid disk writes for read-only transactions(Vadim)
446 Fix for removal of temp tables if last transaction was aborted(Bruce)
447 Fix to prevent too large tuple from being created(Bruce)
448 plpgsql fixes
449 Allow port numbers 32k - 64k(Bruce)
450 Add ^ precidence(Bruce)
451 Rename sort files called pg_temp to pg_sorttemp(Bruce)
452 Fix for microseconds in time values(Tom)
453 Tutorial source cleanup
454 New linux_m68k port
455 Fix for sorting of NULL's in some cases(Tom)
456 Shared library dependencies fixed (Tom)
457 Fixed glitches affecting GROUP BY in subselects(Tom)
458 Fix some compiler warnings (Tomoaki Nishiyama)
459 Add Win1250 (Czech) support (Pavel Behal)
460
461   ------------------------------------------------------------------------
462 Release 6.5.2                                                    Release 6.5
463                                 Release Notes
464   ------------------------------------------------------------------------
465
466 Release 6.5
467
468 This release marks a major step in the development team's mastery of the
469 source code we inherited from Berkeley. You will see we are now easily
470 adding major features, thanks to the increasing size and experience of our
471 world-wide development team.
472
473 Here is a brief summary of the more notable changes:
474
475 Multi-version concurrency control(MVCC)
476
477      This removes our old table-level locking, and replaces it with a
478      locking system that is superior to most commercial database systems. In
479      a traditional system, each row that is modified is locked until
480      committed, preventing reads by other users. MVCC uses the natural
481      multi-version nature of PostgreSQL to allow readers to continue reading
482      consistent data during writer activity. Writers continue to use the
483      compact pg_log transaction system. This is all performed without having
484      to allocate a lock for every row like traditional database systems. So,
485      basically, we no longer are restricted by simple table-level locking;
486      we have something better than row-level locking.
487
488 Hot backups from pg_dump
489
490      pg_dump takes advantage of the new MVCC features to give a consistant
491      database dump/backup while the database stays online and available for
492      queries.
493
494 Numeric data type
495
496      We now have a true numeric data type, with user-specified precision.
497
498 Temporary tables
499
500      Temporary tables are guaranteed to have unique names within a database
501      session, and are destroyed on session exit.
502
503 New SQL features
504
505      We now have CASE, INTERSECT, and EXCEPT statement support. We have new
506      LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL, SELECT ... FOR UPDATE,
507      and an improved LOCK TABLE command.
508
509 Speedups
510
511      We continue to speed up PostgreSQL, thanks to the variety of talents
512      within our team. We have sped up memory allocation, optimization, table
513      joins, and row transfer routines.
514
515 Ports
516
517      We continue to expand our port list, this time including WinNT/ix86 and
518      NetBSD/arm32.
519
520 Interfaces
521
522      Most interfaces have new versions, and existing functionality has been
523      improved.
524
525 Documentation
526
527      New and updated material is present throughout the documentation. New
528      FAQs have been contributed for SGI and AIX platforms. The Tutorial has
529      introductory information on SQL from Stefan Simkovics. For the User's
530      Guide, there are reference pages covering the postmaster and more
531      utility programs, and a new appendix contains details on date/time
532      behavior. The Administrator's Guide has a new chapter on
533      troubleshooting from Tom Lane. And the Programmer's Guide has a
534      description of query processing, also from Stefan, and details on
535      obtaining the Postgres source tree via anonymous CVS and CVSup.
536
537 Migration to v6.5
538
539 A dump/restore using pg_dump is required for those wishing to migrate data
540 from any previous release of Postgres. pg_upgrade can not be used to upgrade
541 to this release because the on-disk structure of the tables has changed
542 compared to previous releases.
543
544 The new Multi-Version Concurrency Control (MVCC) features can give somewhat
545 different behaviors in multi-user environments. Read and understand the
546 following section to ensure that your existing applications will give you
547 the behavior you need.
548
549 Multi-Version Concurrency Control
550
551 Because readers in 6.5 don't lock data, regardless of transaction isolation
552 level, data read by one transaction can be overwritten by another. In other
553 words, if a row is returned by SELECT it doesn't mean that this row really
554 exists at the time it is returned (i.e. sometime after the statement or
555 transaction began) nor that the row is protected from being deleted or
556 updated by concurrent transactions before the current transaction does a
557 commit or rollback.
558
559 To ensure the actual existence of a row and protect it against concurrent
560 updates one must use SELECT FOR UPDATE or an appropriate LOCK TABLE
561 statement. This should be taken into account when porting applications from
562 previous releases of Postgres and other environments.
563
564 Keep the above in mind if you are using contrib/refint.* triggers for
565 referential integrity. Additional technics are required now. One way is to
566 use LOCK parent_table IN SHARE ROW EXCLUSIVE MODE command if a transaction
567 is going to update/delete a primary key and use LOCK parent_table IN SHARE
568 MODE command if a transaction is going to update/insert a foreign key.
569
570      Note: Note that if you run a transaction in SERIALIZABLE mode then
571      you must execute the LOCK commands above before execution of any
572      DML statement (SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO) in the
573      transaction.
574
575 These inconveniences will disappear in the future when the ability to read
576 dirty (uncommitted) data (regardless of isolation level) and true
577 referential integrity will be implemented.
578
579 Detailed Change List
580
581 Bug Fixes
582 ---------
583 Fix text<->float8 and text<->float4 conversion functions(Thomas)
584 Fix for creating tables with mixed-case constraints(Billy)
585 Change exp()/pow() behavior to generate error on underflow/overflow(Jan)
586 Fix bug in pg_dump -z
587 Memory overrun cleanups(Tatsuo)
588 Fix for lo_import crash(Tatsuo)
589 Adjust handling of data type names to suppress double quotes(Thomas)
590 Use type coersion for matching columns and DEFAULT(Thomas)
591 Fix deadlock so it only checks once after one second of sleep(Bruce)
592 Fixes for aggregates and PL/pgsql(Hiroshi)
593 Fix for subquery crash(Vadim)
594 Fix for libpq function PQfnumber and case-insensitive names(Bahman Rafatjoo)
595 Fix for large object write-in-middle, no extra block, memory consumption(Tatsuo)
596 Fix for pg_dump -d or -D and  quote special characters in INSERT
597 Repair serious problems with dynahash(Tom)
598 Fix INET/CIDR portability problems
599 Fix problem with selectivity error in ALTER TABLE ADD COLUMN(Bruce)
600 Fix executor so mergejoin of different column types works(Tom)
601 Fix for Alpha OR selectivity bug
602 Fix OR index selectivity problem(Bruce)
603 Fix so \d shows proper length for char()/varchar()(Ryan)
604 Fix tutorial code(Clark)
605 Improve destroyuser checking(Oliver)
606 Fix for Kerberos(Rodney McDuff)
607 Fix for dropping database while dirty buffers(Bruce)
608 Fix so sequence nextval() can be case-sensitive(Bruce)
609 Fix !!= operator
610 Drop buffers before destroying database files(Bruce)
611 Fix case where executor evaluates functions twice(Tatsuo)
612 Allow sequence nextval actions to be case-sensitive(Bruce)
613 Fix optimizer indexing not working for negative numbers(Bruce)
614 Fix for memory leak in executor with fjIsNull
615 Fix for aggregate memory leaks(Erik Riedel)
616 Allow username containing a dash GRANT permissions
617 Cleanup of NULL in inet types
618 Clean up system table bugs(Tom)
619 Fix problems of PAGER and \? command(Masaaki Sakaida)
620 Reduce default multi-segment file size limit to 1GB(Peter)
621 Fix for dumping of CREATE OPERATOR(Tom)
622 Fix for backward scanning of cursors(Hiroshi Inoue)
623 Fix for COPY FROM STDIN when using \i(Tom)
624 Fix for subselect is compared inside an expression(Jan)
625 Fix handling of error reporting while returning rows(Tom)
626 Fix problems with reference to array types(Tom,Jan)
627 Prevent UPDATE SET oid(Jan)
628 Fix pg_dump so -t option can handle case-sensitive tablenames
629 Fixes for GROUP BY in special cases(Tom, Jan)
630 Fix for memory leak in failed queries(Tom)
631 DEFAULT now supports mixed-case identifiers(Tom)
632 Fix for multi-segment uses of DROP/RENAME table, indexes(Ole Gjerde)
633 Disable use of pg_dump with both -o and -d options(Bruce)
634 Allow pg_dump to properly dump GROUP permissions(Bruce)
635 Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan)
636 Fix for computations in views(Jan)
637 Fix for aggregates on array indexes(Tom)
638 Fix for DEFAULT handles single quotes in value requiring too many quotes
639 Fix security problem with non-super users importing/exporting large objects(Tom)
640 Rollback of transaction that creates table cleaned up properly(Tom)
641 Fix to allow long table and column names to generate proper serial names(Tom)
642
643 Enhancements
644 ------------
645 Add "vacuumdb" utility
646 Speed up libpq by allocating memory better(Tom)
647 EXPLAIN all indices used(Tom)
648 Implement CASE, COALESCE, NULLIF  expression(Thomas)
649 New pg_dump table output format(Constantin)
650 Add string min()/max() functions(Thomas)
651 Extend new type coersion techniques to aggregates(Thomas)
652 New moddatetime contrib(Terry)
653 Update to pgaccess 0.96(Constantin)
654 Add routines for single-byte "char" type(Thomas)
655 Improved substr() function(Thomas)
656 Improved multi-byte handling(Tatsuo)
657 Multi-version concurrency control/MVCC(Vadim)
658 New Serialized mode(Vadim)
659 Fix for tables over 2gigs(Peter)
660 New SET TRANSACTION ISOLATION LEVEL(Vadim)
661 New LOCK TABLE IN ... MODE(Vadim)
662 Update ODBC driver(Byron)
663 New NUMERIC data type(Jan)
664 New SELECT FOR UPDATE(Vadim)
665 Handle "NaN" and "Infinity" for input values(Jan)
666 Improved date/year handling(Thomas)
667 Improved handling of backend connections(Magnus)
668 New options ELOG_TIMESTAMPS and USE_SYSLOG options for log files(Massimo)
669 New TCL_ARRAYS option(Massimo)
670 New INTERSECT and EXCEPT(Stefan)
671 New pg_index.indisprimary for primary key tracking(D'Arcy)
672 New pg_dump option to allow dropping of tables before creation(Brook)
673 Speedup of row output routines(Tom)
674 New READ COMMITTED isolation level(Vadim)
675 New TEMP tables/indexes(Bruce)
676 Prevent sorting if result is already sorted(Jan)
677 New memory allocation optimization(Jan)
678 Allow psql to do \p\g(Bruce)
679 Allow multiple rule actions(Jan)
680 Added LIMIT/OFFSET functionality(Jan)
681 Improve optimizer when joining a large number of tables(Bruce)
682 New intro to SQL from S. Simkovics' Master's Thesis (Stefan, Thomas)
683 New intro to backend processing from S. Simkovics' Master's Thesis (Stefan)
684 Improved int8 support(Ryan Bradetich, Thomas, Tom)
685 New routines to convert between int8 and text/varchar types(Thomas)
686 New bushy plans, where meta-tables are joined(Bruce)
687 Enable right-hand queries by default(Bruce)
688 Allow reliable maximum number of backends to be set at configure time
689       (--with-maxbackends and postmaster switch (-N backends))(Tom)
690 GEQO default now 10 tables because of optimizer speedups(Tom)
691 Allow NULL=Var for MS-SQL portability(Michael, Bruce)
692 Modify contrib check_primary_key() so either "automatic" or "dependent"(Anand)
693 Allow psql \d on a view show query(Ryan)
694 Speedup for LIKE(Bruce)
695 Ecpg fixes/features, see src/interfaces/ecpg/ChangeLog file(Michael)
696 JDBC fixes/features, see src/interfaces/jdbc/CHANGELOG(Peter)
697 Make % operator have precedence like /(Bruce)
698 Add new postgres -O option to allow system table structure changes(Bruce)
699 Update contrib/pginterface/findoidjoins script(Tom)
700 Major speedup in vacuum of deleted rows with indexes(Vadim)
701 Allow non-SQL functions to run different versions based on arguments(Tom)
702 Add -E option that shows actual queries sent by \dt and friends(Masaaki Sakaida)
703 Add version number in startup banners for psql(Masaaki Sakaida)
704 New contrib/vacuumlo removes large objects not referenced(Peter)
705 New initialization for table sizes so non-vacuumed tables perform better(Tom)
706 Improve error messages when a connection is rejected(Tom)
707 Support for arrays of char() and varchar() fields(Massimo)
708 Overhaul of hash code to increase reliability and performance(Tom)
709 Update to PyGreSQL 2.4(D'Arcy)
710 Changed debug options so -d4 and -d5 produce different node displays(Jan)
711 New pg_options: pretty_plan, pretty_parse, pretty_rewritten(Jan)
712 Better optimization statistics for system table access(Tom)
713 Better handling of non-default block sizes(Massimo)
714 Improve GEQO optimizer memory consumption(Tom)
715 UNION now suppports ORDER BY of columns not in target list(Jan)
716 Major libpq++ improvements(Vince Vielhaber)
717 pg_dump now uses -z(ACL's) as default(Bruce)
718 backend cache, memory speedups(Tom)
719 have pg_dump do everything in one snapshot transaction(Vadim)
720 fix for large object memory leakage, fix for pg_dumping(Tom)
721 INET type now respects netmask for comparisons
722 Make VACUUM ANALYZE only use a readlock(Vadim)
723 Allow VIEWs on UNIONS(Jan)
724 pg_dump now can generate consistent snapshots on active databases(Vadim)
725
726 Source Tree Changes
727 -------------------
728 Improve port matching(Tom)
729 Portability fixes for SunOS
730 Add NT/Win32 backend port and enable dynamic loading(Magnus and Daniel Horak)
731 New port to Cobalt Qube(Mips) running Linux(Tatsuo)
732 Port to NetBSD/m68k(Mr. Mutsuki Nakajima)
733 Port to NetBSD/sun3(Mr. Mutsuki Nakajima)
734 Port to NetBSD/macppc(Toshimi Aoki)
735 Fix for tcl/tk configuration(Vince)
736 Removed CURRENT keyword for rule queries(Jan)
737 NT dynamic loading now works(Daniel Horak)
738 Add ARM32 support(Andrew McMurry)
739 Better support for HPUX 11 and Unixware
740 Improve file handling to be more uniform, prevent file descriptor leak(Tom)
741 New install commands for plpgsql(Jan)
742
743
744   ------------------------------------------------------------------------
745 Release 6.5.1                                                  Release 6.4.2
746                                 Release Notes
747   ------------------------------------------------------------------------
748
749 Release 6.4.2
750
751 The 6.4.1 release was improperly packaged. This also has one additional bug
752 fix.
753
754 Migration to v6.4.2
755
756 A dump/restore is not required for those running 6.4.*.
757
758 Detailed Change List
759
760 Fix for datetime constant problem on some platforms(Thomas)
761
762   ------------------------------------------------------------------------
763 Release 6.5                                                    Release 6.4.1
764                                 Release Notes
765   ------------------------------------------------------------------------
766
767 Release 6.4.1
768
769 This is basically a cleanup release for 6.4. We have fixed a variety of
770 problems reported by 6.4 users.
771
772 Migration to v6.4.1
773
774 A dump/restore is not required for those running 6.4.
775
776 Detailed Change List
777
778 Add pg_dump -N flag to force double quotes around identifiers.  This is
779         the default(Thomas)
780 Fix for NOT in where clause causing crash(Bruce)
781 EXPLAIN VERBOSE coredump fix(Vadim)
782 Fix shared-library problems on Linux
783 Fix test for table existance to allow mixed-case and whitespace in
784         the table name(Thomas)
785 Fix a couple of pg_dump bugs
786 Configure matches template/.similar entries better(Tom)
787 Change builtin function names from SPI_* to spi_*
788 OR WHERE clause fix(Vadim)
789 Fixes for mixed-case table names(Billy)
790 contrib/linux/postgres.init.csh/sh fix(Thomas)
791 libpq memory overrun fix
792 SunOS fixes(Tom)
793 Change exp() behavior to generate error on underflow(Thomas)
794 pg_dump fixes for memory leak, inheritance constraints, layout change
795 update pgaccess to 0.93
796 Fix prototype for 64-bit platforms
797 Multi-byte fixes(Tatsuo)
798 New ecpg man page
799 Fix memory overruns(Tatsuo)
800 Fix for lo_import() crash(Bruce)
801 Better search for install program(Tom)
802 Timezone fixes(Tom)
803 HPUX fixes(Tom)
804 Use implicit type coersion for matching DEFAULT values(Thomas)
805 Add routines to help with single-byte (internal) character type(Thomas)
806 Compilation of libpq for Win32 fixes(Magnus)
807 Upgrade to PyGreSQL 2.2(D'Arcy)
808
809   ------------------------------------------------------------------------
810 Release 6.4.2                                                    Release 6.4
811                                 Release Notes
812   ------------------------------------------------------------------------
813
814 Release 6.4
815
816 There are many new features and improvements in this release. Thanks to our
817 developers and maintainers, nearly every aspect of the system has received
818 some attention since the previous release. Here is a brief, incomplete
819 summary:
820
821    * Views and rules are now functional thanks to extensive new code in the
822      rewrite rules system from Jan Wieck. He also wrote a chapter on it for
823      the Programmer's Guide.
824
825    * Jan also contributed a second procedural language, PL/pgSQL, to go with
826      the original PL/pgTCL procedural language he contributed last release.
827
828    * We have optional multiple-byte character set support from Tatsuo Iishi
829      to complement our existing locale support.
830
831    * Client/server communications has been cleaned up, with better support
832      for asynchronous messages and interrupts thanks to Tom Lane.
833
834    * The parser will now perform automatic type coersion to match arguments
835      to available operators and functions, and to match columns and
836      expressions with target columns. This uses a generic mechanism which
837      supports the type extensibility features of Postgres. There is a new
838      chapter in the User's Guide which covers this topic.
839
840    * Three new data types have been added. Two types, inet and cidr, support
841      various forms of IP network, subnet, and machine addressing. There is
842      now an 8-byte integer type available on some platforms. See the chapter
843      on data types in the User's Guide for details. A fourth type, serial,
844      is now supported by the parser as an amalgam of the int4 type, a
845      sequence, and a unique index.
846
847    * Several more SQL92-compatible syntax features have been added,
848      including INSERT DEFAULT VALUES
849
850    * The automatic configuration and installation system has received some
851      attention, and should be more robust for more platforms than it has
852      ever been.
853
854 Migration to v6.4
855
856 A dump/restore using pg_dump or pg_dumpall is required for those wishing to
857 migrate data from any previous release of Postgres.
858
859 Detailed Change List
860
861 Bug Fixes
862 ---------
863 Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan)
864 Remove char2-16 data types, use char/varchar(Darren)
865 Pqfn not handles a NOTICE message(Anders)
866 Reduced busywaiting overhead for spinlocks with many backends (dg)
867 Stuck spinlock detection (dg)
868 Fix up "ISO-style" timespan decoding and encoding(Thomas)
869 Fix problem with table drop after rollback of transaction(Vadim)
870 Change error message and remove non-functional update message(Vadim)
871 Fix for COPY array checking
872 Fix for SELECT 1 UNION SELECT NULL
873 Fix for buffer leaks in large object calls(Pascal)
874 Change owner from oid to int4 type(Bruce)
875 Fix a bug in the oracle compatibility functions btrim() ltrim() and rtrim()
876 Fix for shared invalidation cache overflow(Massimo)
877 Prevent file descriptor leaks in failed COPY's(Bruce)
878 Fix memory leak in libpgtcl's pg_select(Constantin)
879 Fix problems with username/passwords over 8 characters(Tom)
880 Fix problems with handling of asynchronous NOTIFY in backend(Tom)
881 Fix of many bad system table entries(Tom)
882
883 Enhancements
884 ------------
885 Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael)
886 Show the index used in an EXPLAIN(Zeugswetter)
887 EXPLAIN  invokes  rule system and shows plan(s) for rewritten queries(Jan)
888 Multi-byte awareness of many data types and functions, via configure(Tatsuo)
889 New configure --with-mb option(Tatsuo)
890 New initdb --pgencoding option(Tatsuo)
891 New createdb -E multibyte option(Tatsuo)
892 Select version(); now returns PostgreSQL version(Jeroen)
893 Libpq now allows asynchronous clients(Tom)
894 Allow cancel from client of backend query(Tom)
895 Psql now cancels query with Control-C(Tom)
896 Libpq users need not issue dummy queries to get NOTIFY messages(Tom)
897 NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom)
898 PGresult struct now includes associated error message, if any(Tom)
899 Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas)
900 Add routines to convert between varchar and bpchar(Thomas)
901 Add routines to allow sizing of varchar and bpchar into target columns(Thomas)
902 Add bit flags to support timezonehour and minute in data retrieval(Thomas)
903 Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas)
904 Fixes for unary minus parsing with leading spaces(Thomas)
905 Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas)
906 Check for and properly ignore FOREIGN KEY column constraints(Thomas)
907 Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas)
908 Enable HAVING clause but no fixes elsewhere yet.
909 Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas)
910 Save string type if specified for DEFAULT clause handling(Thomas)
911 Coerce operations involving different data types(Thomas)
912 Allow some index use for columns of different types(Thomas)
913 Add capabilities for automatic type conversion(Thomas)
914 Cleanups for large objects, so file is truncated on open(Peter)
915 Readline cleanups(Tom)
916 Allow psql  \f \ to make spaces as delimiter(Bruce)
917 Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce)
918 Msql compatibility library in /contrib(Aldrin)
919 Remove the requirement that ORDER/GROUP BY clause identifiers be
920 included in the target list(David)
921 Convert columns to match columns in UNION clauses(Thomas)
922 Remove fork()/exec() and only do fork()(Bruce)
923 Jdbc cleanups(Peter)
924 Show backend status on ps command line(only works on some platforms)(Bruce)
925 Pg_hba.conf now has a sameuser option in the database field
926 Make lo_unlink take oid param, not int4
927 New DISABLE_COMPLEX_MACRO for compilers that can't handle our macros(Bruce)
928 Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom)
929 libpgtcl cleanups(Tom)
930 Add -error option to libpgtcl's pg_result command(Tom)
931 New locale patch, see docs/README/locale(Oleg)
932 Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb)
933 New contrib/lo code for large object orphan removal(Peter)
934 New psql command "SET CLIENT_ENCODING TO 'encoding'" for multi-bytes
935 feature, see /doc/README.mb(Tatsuo)
936 /contrib/noupdate code to revoke update permission on a column
937 Libpq can now be compiled on win32(Magnus)
938 Add PQsetdbLogin() in libpq
939 New 8-byte integer type, checked by configure for OS support(Thomas)
940 Better support for quoted table/column names(Thomas)
941 Surround table and column names with double-quotes in pg_dump(Thomas)
942 PQreset() now works with passwords(Tom)
943 Handle case of GROUP BY target list column number out of range(David)
944 Allow UNION in subselects
945 Add auto-size to screen to \d? commands(Bruce)
946 Use UNION to show all \d? results in one query(Bruce)
947 Add \d? field search feature(Bruce)
948 Pg_dump issues fewer \connect requests(Tom)
949 Make pg_dump -z flag work better, document it in manual page(Tom)
950 Add HAVING clause with full support for subselects and unions(Stephan)
951 Full text indexing routines in contrib/fulltextindex(Maarten)
952 Transaction ids now stored in shared memory(Vadim)
953 New PGCLIENTENCODING when issuing COPY command(Tatsuo)
954 Support for SQL92 syntax "SET NAMES"(Tatsuo)
955 Support for LATIN2-5(Tatsuo)
956 Add UNICODE regression test case(Tatsuo)
957 Lock manager cleanup, new locking modes for LLL(Vadim)
958 Allow index use with OR clauses(Bruce)
959 Allows "SELECT NULL ORDER BY 1;"
960 Explain VERBOSE prints the plan, and now pretty-prints the plan to
961 the postmaster log file(Bruce)
962 Add Indices display to \d command(Bruce)
963 Allow GROUP BY on functions(David)
964 New pg_class.relkind for large objects(Bruce)
965 New way to send libpq NOTICE messages to a different location(Tom)
966 New \w write command to psql(Bruce)
967 New /contrib/findoidjoins scans oid columns to find join relationships(Bruce)
968 Allow binary-compatible indices to be considered when checking for valid
969 indices for restriction clauses containing a constant(Thomas)
970 New ISBN/ISSN code in /contrib/isbn_issn
971 Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas)
972 New rewrite system fixes many problems with rules and views(Jan)
973         * Rules on relations work
974         * Event qualifications on insert/update/delete work
975         * New OLD variable to reference CURRENT, CURRENT will be remove in future
976         * Update rules can reference NEW and OLD in rule qualifications/actions
977         * Insert/update/delete rules on views work
978         * Multiple rule actions are now supported, surrounded by parentheses
979         * Regular users can create views/rules on tables they have RULE permits
980         * Rules and views inherit the permissions on the creator
981         * No rules at the column level
982         * No UPDATE NEW/OLD rules
983         * New pg_tables, pg_indexes, pg_rules and pg_views system views
984         * Only a single action on SELECT rules
985         * Total rewrite overhaul, perhaps for 6.5
986         * handle subselects
987         * handle aggregates on views
988         * handle insert into select from view works
989 System indexes are now multi-key(Bruce)
990 Oidint2, oidint4, and oidname types are removed(Bruce)
991 Use system cache for more system table lookups(Bruce)
992 New backend programming language PL/pgSQL in backend/pl(Jan)
993 New SERIAL data type, auto-creates sequence/index(Thomas)
994 Enable assert checking without a recompile(Massimo)
995 User lock enhancements(Massimo)
996 New setval() command to set sequence value(Massimo)
997 Auto-remove unix socket file on startup if no postmaster running(Massimo)
998 Conditional trace package(Massimo)
999 New UNLISTEN command(Massimo)
1000 Psql and libpq now compile under win32 using win32.mak(Magnus)
1001 Lo_read no longer stores trailing NULL(Bruce)
1002 Identifiers are now truncated to 31 characters internally(Bruce)
1003 Createuser options now availble on the command line
1004 Code for 64-bit integer supported added, configure tested, int8 type(Thomas)
1005 Prevent file descriptor leaf from failed COPY(Bruce)
1006 New pg_upgrade command(Bruce)
1007 Updated /contrib directories(Massimo)
1008 New CREATE TABLE DEFAULT VALUES statement available(Thomas)
1009 New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas)
1010 New DECLARE and FETCH feature(Thomas)
1011 libpq's internal structures now not exported(Tom)
1012 Allow up to 8 key indexes(Bruce)
1013 Remove ARCHIVE keyword, that is no longer used(Thomas)
1014 pg_dump -n flag to supress quotes around indentifiers
1015 disable system columns for views(Jan)
1016 new INET and CIDR types for network addresses(TomH, Paul)
1017 no more double quotes in psql output
1018 pg_dump now dumps views(Terry)
1019 new SET QUERY_LIMIT(Tatsuo,Jan)
1020
1021 Source Tree Changes
1022 -------------------
1023 /contrib cleanup(Jun)
1024 Inline some small functions called for every row(Bruce)
1025 Alpha/linux fixes
1026 Hp/UX cleanups(Tom)
1027 Multi-byte regression tests(Soonmyung.)
1028 Remove --disabled options from configure
1029 Define PGDOC to use POSTGRESDIR by default
1030 Make regression optional
1031 Remove extra braces code to pgindent(Bruce)
1032 Add bsdi shared library support(Bruce)
1033 New --without-CXX support configure option(Brook)
1034 New FAQ_CVS
1035 Update backend flowchart in tools/backend(Bruce)
1036 Change atttypmod from int16 to int32(Bruce, Tom)
1037 Getrusage() fix for platforms that do not have it(Tom)
1038 Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page
1039 NS32K platform fixes(Phil Nelson, John Buller)
1040 Sco 7/UnixWare 2.x fixes(Billy,others)
1041 Sparc/Solaris 2.5 fixes(Ryan)
1042 Pgbuiltin.3 is obsolete, move to doc files(Thomas)
1043 Even more documention(Thomas)
1044 Nextstep support(Jacek)
1045 Aix support(David)
1046 pginterface manual page(Bruce)
1047 shared libraries all have version numbers
1048 merged all OS-specific shared library defines into one file
1049 smarter TCL/TK configuration checking(Billy)
1050 smarter perl configuration(Brook)
1051 configure uses supplied install-sh if no install script found(Tom)
1052 new Makefile.shlib for shared library configuration(Tom)
1053
1054   ------------------------------------------------------------------------
1055 Release 6.4.1                                                  Release 6.3.2
1056                                 Release Notes
1057   ------------------------------------------------------------------------
1058
1059 Release 6.3.2
1060
1061 This is a bugfix release for 6.3.x. Refer to the release notes for v6.3 for
1062 a more complete summary of new features.
1063
1064 Summary:
1065
1066    * Repairs automatic configuration support for some platforms, including
1067      Linux, from breakage inadvertently introduced in v6.3.1.
1068
1069    * Correctly handles function calls on the left side of BETWEEN and LIKE
1070      clauses.
1071
1072 A dump/restore is NOT required for those running 6.3 or 6.3.1. A 'make
1073 distclean', 'make', and 'make install' is all that is required. This last
1074 step should be performed while the postmaster is not running. You should
1075 re-link any custom applications that use Postgres libraries.
1076
1077 For upgrades from pre-v6.3 installations, refer to the installation and
1078 migration instructions for v6.3.
1079
1080 Detailed Change List
1081
1082 Changes
1083 -------
1084 Configure detection improvements for tcl/tk(Brook Milligan, Alvin)
1085 Manual page improvements(Bruce)
1086 BETWEEN and LIKE fix(Thomas)
1087 fix for psql \connect used by pg_dump(Oliver Elphick)
1088 New odbc driver
1089 pgaccess, version 0.86
1090 qsort removed, now uses libc version, cleanups(Jeroen)
1091 fix for buffer over-runs detected(Maurice Gittens)
1092 fix for buffer overrun in libpgtcl(Randy Kunkee)
1093 fix for UNION with DISTINCT or ORDER BY(Bruce)
1094 gettimeofday configure check(Doug Winterburn)
1095 Fix "indexes not used" bug(Vadim)
1096 docs additions(Thomas)
1097 Fix for backend memory leak(Bruce)
1098 libreadline cleanup(Erwan MAS)
1099 Remove DISTDIR(Bruce)
1100 Makefile dependency cleanup(Jeroen van Vianen)
1101 ASSERT fixes(Bruce)
1102
1103   ------------------------------------------------------------------------
1104 Release 6.4                                                    Release 6.3.1
1105                                 Release Notes
1106   ------------------------------------------------------------------------
1107
1108 Release 6.3.1
1109
1110 Summary:
1111
1112    * Additional support for multi-byte character sets.
1113
1114    * Repair byte ordering for mixed-endian clients and servers.
1115
1116    * Minor updates to allowed SQL syntax.
1117
1118    * Improvements to the configuration autodetection for installation.
1119
1120 A dump/restore is NOT required for those running 6.3. A 'make distclean',
1121 'make', and 'make install' is all that is required. This last step should be
1122 performed while the postmaster is not running. You should re-link any custom
1123 applications that use Postgres libraries.
1124
1125 For upgrades from pre-v6.3 installations, refer to the installation and
1126 migration instructions for v6.3.
1127
1128 Detailed Change List
1129
1130 Changes
1131 -------
1132 ecpg cleanup/fixes, now version 1.1(Michael Meskes)
1133 pg_user cleanup(Bruce)
1134 large object fix for pg_dump and tclsh (alvin)
1135 LIKE fix for multiple adjacent underscores
1136 fix for redefining builtin functions(Thomas)
1137 ultrix4 cleanup
1138 upgrade to pg_access 0.83
1139 updated CLUSTER manual page
1140 multi-byte character set support, see doc/README.mb(Tatsuo)
1141 configure --with-pgport fix
1142 pg_ident fix
1143 big-endian fix for backend communications(Kataoka)
1144 SUBSTR() and substring() fix(Jan)
1145 several jdbc fixes(Peter)
1146 libpgtcl improvements, see libptcl/README(Randy Kunkee)
1147 Fix for "Datasize = 0" error(Vadim)
1148 Prevent \do from wrapping(Bruce)
1149 Remove duplicate Russian character set entries
1150 Sunos4 cleanup
1151 Allow optional TABLE keyword in LOCK and SELECT INTO(Thomas)
1152 CREATE SEQUENCE options to allow a negative integer(Thomas)
1153 Add "PASSWORD" as an allowed column identifier(Thomas)
1154 Add checks for UNION target fields(Bruce)
1155 Fix Alpha port(Dwayne Bailey)
1156 Fix for text arrays containing quotes(Doug Gibson)
1157 Solaris compile fix(Albert Chin-A-Young)
1158 Better identify tcl and tk libs and includes(Bruce)
1159
1160   ------------------------------------------------------------------------
1161 Release 6.3.2                                                    Release 6.3
1162                                 Release Notes
1163   ------------------------------------------------------------------------
1164
1165 Release 6.3
1166
1167 There are many new features and improvements in this release. Here is a
1168 brief, incomplete summary:
1169
1170    * Many new SQL features, including full SQL92 subselect capability
1171      (everything is here but target-list subselects).
1172
1173    * Support for client-side environment variables to specify time zone and
1174      date style.
1175
1176    * Socket interface for client/server connection. This is the default now
1177      so you may need to start postmaster with the "-i" flag.
1178
1179    * Better password authorization mechanisms. Default table permissions
1180      have changed.
1181
1182    * Old-style "time travel" has been removed. Performance has been
1183      improved.
1184
1185      Note: Bruce Momjian wrote the following notes to introduce the new
1186      release.
1187
1188 There are some general 6.3 issues that I want to mention. These are only the
1189 big items that can not be described in one sentence. A review of the
1190 detailed changes list is still needed.
1191
1192 First, we now have subselects. Now that we have them, I would like to
1193 mention that without subselects, SQL is a very limited language. Subselects
1194 are a major feature, and you should review your code for places where
1195 subselects provide a better solution for your queries. I think you will find
1196 that there are more uses for subselects than you may think. Vadim has put us
1197 on the big SQL map with subselects, and fully functional ones too. The only
1198 thing you can't do with subselects is to use them in the target list.
1199
1200 Second, 6.3 uses unix domain sockets rather than TCP/IP by default. To
1201 enable connections from other machines, you have to use the new postmaster
1202 -i option, and of course edit pg_hba.conf. Also, for this reason, the format
1203 of pg_hba.conf has changed.
1204
1205 Third, char() fields will now allow faster access than varchar() or text.
1206 Specifically, the text and varchar() have a penalty for access to any
1207 columns after the first column of this type. char() used to also have this
1208 access penalty, but it no longer does. This may suggest that you redesign
1209 some of your tables, especially if you have short character columns that you
1210 have defined as varchar() or text. This and other changes make 6.3 even
1211 faster than earlier releases.
1212
1213 We now have passwords definable independent of any Unix file. There are new
1214 SQL USER commands. See the pg_hba.conf manual page for more information.
1215 There is a new table, pg_shadow, which is used to store user information and
1216 user passwords, and it by default only SELECT-able by the postgres
1217 super-user. pg_user is now a view of pg_shadow, and is SELECT-able by
1218 PUBLIC. You should keep using pg_user in your application without changes.
1219
1220 User-created tables now no longer have SELECT permission to PUBLIC by
1221 default. This was done because the ANSI standard requires it. You can of
1222 course GRANT any permissions you want after the table is created. System
1223 tables continue to be SELECT-able by PUBLIC.
1224
1225 We also have real deadlock detection code. No more sixty-second timeouts.
1226 And the new locking code implements a FIFO better, so there should be less
1227 resource starvation during heavy use.
1228
1229 Many complaints have been made about inadequate documenation in previous
1230 releases. Thomas has put much effort into many new manuals for this release.
1231 Check out the doc/ directory.
1232
1233 For performance reasons, time travel is gone, but can be implemented using
1234 triggers (see pgsql/contrib/spi/README). Please check out the new \d command
1235 for types, operators, etc. Also, views have their own permissions now, not
1236 based on the underlying tables, so permissions on them have to be set
1237 separately. Check /pgsql/interfaces for some new ways to talk to Postgres.
1238
1239 This is the first release that really required an explanation for existing
1240 users. In many ways, this was necessary because the new release removes many
1241 limitations, and the work-arounds people were using are no longer needed.
1242
1243 Migration to v6.3
1244
1245 A dump/restore using pg_dump or pg_dumpall is required for those wishing to
1246 migrate data from any previous release of Postgres.
1247
1248 Detailed Change List
1249
1250 Bug Fixes
1251 ---------
1252 Fix binary cursors broken by MOVE implementation(Vadim)
1253 Fix for tcl library crash(Jan)
1254 Fix for array handling, from Gerhard Hintermayer
1255 Fix acl error, and remove duplicate pqtrace(Bruce)
1256 Fix psql \e for empty file(Bruce)
1257 Fix for textcat on varchar() fields(Bruce)
1258 Fix for DBT Sendproc (Zeugswetter Andres)
1259 Fix vacuum analyze syntax problem(Bruce)
1260 Fix for international identifiers(Tatsuo)
1261 Fix aggregates on inherited tables(Bruce)
1262 Fix substr() for out-of-bounds data
1263 Fix for select 1=1 or 2=2, select 1=1 and 2=2, and select sum(2+2)(Bruce)
1264 Fix notty output to show status result.  -q option still turns it off(Bruce)
1265 Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce)
1266 Fix cluster(Bruce)
1267 Fix for PQtrace start/stop several times(Bruce)
1268 Fix a variety of locking problems like newer lock waiters getting
1269         lock before older waiters, and having readlock people not share
1270         locks if a writer is waiting for a lock, and waiting writers not
1271         getting priority over waiting readers(Bruce)
1272 Fix crashes in psql when executing queries from external files(James)
1273 Fix problem with multiple order by columns, with the first one having
1274         NULL values(Jeroen)
1275 Use correct hash table support functions for float8 and int4(Thomas)
1276 Re-enable JOIN= option in CREATE OPERATOR statement (Thomas)
1277 Change precedence for boolean operators to match expected behavior(Thomas)
1278 Generate elog(ERROR) on over-large integer(Bruce)
1279 Allow multiple-argument functions in constraint clauses(Thomas)
1280 Check boolean input literals for 'true','false','yes','no','1','0'
1281         and throw elog(ERROR) if unrecognized(Thomas)
1282 Major large objects fix
1283 Fix for GROUP BY showing duplicates(Vadim)
1284 Fix for index scans in MergeJion(Vadim)
1285
1286 Enhancements
1287 ------------
1288 Subselects with EXISTS, IN, ALL, ANY keywords (Vadim, Bruce, Thomas)
1289 New User Manual(Thomas, others)
1290 Speedup by inlining some frequently-called functions
1291 Real deadlock detection, no more timeouts(Bruce)
1292 Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
1293         CURRENT_USER(Thomas)
1294 Modify constraint syntax to be SQL92-compliant(Thomas)
1295 Implement SQL92 PRIMARY KEY and UNIQUE clauses using indices(Thomas)
1296 Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas)
1297 Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas)
1298 Allow Postgres-style casting ("::") of non-constants(Thomas)
1299 Add support for SQL3 TRUE and FALSE boolean constants(Thomas)
1300 Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas)
1301 Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas)
1302 Allow SQL92 delimited identifiers(Thomas)
1303 Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas)
1304 Support SQL92 syntax for type coercion of literal strings
1305         (e.g. "DATETIME 'now'")(Thomas)
1306 Add conversions for int2, int4, and OID types to and from text(Thomas)
1307 Use shared lock when building indices(Vadim)
1308 Free memory allocated for an user query inside transaction block after
1309         this query is done, was turned off in <= 6.2.1(Vadim)
1310 New SQL statement CREATE PROCEDURAL LANGUAGE(Jan)
1311 New Postgres Procedural Language (PL) backend interface(Jan)
1312 Rename pg_dump -H option to -h(Bruce)
1313 Add Java support for passwords, European dates(Peter)
1314 Use indices for LIKE and ~, !~ operations(Bruce)
1315 Add hash functions for datetime and timespan(Thomas)
1316 Time Travel removed(Vadim, Bruce)
1317 Add paging for \d and \z, and fix \i(Bruce)
1318 Add Unix domain socket support to backend and to frontend library(Goran)
1319 Implement CREATE DATABASE/WITH LOCATION and initlocation utility(Thomas)
1320 Allow more SQL92 and/or Postgres reserved words as column identifiers(Thomas)
1321 Augment support for SQL92 SET TIME ZONE...(Thomas)
1322 SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas)
1323 Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas)
1324 Enable SET TIME ZONE using TZ environment variable(Thomas)
1325 Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas)
1326 Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO
1327         frontend library initialization environment variables(Thomas)
1328 Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas)
1329 Add pg_description table for info on tables, columns, operators, types, and
1330         aggregates(Bruce)
1331 Increase 16 char limit on system table/index names to 32 characters(Bruce)
1332 Rename system indices(Bruce)
1333 Add 'GERMAN' option to SET DATESTYLE(Thomas)
1334 Define an "ISO-style" timespan output format with "hh:mm:ss" fields(Thomas)
1335 Allow fractional values for delta times (e.g. '2.5 days')(Thomas)
1336 Validate numeric input more carefully for delta times(Thomas)
1337 Implement day of year as possible input to date_part()(Thomas)
1338 Define timespan_finite() and text_timespan() functions(Thomas)
1339 Remove archive stuff(Bruce)
1340 Allow for a pg_password authentication database that is separate from
1341         the system password file(Todd)
1342 Dump ACLs, GRANT, REVOKE permissions(Matt)
1343 Define text, varchar, and bpchar string length functions(Thomas)
1344 Fix Query handling for inheritance, and cost computations(Bruce)
1345 Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas)
1346 Allow NOT, IS NULL, IS NOT NULL in constraints(Thomas)
1347 Implement UNIONs for SELECT(Bruce)
1348 Add UNION, GROUP, DISTINCT to INSERT(Bruce)
1349 varchar() stores only necessary bytes on disk(Bruce)
1350 Fix for BLOBs(Peter)
1351 Mega-Patch for JDBC...see README_6.3 for list of changes(Peter)
1352 Remove unused "option" from PQconnectdb()
1353 New LOCK command and lock manual page describing deadlocks(Bruce)
1354 Add new psql \da, \dd, \df, \do, \dS, and \dT commands(Bruce)
1355 Enhance psql \z to show sequences(Bruce)
1356 Show NOT NULL and DEFAULT in psql \d table(Bruce)
1357 New psql .psqlrc file startup(Andrew)
1358 Modify sample startup script in contrib/linux to show syslog(Thomas)
1359 New types for IP and MAC addresses in contrib/ip_and_mac(TomH)
1360 Unix system time conversions with date/time types in contrib/unixdate(Thomas)
1361 Update of contrib stuff(Massimo)
1362 Add Unix socket support to DBD::Pg(Goran)
1363 New python interface (PyGreSQL 2.0)(D'Arcy)
1364 New frontend/backend protocol has a version number, network byte order(Phil)
1365 Security features in pg_hba.conf enhanced and documented, many cleanups(Phil)
1366 CHAR() now faster access than VARCHAR() or TEXT
1367 ecpg embedded SQL preprocessor
1368 Reduce system column overhead(Vadmin)
1369 Remove pg_time table(Vadim)
1370 Add pg_type attribute to identify types that need length (bpchar, varchar)
1371 Add report of offending line when COPY command fails
1372 Allow VIEW permissions to be set separately from the underlying tables.
1373         For security, use GRANT/REVOKE on views as appropriate(Jan)
1374 Tables now have no default GRANT SELECT TO PUBLIC.  You must
1375         explicitly grant such permissions.
1376 Clean up tutorial examples(Darren)
1377
1378 Source Tree Changes
1379 -------------------
1380 Add new html development tools, and flow chart in /tools/backend
1381 Fix for SCO compiles
1382 Stratus computer port Robert Gillies
1383 Added support for shlib for BSD44_derived & i386_solaris
1384 Make configure more automated(Brook)
1385 Add script to check regression test results
1386 Break parser functions into smaller files, group together(Bruce)
1387 Rename heap_create to heap_create_and_catalog, rename heap_creatr
1388         to heap_create()(Bruce)
1389 Sparc/Linux patch for locking(TomS)
1390 Remove PORTNAME and reorganize port-specific stuff(Marc)
1391 Add optimizer README file(Bruce)
1392 Remove some recursion in optimizer and clean up some code there(Bruce)
1393 Fix for NetBSD locking(Henry)
1394 Fix for libptcl make(Tatsuo)
1395 AIX patch(Darren)
1396 Change IS TRUE, IS FALSE, ... to expressions using "=" rather than
1397         function calls to istrue() or isfalse() to allow optimization(Thomas)
1398 Various fixes NetBSD/Sparc related(TomH)
1399 Alpha linux locking(Travis,Ryan)
1400 Change elog(WARN) to elog(ERROR)(Bruce)
1401 FAQ for FreeBSD(Marc)
1402 Bring in the PostODBC source tree as part of our standard distribution(Marc)
1403 A minor patch for HP/UX 10 vs 9(Stan)
1404 New pg_attribute.atttypmod for type-specific info like varchar length(Bruce)
1405 Unixware patches(Billy)
1406 New i386 'lock' for spin lock asm(Billy)
1407 Support for multiplexed backends is removed
1408 Start an OpenBSD port
1409 Start an AUX port
1410 Start a Cygnus port
1411 Add string functions to regression suite(Thomas)
1412 Expand a few function names formerly truncated to 16 characters(Thomas)
1413 Remove un-needed malloc() calls and replace with palloc()(Bruce)
1414
1415   ------------------------------------------------------------------------
1416 Release 6.3.1                                                  Release 6.2.1
1417                                 Release Notes
1418   ------------------------------------------------------------------------
1419
1420 Release 6.2.1
1421
1422 v6.2.1 is a bug-fix and usability release on v6.2.
1423
1424 Summary:
1425
1426    * Allow strings to span lines, per SQL92.
1427
1428    * Include example trigger function for inserting user names on table
1429      updates.
1430
1431 This is a minor bug-fix release on v6.2. For upgrades from pre-v6.2 systems,
1432 a full dump/reload is required. Refer to the v6.2 release notes for
1433 instructions.
1434
1435 Migration from v6.2 to v6.2.1
1436
1437 This is a minor bug-fix release. A dump/reload is not required from v6.2,
1438 but is required from any release prior to v6.2.
1439
1440 In upgrading from v6.2, if you choose to dump/reload you will find that
1441 avg(money) is now calculated correctly. All other bug fixes take effect upon
1442 updating the executables.
1443
1444 Another way to avoid dump/reload is to use the following SQL command from
1445 psql to update the existing system table:
1446
1447   update pg_aggregate set aggfinalfn = 'cash_div_flt8'
1448    where aggname = 'avg' and aggbasetype = 790;
1449
1450 This will need to be done to every existing database, including template1.
1451
1452 Detailed Change List
1453
1454 Changes in this release
1455 -----------------------
1456 Allow TIME and TYPE column names(Thomas)
1457 Allow larger range of true/false as boolean values(Thomas)
1458 Support output of "now" and "current"(Thomas)
1459 Handle DEFAULT with INSERT of NULL properly(Vadim)
1460 Fix for relation reference counts problem in buffer manager(Vadim)
1461 Allow strings to span lines, like ANSI(Thomas)
1462 Fix for backward cursor with ORDER BY(Vadim)
1463 Fix avg(cash) computation(Thomas)
1464 Fix for specifying a column twice in ORDER/GROUP BY(Vadim)
1465 Documented new libpq function to return affected rows, PQcmdTuples(Bruce)
1466 Trigger function for inserting user names for INSERT/UPDATE(Brook Milligan)
1467
1468   ------------------------------------------------------------------------
1469 Release 6.3                                                      Release 6.2
1470                                 Release Notes
1471   ------------------------------------------------------------------------
1472
1473 Release 6.2
1474
1475 A dump/restore is required for those wishing to migrate data from previous
1476 releases of Postgres.
1477
1478 Migration from v6.1 to v6.2
1479
1480 This migration requires a complete dump of the 6.1 database and a restore of
1481 the database in 6.2.
1482
1483 Note that the pg_dump and pg_dumpall utility from 6.2 should be used to dump
1484 the 6.1 database.
1485
1486 Migration from v1.x to v6.2
1487
1488 Those migrating from earlier 1.* releases should first upgrade to 1.09
1489 because the COPY output format was improved from the 1.02 release.
1490
1491 Detailed Change List
1492
1493 Bug Fixes
1494 ---------
1495 Fix problems with pg_dump for inheritance, sequences, archive tables(Bruce)
1496 Fix compile errors on overflow due to shifts, unsigned, and bad prototypes
1497          from Solaris(Diab Jerius)
1498 Fix bugs in geometric line arithmetic (bad intersection calculations)(Thomas)
1499 Check for geometric intersections at endpoints to avoid rounding ugliness(Thomas)
1500 Catch non-functional delete attempts(Vadim)
1501 Change time function names to be more consistent(Michael Reifenberg)
1502 Check for zero divides(Michael Reifenberg)
1503 Fix very old bug which made tuples changed/inserted by a commnd
1504         visible to the command itself (so we had multiple update of
1505         updated tuples, etc)(Vadim)
1506 Fix for SELECT null, 'fail' FROM pg_am (Patrick)
1507 SELECT NULL as EMPTY_FIELD now allowed(Patrick)
1508 Remove un-needed signal stuff from contrib/pginterface
1509 Fix OR (where x != 1 or x isnull didn't return tuples with x NULL) (Vadim)
1510 Fix time_cmp function (Vadim)
1511 Fix handling of functions with non-attribute first argument in
1512         WHERE clauses (Vadim)
1513 Fix GROUP BY when order of entries is different from order
1514         in target list (Vadim)
1515 Fix pg_dump for aggregates without sfunc1 (Vadim)
1516
1517 Enhancements
1518 ------------
1519 Default genetic optimizer GEQO parameter is now 8(Bruce)
1520 Allow use parameters in target list having aggregates in functions(Vadim)
1521 Added JDBC driver as an interface(Adrian & Peter)
1522 pg_password utility
1523 Return number of tuples inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim)
1524 Triggers implemented with CREATE TRIGGER (SQL3)(Vadim)
1525 SPI (Server Programming Interface) allows execution of queries inside
1526         C-functions (Vadim)
1527 NOT NULL implemented (SQL92)(Robson Paniago de Miranda)
1528 Include reserved words for string handling, outer joins, and unions(Thomas)
1529 Implement extended comments ("/* ... */") using exclusive states(Thomas)
1530 Add "//" single-line comments(Bruce)
1531 Remove some restrictions on characters in operator names(Thomas)
1532 DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim & Thomas)
1533 Add text concatenation operator and function (SQL92)(Thomas)
1534 Support WITH TIME ZONE syntax (SQL92)(Thomas)
1535 Support INTERVAL unit TO unit syntax (SQL92)(Thomas)
1536 Define types DOUBLE PRECISION, INTERVAL, CHARACTER,
1537         and CHARACTER VARYING (SQL92)(Thomas)
1538 Define type FLOAT(p) and rudimentary DECIMAL(p,s), NUMERIC(p,s) (SQL92)(Thomas)
1539 Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM() (SQL92)(Thomas)
1540 Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP (SQL92)(Thomas)
1541 Add syntax and warnings for UNION, HAVING, INNER and OUTER JOIN (SQL92)(Thomas)
1542 Add more reserved words, mostly for SQL92 compliance(Thomas)
1543 Allow hh:mm:ss time entry for timespan/reltime types(Thomas)
1544 Add center() routines for lseg, path, polygon(Thomas)
1545 Add distance() routines for circle-polygon, polygon-polygon(Thomas)
1546 Check explicitly for points and polygons contained within polygons
1547         using an axis-crossing algorithm(Thomas)
1548 Add routine to convert circle-box(Thomas)
1549 Merge conflicting operators for different geometric data types(Thomas)
1550 Replace distance operator "<===>" with "<->"(Thomas)
1551 Replace "above" operator "!^" with ">^" and "below" operator "!|" with "<^"(Thomas)
1552 Add routines for text trimming on both ends, substring, and string position(Thomas)
1553 Added conversion routines circle(box) and poly(circle)(Thomas)
1554 Allow internal sorts to be stored in memory rather than in files(Bruce & Vadim)
1555 Allow functions and operators on internally-identical types to succeed(Bruce)
1556 Speed up backend startup after profiling analysis(Bruce)
1557 Inline frequently called functions for performance(Bruce)
1558 Reduce open() calls(Bruce)
1559 psql:  Add PAGER for \h and \?,\C fix
1560 Fix for psql pager when no tty(Bruce)
1561 New entab utility(Bruce)
1562 General trigger functions for referential integrity (Vadim)
1563 General trigger functions for time travel (Vadim)
1564 General trigger functions for AUTOINCREMENT/IDENTITY feature (Vadim)
1565 MOVE implementation (Vadim)
1566
1567 Source Tree Changes
1568 -------------------
1569 HPUX 10 patches (Vladimir Turin)
1570 Added SCO support, (Daniel Harris)
1571 mkLinux patches (Tatsuo Ishii)
1572 Change geometric box terminology from "length" to "width"(Thomas)
1573 Deprecate temporary unstored slope fields in geometric code(Thomas)
1574 Remove restart instructions from INSTALL(Bruce)
1575 Look in /usr/ucb first for install(Bruce)
1576 Fix c++ copy example code(Thomas)
1577 Add -o to psql manual page(Bruce)
1578 Prevent relname unallocated string length from being copied into database(Bruce)
1579 Cleanup for NAMEDATALEN use(Bruce)
1580 Fix pg_proc names over 15 chars in output(Bruce)
1581 Add strNcpy() function(Bruce)
1582 remove some (void) casts that are unnecessary(Bruce)
1583 new interfaces directory(Marc)
1584 Replace fopen() calls with calls to fd.c functions(Bruce)
1585 Make functions static where possible(Bruce)
1586 enclose unused functions in #ifdef NOT_USED(Bruce)
1587 Remove call to difftime() in timestamp support to fix SunOS(Bruce & Thomas)
1588 Changes for Digital Unix
1589 Portability fix for pg_dumpall(Bruce)
1590 Rename pg_attribute.attnvals to attdisbursion(Bruce)
1591 "intro/unix" manual page now "pgintro"(Bruce)
1592 "built-in" manual page now "pgbuiltin"(Bruce)
1593 "drop" manual page now "drop_table"(Bruce)
1594 Add "create_trigger", "drop_trigger" manual pages(Thomas)
1595 Add constraints regression test(Vadim & Thomas)
1596 Add comments syntax regression test(Thomas)
1597 Add PGINDENT and support program(Bruce)
1598 Massive commit to run PGINDENT on all *.c and *.h files(Bruce)
1599 Files moved to /src/tools directory(Bruce)
1600 SPI and Trigger programming guides (Vadim & D'Arcy)
1601
1602   ------------------------------------------------------------------------
1603 Release 6.2.1                                                  Release 6.1.1
1604                                 Release Notes
1605   ------------------------------------------------------------------------
1606
1607 Release 6.1.1
1608
1609 Migration from v6.1 to v6.1.1
1610
1611 This is a minor bug-fix release. A dump/reload is not required from v6.1,
1612 but is required from any release prior to v6.1. Refer to the release notes
1613 for v6.1 for more details.
1614
1615 Detailed Change List
1616
1617 Changes in this release
1618 -----------------------
1619 fix for SET with options (Thomas)
1620 allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce)
1621 new psql \connect option allows changing usernames without changing databases
1622 fix for initdb --debug option(Yoshihiko Ichikawa))
1623 lextest cleanup(Bruce)
1624 hash fixes(Vadim)
1625 fix date/time month boundary arithmetic(Thomas)
1626 fix timezone daylight handling for some ports(Thomas, Bruce, Tatsuo)
1627 timestamp overhauled to use standard functions(Thomas)
1628 other code cleanup in date/time routines(Thomas)
1629 psql's \d now case-insensitive(Bruce)
1630 psql's backslash commands can now have trailing semicolon(Bruce)
1631 fix memory leak in psql when using \g(Bruce)
1632 major fix for endian handling of communication to server(Thomas, Tatsuo)
1633 Fix for Solaris assembler and include files(Yoshihiko Ichikawa)
1634 allow underscores in usernames(Bruce)
1635 pg_dumpall now returns proper status, portability fix(Bruce)
1636
1637   ------------------------------------------------------------------------
1638 Release 6.2                                                      Release 6.1
1639                                 Release Notes
1640   ------------------------------------------------------------------------
1641
1642 Release 6.1
1643
1644 The regression tests have been adapted and extensively modified for the v6.1
1645 release of Postgres.
1646
1647 Three new data types (datetime, timespan, and circle) have been added to the
1648 native set of Postgres types. Points, boxes, paths, and polygons have had
1649 their output formats made consistant across the data types. The polygon
1650 output in misc.out has only been spot-checked for correctness relative to
1651 the original regression output.
1652
1653 Postgres v6.1 introduces a new, alternate optimizer which uses genetic
1654 algorithms. These algorithms introduce a random behavior in the ordering of
1655 query results when the query contains multiple qualifiers or multiple tables
1656 (giving the optimizer a choice on order of evaluation). Several regression
1657 tests have been modified to explicitly order the results, and hence are
1658 insensitive to optimizer choices. A few regression tests are for data types
1659 which are inherently unordered (e.g. points and time intervals) and tests
1660 involving those types are explicitly bracketed with set geqo to 'off' and
1661 reset geqo.
1662
1663 The interpretation of array specifiers (the curly braces around atomic
1664 values) appears to have changed sometime after the original regression tests
1665 were generated. The current ./expected/*.out files reflect this new
1666 interpretation, which may not be correct!
1667
1668 The float8 regression test fails on at least some platforms. This is due to
1669 differences in implementations of pow() and exp() and the signaling
1670 mechanisms used for overflow and underflow conditions.
1671
1672 The "random" results in the random test should cause the "random" test to be
1673 "failed", since the regression tests are evaluated using a simple diff.
1674 However, "random" does not seem to produce random results on my test machine
1675 (Linux/gcc/i686).
1676
1677 Migration to v6.1
1678
1679 This migration requires a complete dump of the 6.0 database and a restore of
1680 the database in 6.1.
1681
1682 Those migrating from earlier 1.* releases should first upgrade to 1.09
1683 because the COPY output format was improved from the 1.02 release.
1684
1685 Detailed Change List
1686
1687 Bug Fixes
1688 ---------
1689 packet length checking in library routines
1690 lock manager priority patch
1691 check for under/over flow of float8(Bruce)
1692 multi-table join fix(Vadim)
1693 SIGPIPE crash fix(Darren)
1694 large object fixes(Sven)
1695 allow btree indexes to handle NULLs(Vadim)
1696 timezone fixes(D'Arcy)
1697 select SUM(x) can return NULL on no rows(Thomas)
1698 internal optimizer, executor bug fixes(Vadim)
1699 fix problem where inner loop in < or <= has no rows(Vadim)
1700 prevent re-commuting join index clauses(Vadim)
1701 fix join clauses for multiple tables(Vadim)
1702 fix hash, hashjoin for arrays(Vadim)
1703 fix btree for abstime type(Vadim)
1704 large object fixes(Raymond)
1705 fix buffer leak in hash indices (Vadim)
1706 fix rtree for use in inner scan (Vadim)
1707 fix gist for use in inner scan, cleanups (Vadim, Andrea)
1708 avoid unnecessary local buffers allocation (Vadim, Massimo)
1709 fix local buffers leak in transaction aborts (Vadim)
1710 fix file manager memmory leaks, cleanups (Vadim, Massimo)
1711 fix storage manager memmory leaks (Vadim)
1712 fix btree duplicates handling (Vadim)
1713 fix deleted tuples re-incarnation caused by vacuum (Vadim)
1714 fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce)
1715 many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor)
1716
1717 Enhancements
1718 ------------
1719 attribute optimization statistics(Bruce)
1720 much faster new btree bulk load code(Paul)
1721 BTREE UNIQUE added to bulk load code(Vadim)
1722 new lock debug code(Massimo)
1723 massive changes to libpg++(Leo)
1724 new GEQO optimizer speeds table multi-table optimization(Martin)
1725 new WARN message for non-unique insert into unique key(Marc)
1726 update x=-3, no spaces, now valid(Bruce)
1727 remove case-sensitive identifier handling(Bruce,Thomas,Dan)
1728 debug backend now pretty-prints tree(Darren)
1729 new Oracle character functions(Edmund)
1730 new plaintext password functions(Dan)
1731 no such class or insufficient privilege changed to distinct messages(Dan)
1732 new ANSI timestamp function(Dan)
1733 new ANSI Time and Date types (Thomas)
1734 move large chunks of data in backend(Martin)
1735 multi-column btree indexes(Vadim)
1736 new SET var TO value command(Martin)
1737 update transaction status on reads(Dan)
1738 new locale settings for character types(Oleg)
1739 new SEQUENCE serial number generator(Vadim)
1740 GROUP BY function now possible(Vadim)
1741 re-organize regression test(Thomas,Marc)
1742 new optimizer operation weights(Vadim)
1743 new psql \z grant/permit option(Marc)
1744 new MONEY data type(D'Arcy,Thomas)
1745 tcp socket communication speed improved(Vadim)
1746 new VACUUM option for attribute statistics, and for certain columns (Vadim)
1747 many geometric type improvements(Thomas,Keith)
1748 additional regression tests(Thomas)
1749 new datestyle variable(Thomas,Vadim,Martin)
1750 more comparison operators for sorting types(Thomas)
1751 new conversion functions(Thomas)
1752 new more compact btree format(Vadim)
1753 allow pg_dumpall to preserve database ownership(Bruce)
1754 new SET GEQO=# and R_PLANS variable(Vadim)
1755 old (!GEQO) optimizer can use right-sided plans (Vadim)
1756 typechecking improvement in SQL parser(Bruce)
1757 new SET, SHOW, RESET commands(Thomas,Vadim)
1758 new \connect database USER option
1759 new destroydb -i option (Igor)
1760 new \dt and \di psql commands (Darren)
1761 SELECT "\n" now escapes newline (A. Duursma)
1762 new geometry conversion functions from old format (Thomas)
1763
1764 Source tree changes
1765 -------------------
1766 new configuration script(Marc)
1767 readline configuration option added(Marc)
1768 OS-specific configuration options removed(Marc)
1769 new OS-specific template files(Marc)
1770 no more need to edit Makefile.global(Marc)
1771 re-arrange include files(Marc)
1772 nextstep patches (Gregor Hoffleit)
1773 removed WIN32-specific code(Bruce)
1774 removed postmaster -e option, now only postgres -e option (Bruce)
1775 merge duplicate library code in front/backends(Martin)
1776 now works with eBones, international Kerberos(Jun)
1777 more shared library support
1778 c++ include file cleanup(Bruce)
1779 warn about buggy flex(Bruce)
1780 DG-UX, Ultrix, Irix, AIX portability fixes
1781
1782   ------------------------------------------------------------------------
1783 Release 6.1.1                                                   Release v6.0
1784                                 Release Notes
1785   ------------------------------------------------------------------------
1786
1787 Release v6.0
1788
1789 A dump/restore is required for those wishing to migrate data from previous
1790 releases of Postgres.
1791
1792 Migration from v1.09 to v6.0
1793
1794 This migration requires a complete dump of the 1.09 database and a restore
1795 of the database in 6.0.
1796
1797 Migration from pre-v1.09 to v6.0
1798
1799 Those migrating from earlier 1.* releases should first upgrade to 1.09
1800 because the COPY output format was improved from the 1.02 release.
1801
1802 Detailed Change List
1803
1804 Bug Fixes
1805 ---------
1806 ALTER TABLE bug - running postgress process needs to re-read table definition
1807 Allow vacuum to be run on one table or entire database(Bruce)
1808 Array fixes
1809 Fix array over-runs of memory writes(Kurt)
1810 Fix elusive btree range/non-range bug(Dan)
1811 Fix for hash indexes on some types like time and date
1812 Fix for pg_log size explosion
1813 Fix permissions on lo_export()(Bruce)
1814 Fix unitialized reads of memory(Kurt)
1815 Fixed ALTER TABLE ... char(3) bug(Bruce)
1816 Fixed a few small memory leaks
1817 Fixed EXPLAIN handling of options and changed full_path option name
1818 Fixed output of group acl permissions
1819 Memory leaks (hunt and destroy with tools like Purify(Kurt)
1820 Minor improvements to rules system
1821 NOTIFY fixes
1822 New asserts for run-checking
1823 Overhauled parser/analyze code to properly report errors and increase speed
1824 Pg_dump -d now handles NULL's properly(Bruce)
1825 Prevent SELECT NULL from crashing server (Bruce)
1826 Properly report errors when INSERT ... SELECT columns did not match
1827 Properly report errors when insert column names were not correct
1828 Psql \g filename now works(Bruce)
1829 Psql fixed problem with multiple statements on one line with multiple outputs
1830 Removed duplicate system oid's
1831 SELECT * INTO TABLE . GROUP/ORDER BY gives unlink error if table exists(Bruce)
1832 Several fixes for queries that crashed the backend
1833 Starting quote in insert string errors(Bruce)
1834 Submitting an empty query now returns empty status, not just " " query(Bruce)
1835
1836 Enhancements
1837 ------------
1838 Add EXPLAIN manual page(Bruce)
1839 Add UNIQUE index capability(Dan)
1840 Add hostname/user level access control rather than just hostname and user
1841 Add synonym of != for (Bruce)
1842 Allow "select oid,* from table"
1843 Allow BY,ORDER BY to specify columns by number, or by non-alias table.column(Bruce)
1844 Allow COPY from the frontend(Bryan)
1845 Allow GROUP BY to use alias column name(Bruce)
1846 Allow actual compression, not just reuse on the same page(Vadim)
1847 Allow installation-configuration option to auto-add all local users(Bryan)
1848 Allow libpq to distinguish between text value '' and null(Bruce)
1849 Allow non-postgres users with createdb privs to destroydb's
1850 Allow restriction on who can create C functions(Bryan)
1851 Allow restriction on who can do backend COPY(Bryan)
1852 Can shrink tables, pg_time and pg_log(Vadim & Erich)
1853 Change debug level 2 to print queries only, changed debug heading layout(Bruce)
1854 Change default decimal constant representation from float4 to float8(Bruce)
1855 European date format now set when postmaster is started
1856 Execute lowercase function names if not found with exact case
1857 Fixes for aggregate/GROUP processing, allow 'select sum(func(x),sum(x+y) from z'
1858 Gist now included in the distrubution(Marc)
1859 Idend authentication of local users(Bryan)
1860 Implement BETWEEN qualifier(Bruce)
1861 Implement IN qualifier(Bruce)
1862 Libpq has PQgetisnull()(Bruce)
1863 Libpq++ improvements
1864 New options to initdb(Bryan)
1865 Pg_dump allow dump of oid's(Bruce)
1866 Pg_dump create indexes after tables are loaded for speed(Bruce)
1867 Pg_dumpall dumps all databases, and the user table
1868 Pginterface additions for NULL values(Bruce)
1869 Prevent postmaster from being run as root
1870 Psql \h and \? is now readable(Bruce)
1871 Psql allow backslashed, semicolons anywhere on the line(Bruce)
1872 Psql changed command prompt for lines in query or in quotes(Bruce)
1873 Psql char(3) now displays as (bp)char in \d output(Bruce)
1874 Psql return code now more accurate(Bryan?)
1875 Psql updated help syntax(Bruce)
1876 Re-visit and fix vacuum(Vadim)
1877 Reduce size of regression diffs, remove timezone name difference(Bruce)
1878 Remove compile-time parameters to enable binary distributions(Bryan)
1879 Reverse meaning of HBA masks(Bryan)
1880 Secure Authentication of local users(Bryan)
1881 Speed up vacuum(Vadim)
1882 Vacuum now had VERBOSE option(Bruce)
1883
1884 Source tree changes
1885 -------------------
1886 All functions now have prototypes that are compared against the calls
1887 Allow asserts to be disabled easly from Makefile.global(Bruce)
1888 Change oid constants used in code to #define names
1889 Decoupled sparc and solaris defines(Kurt)
1890 Gcc -Wall compiles cleanly with warnings only from unfixable constructs
1891 Major include file reorganization/reduction(Marc)
1892 Make now stops on compile failure(Bryan)
1893 Makefile restructuring(Bryan, Marc)
1894 Merge bsdi_2_1 to bsdi(Bruce)
1895 Monitor program removed
1896 Name change from Postgres95 to PostgreSQL
1897 New config.h file(Marc, Bryan)
1898 PG_VERSION now set to 6.0 and used by postmaster
1899 Portability additions, including Ultrix, DG/UX, AIX, and Solaris
1900 Reduced the number of #define's, centeralized #define's
1901 Remove duplicate OIDS in system tables(Dan)
1902 Remove duplicate system catalog info or report mismatches(Dan)
1903 Removed many os-specific #define's
1904 Restructured object file generation/location(Bryan, Marc)
1905 Restructured port-specific file locations(Bryan, Marc)
1906 Unused/uninialized variables corrected
1907
1908   ------------------------------------------------------------------------
1909 Release 6.1                                                    Release v1.09
1910                                 Release Notes
1911   ------------------------------------------------------------------------
1912
1913 Release v1.09
1914
1915 Sorry, we stopped keeping track of changes from 1.02 to 1.09. Some of the
1916 changes listed in 6.0 were actually included in the 1.02.1 to 1.09 releases.
1917
1918   ------------------------------------------------------------------------
1919 Release v6.0                                                   Release v1.02
1920                                 Release Notes
1921   ------------------------------------------------------------------------
1922
1923 Release v1.02
1924
1925 Migration from v1.02 to v1.02.1
1926
1927 Here is a new migration file for 1.02.1. It includes the 'copy' change and a
1928 script to convert old ascii files.
1929
1930      Note: The following notes are for the benefit of users who want to
1931      migrate databases from postgres95 1.01 and 1.02 to postgres95
1932      1.02.1.
1933
1934      If you are starting afresh with postgres95 1.02.1 and do not need
1935      to migrate old databases, you do not need to read any further.
1936
1937 In order to upgrade older postgres95 version 1.01 or 1.02 databases to
1938 version 1.02.1, the following steps are required:
1939
1940   1. Start up a new 1.02.1 postmaster
1941
1942   2. Add the new built-in functions and operators of 1.02.1 to 1.01 or 1.02
1943      databases. This is done by running the new 1.02.1 server against your
1944      own 1.01 or 1.02 database and applying the queries attached at the end
1945      of thie file. This can be done easily through psql. If your 1.01 or
1946      1.02 database is named "testdb" and you have cut the commands from the
1947      end of this file and saved them in addfunc.sql:
1948
1949              % psql testdb -f addfunc.sql
1950
1951      Those upgrading 1.02 databases will get a warning when executing the
1952      last two statements in the file because they are already present in
1953      1.02. This is not a cause for concern.
1954
1955 Dump/Reload Procedure
1956
1957 If you are trying to reload a pg_dump or text-mode 'copy tablename to
1958 stdout' generated with a previous version, you will need to run the attached
1959 sed script on the ASCII file before loading it into the database. The old
1960 format used '.' as end-of-data, while '\.' is now the end-of-data marker.
1961 Also, empty strings are now loaded in as '' rather than NULL. See the copy
1962 manual page for full details.
1963
1964         sed 's/^\.$/\\./g' in_file out_file
1965
1966 If you are loading an older binary copy or non-stdout copy, there is no
1967 end-of-data character, and hence no conversion necessary.
1968
1969 -- following lines added by agc to reflect the case-insensitive
1970 -- regexp searching for varchar (in 1.02), and bpchar (in 1.02.1)
1971 create operator ~* (leftarg = bpchar, rightarg = text, procedure = texticregexeq);
1972 create operator !~* (leftarg = bpchar, rightarg = text, procedure = texticregexne);
1973 create operator ~* (leftarg = varchar, rightarg = text, procedure = texticregexeq);
1974 create operator !~* (leftarg = varchar, rightarg = text, procedure = texticregexne);
1975
1976 Detailed Change List
1977
1978 Source code maintenance and development
1979  * worldwide team of volunteers
1980  * the source tree now in CVS at ftp.ki.net
1981
1982 Enhancements
1983  * psql (and underlying libpq library) now has many more options for
1984    formatting output, including HTML
1985  * pg_dump now output the schema and/or the data, with many fixes to
1986    enhance completeness.
1987  * psql used in place of monitor in administration shell scripts.
1988    monitor to be depreciated in next release.
1989  * date/time functions enhanced
1990  * NULL insert/update/comparison fixed/enhanced
1991  * TCL/TK lib and shell fixed to work with both tck7.4/tk4.0 and tcl7.5/tk4.1
1992
1993 Bug Fixes (almost too numerous to mention)
1994  * indexes
1995  * storage management
1996  * check for NULL pointer before dereferencing
1997  * Makefile fixes
1998
1999 New Ports
2000  * added SolarisX86 port
2001  * added BSDI 2.1 port
2002  * added DGUX port
2003
2004   ------------------------------------------------------------------------
2005 Release v1.09                                                  Release v1.01
2006                                 Release Notes
2007   ------------------------------------------------------------------------
2008
2009 Release v1.01
2010
2011 Migration from v1.0 to v1.01
2012
2013 The following notes are for the benefit of users who want to migrate
2014 databases from postgres95 1.0 to postgres95 1.01.
2015
2016 If you are starting afresh with postgres95 1.01 and do not need to migrate
2017 old databases, you do not need to read any further.
2018
2019 In order to postgres95 version 1.01 with databases created with postgres95
2020 version 1.0, the following steps are required:
2021
2022   1. Set the definition of NAMEDATALEN in src/Makefile.global to 16 and
2023      OIDNAMELEN to 20.
2024
2025   2. Decide whether you want to use Host based authentication.
2026
2027        a. If you do, you must create a file name "pg_hba" in your top-level
2028           data directory (typically the value of your $PGDATA).
2029           src/libpq/pg_hba shows an example syntax.
2030
2031        b. If you do not want host-based authentication, you can comment out
2032           the line
2033
2034                   HBA = 1
2035
2036           in src/Makefile.global
2037
2038           Note that host-based authentication is turned on by default, and
2039           if you do not take steps A or B above, the out-of-the-box 1.01
2040           will not allow you to connect to 1.0 databases.
2041
2042   3. Compile and install 1.01, but DO NOT do the initdb step.
2043
2044   4. Before doing anything else, terminate your 1.0 postmaster, and backup
2045      your existing $PGDATA directory.
2046
2047   5. Set your PGDATA environment variable to your 1.0 databases, but set up
2048      path up so that 1.01 binaries are being used.
2049
2050   6. Modify the file $PGDATA/PG_VERSION from 5.0 to 5.1
2051
2052   7. Start up a new 1.01 postmaster
2053
2054   8. Add the new built-in functions and operators of 1.01 to 1.0 databases.
2055      This is done by running the new 1.01 server against your own 1.0
2056      database and applying the queries attached and saving in the file
2057      1.0_to_1.01.sql. This can be done easily through psql. If your 1.0
2058      database is name "testdb":
2059
2060              % psql testdb -f 1.0_to_1.01.sql
2061
2062      and then execute the following commands (cut and paste from here):
2063
2064      -- add builtin functions that are new to 1.01
2065
2066      create function int4eqoid (int4, oid) returns bool as 'foo'
2067      language 'internal';
2068      create function oideqint4 (oid, int4) returns bool as 'foo'
2069      language 'internal';
2070      create function char2icregexeq (char2, text) returns bool as 'foo'
2071      language 'internal';
2072      create function char2icregexne (char2, text) returns bool as 'foo'
2073      language 'internal';
2074      create function char4icregexeq (char4, text) returns bool as 'foo'
2075      language 'internal';
2076      create function char4icregexne (char4, text) returns bool as 'foo'
2077      language 'internal';
2078      create function char8icregexeq (char8, text) returns bool as 'foo'
2079      language 'internal';
2080      create function char8icregexne (char8, text) returns bool as 'foo'
2081      language 'internal';
2082      create function char16icregexeq (char16, text) returns bool as 'foo'
2083      language 'internal';
2084      create function char16icregexne (char16, text) returns bool as 'foo'
2085      language 'internal';
2086      create function texticregexeq (text, text) returns bool as 'foo'
2087      language 'internal';
2088      create function texticregexne (text, text) returns bool as 'foo'
2089      language 'internal';
2090
2091      -- add builtin functions that are new to 1.01
2092
2093      create operator = (leftarg = int4, rightarg = oid, procedure = int4eqoid);
2094      create operator = (leftarg = oid, rightarg = int4, procedure = oideqint4);
2095      create operator ~* (leftarg = char2, rightarg = text, procedure = char2icregexeq);
2096      create operator !~* (leftarg = char2, rightarg = text, procedure = char2icregexne);
2097      create operator ~* (leftarg = char4, rightarg = text, procedure = char4icregexeq);
2098      create operator !~* (leftarg = char4, rightarg = text, procedure = char4icregexne);
2099      create operator ~* (leftarg = char8, rightarg = text, procedure = char8icregexeq);
2100      create operator !~* (leftarg = char8, rightarg = text, procedure = char8icregexne);
2101      create operator ~* (leftarg = char16, rightarg = text, procedure = char16icregexeq);
2102      create operator !~* (leftarg = char16, rightarg = text, procedure = char16icregexne);
2103      create operator ~* (leftarg = text, rightarg = text, procedure = texticregexeq);
2104      create operator !~* (leftarg = text, rightarg = text, procedure = texticregexne);
2105
2106 Detailed Change List
2107
2108 Incompatibilities:
2109  * 1.01 is backwards compatible with 1.0 database provided the user
2110    follow the steps outlined in the MIGRATION_from_1.0_to_1.01 file.
2111    If those steps are not taken, 1.01 is not compatible with 1.0 database.
2112
2113 Enhancements:
2114  * added PQdisplayTuples() to libpq and changed monitor and psql to use it
2115  * added NeXT port (requires SysVIPC implementation)
2116  * added CAST .. AS ... syntax
2117  * added ASC and DESC keywords
2118  * added 'internal' as a possible language for CREATE FUNCTION
2119    internal functions are C functions which have been statically linked
2120    into the postgres backend.
2121  * a new type "name" has been added for system identifiers (table names,
2122    attribute names, etc.)  This replaces the old char16 type.   The
2123    of name is set by the NAMEDATALEN #define in src/Makefile.global
2124  * a readable reference manual that describes the query language.
2125  * added host-based access control.  A configuration file ($PGDATA/pg_hba)
2126    is used to hold the configuration data.  If host-based access control
2127    is not desired, comment out HBA=1 in src/Makefile.global.
2128  * changed regex handling to be uniform use of Henry Spencer's regex code
2129    regardless of platform.  The regex code is included in the distribution
2130  * added functions and operators for case-insensitive regular expressions.
2131    The operators are ~* and !~*.
2132  * pg_dump uses COPY instead of SELECT loop for better performance
2133
2134 Bug fixes:
2135  * fixed an optimizer bug that was causing core dumps when
2136    functions calls were used in comparisons in the WHERE clause
2137  * changed all uses of getuid to geteuid so that effective uids are used
2138  * psql now returns non-zero status on errors when using -c
2139  * applied public patches 1-14
2140
2141   ------------------------------------------------------------------------
2142 Release v1.02                                                   Release v1.0
2143                                 Release Notes
2144   ------------------------------------------------------------------------
2145
2146 Release v1.0
2147
2148 Detailed Change List
2149
2150 Copyright change:
2151  * The copyright of Postgres 1.0 has been loosened to be freely modifiable
2152    and modifiable for any purpose.  Please read the COPYRIGHT file.
2153    Thanks to Professor Michael Stonebraker for making this possible.
2154
2155 Incompatibilities:
2156  *  date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using
2157    EUROPEAN STYLE).  This follows SQL-92 specs.
2158  *  "delimiters" is now a keyword
2159
2160 Enhancements:
2161  *  sql LIKE syntax has been added
2162  *  copy command now takes an optional USING DELIMITER specification.
2163    delimiters can be any single-character string.
2164  *  IRIX 5.3 port has been added.
2165    Thanks to Paul Walmsley and others.
2166  *  updated pg_dump to work with new libpq
2167  *  \d has been added psql
2168    Thanks to Keith Parks
2169  *  regexp performance for architectures that use POSIX regex has been
2170    improved due to caching of precompiled patterns.
2171    Thanks to Alistair Crooks
2172  *  a new version of libpq++
2173    Thanks to William Wanders
2174
2175 Bug fixes:
2176  *  arbitrary userids can be specified in the createuser script
2177  *  \c to connect to other databases in psql now works.
2178  *  bad pg_proc entry for float4inc() is fixed
2179  *  users with usecreatedb field set can now create databases without
2180    having to be usesuper
2181  *  remove access control entries when the entry no longer has any
2182    permissions
2183  *  fixed non-portable datetimes implementation
2184  *  added kerberos flags to the src/backend/Makefile
2185  *  libpq now works with kerberos
2186  *  typographic errors in the user manual have been corrected.
2187  *  btrees with multiple index never worked, now we tell you they don't
2188    work when you try to use them
2189
2190   ------------------------------------------------------------------------
2191 Release v1.01                                           Postgres95 Beta 0.03
2192                                 Release Notes
2193   ------------------------------------------------------------------------
2194
2195 Postgres95 Beta 0.03
2196
2197 Detailed Change List
2198
2199 Incompatible changes:
2200  * BETA-0.3 IS INCOMPATIBLE WITH DATABASES CREATED WITH PREVIOUS VERSIONS
2201    (due to system catalog changes and indexing structure changes).
2202  * double-quote (") is deprecated as a quoting character for string literals;
2203    you need to convert them to single quotes (').
2204  * name of aggregates (eg. int4sum) are renamed in accordance with the
2205    SQL standard (eg. sum).
2206  * CHANGE ACL syntax is replaced by GRANT/REVOKE syntax.
2207  * float literals (eg. 3.14) are now of type float4 (instead of float8 in
2208    previous releases); you might have to do typecasting if you depend on it
2209    being of type float8.  If you neglect to do the typecasting and you assign
2210    a float literal to a field of type float8, you may get incorrect values
2211    stored!
2212  * LIBPQ has been totally revamped so that frontend applications
2213    can connect to multiple backends
2214  * the usesysid field in pg_user has been changed from int2 to int4 to
2215    allow wider range of Unix user ids.
2216  * the netbsd/freebsd/bsd o/s ports have been consolidated into a
2217    single BSD44_derived port.  (thanks to Alistair Crooks)
2218
2219 SQL standard-compliance (the following details changes that makes postgres95
2220 more compliant to the SQL-92 standard):
2221  * the following SQL types are now built-in: smallint, int(eger), float, real,
2222    char(N), varchar(N), date and time.
2223
2224    The following are aliases to existing postgres types:
2225                 smallint -> int2
2226                 integer, int -> int4
2227                 float, real  -> float4
2228    char(N) and varchar(N) are implemented as truncated text types. In
2229    addition, char(N) does blank-padding.
2230  * single-quote (') is used for quoting string literals; '' (in addition to
2231    \') is supported as means of inserting a single quote in a string
2232  * SQL standard aggregate names (MAX, MIN, AVG, SUM, COUNT) are used
2233    (Also, aggregates can now be overloaded, i.e. you can define your
2234    own MAX aggregate to take in a user-defined type.)
2235  * CHANGE ACL removed. GRANT/REVOKE syntax added.
2236    - Privileges can be given to a group using the "GROUP" keyword.
2237         For example:
2238                 GRANT SELECT ON foobar TO GROUP my_group;
2239         The keyword 'PUBLIC' is also supported to mean all users.
2240
2241         Privileges can only be granted or revoked to one user or group
2242         at a time.
2243
2244         "WITH GRANT OPTION" is not supported.  Only class owners can change
2245         access control
2246    - The default access control is to to grant users readonly access.
2247      You must explicitly grant insert/update access to users.  To change
2248      this, modify the line in
2249                 src/backend/utils/acl.h
2250      that defines ACL_WORLD_DEFAULT
2251
2252 Bug fixes:
2253  * the bug where aggregates of empty tables were not run has been fixed. Now,
2254    aggregates run on empty tables will return the initial conditions of the
2255    aggregates. Thus, COUNT of an empty  table will now properly return 0.
2256    MAX/MIN of an empty table will return a tuple of value NULL.
2257  * allow the use of \; inside the monitor
2258  * the LISTEN/NOTIFY asynchronous notification mechanism now work
2259  * NOTIFY in rule action bodies now work
2260  * hash indices work, and access methods in general should perform better.
2261    creation of large btree indices should be much faster.  (thanks to Paul
2262    Aoki)
2263
2264 Other changes and enhancements:
2265  * addition of an EXPLAIN statement used for explaining the query execution
2266    plan (eg. "EXPLAIN SELECT * FROM EMP" prints out the execution plan for
2267    the query).
2268  * WARN and NOTICE messages no longer have timestamps on them. To turn on
2269    timestamps of error messages, uncomment the line in
2270    src/backend/utils/elog.h:
2271         /* define ELOG_TIMESTAMPS */
2272  * On an access control violation, the message
2273         "Either no such class or insufficient privilege"
2274    will be given.  This is the same message that is returned when
2275    a class is not found.  This dissuades non-privileged users from
2276    guessing the existence of privileged classes.
2277  * some additional system catalog changes have been made that are not
2278    visible to the user.
2279
2280 libpgtcl changes:
2281  * The -oid option has been added to the "pg_result" tcl command.
2282    pg_result -oid returns oid of the last tuple inserted.   If the
2283    last command was not an INSERT, then pg_result -oid returns "".
2284  * the large object interface is available as pg_lo* tcl commands:
2285    pg_lo_open, pg_lo_close, pg_lo_creat, etc.
2286
2287 Portability enhancements and New Ports:
2288  * flex/lex problems have been cleared up.  Now, you should be able to use
2289    flex instead of lex on any platforms.  We no longer make assumptions of
2290    what lexer you use based on the platform you use.
2291  * The Linux-ELF port is now supported.  Various configuration have been
2292    tested:  The following configuration is known to work:
2293         kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24
2294    with everything in ELF format,
2295
2296 New utilities:
2297  * ipcclean added to the distribution
2298    ipcclean usually does not need to be run, but if your backend crashes
2299    and leaves shared memory segments hanging around, ipcclean will
2300    clean them up for you.
2301
2302 New documentation:
2303  * the user manual has been revised and libpq documentation added.
2304
2305   ------------------------------------------------------------------------
2306 Release v1.0                                            Postgres95 Beta 0.02
2307                                 Release Notes
2308   ------------------------------------------------------------------------
2309
2310 Postgres95 Beta 0.02
2311
2312 Detailed Change List
2313
2314 Incompatible changes:
2315  * The SQL statement for creating a database is 'CREATE DATABASE' instead
2316    of 'CREATEDB'. Similarly, dropping a database is 'DROP DATABASE' instead
2317    of 'DESTROYDB'. However, the names of the executables 'createdb' and
2318    'destroydb' remain the same.
2319
2320 New tools:
2321  * pgperl - a Perl (4.036) interface to Postgres95
2322  * pg_dump - a utility for dumping out a postgres database into a
2323         script file containing query commands. The script files are in a ASCII
2324         format and can be used to reconstruct the database, even on other
2325         machines and other architectures. (Also good for converting
2326         a Postgres 4.2 database to Postgres95 database.)
2327
2328 The following ports have been incorporated into postgres95-beta-0.02:
2329  * the NetBSD port by Alistair Crooks
2330  * the AIX port by Mike Tung
2331  * the Windows NT port by Jon Forrest (more stuff but not done yet)
2332  * the Linux ELF port by Brian Gallew
2333
2334 The following bugs have been fixed in postgres95-beta-0.02:
2335  * new lines not escaped in COPY OUT and problem with COPY OUT when first
2336    attribute is a '.'
2337  * cannot type return to use the default user id in createuser
2338  * SELECT DISTINCT on big tables crashes
2339  * Linux installation problems
2340  * monitor doesn't allow use of 'localhost' as PGHOST
2341  * psql core dumps when doing \c or \l
2342  * the "pgtclsh" target missing from src/bin/pgtclsh/Makefile
2343  * libpgtcl has a hard-wired default port number
2344  * SELECT DISTINCT INTO TABLE hangs
2345  * CREATE TYPE doesn't accept 'variable' as the internallength
2346  * wrong result using more than 1 aggregate in a SELECT
2347
2348   ------------------------------------------------------------------------
2349 Postgres95 Beta 0.03                                    Postgres95 Beta 0.01
2350                                 Release Notes
2351   ------------------------------------------------------------------------
2352
2353 Postgres95 Beta 0.01
2354
2355 Initial release.
2356
2357   ------------------------------------------------------------------------
2358 Postgres95 Beta 0.02                                          Timing Results
2359                                 Release Notes
2360 Prev
2361   ------------------------------------------------------------------------
2362
2363 Timing Results
2364
2365 These timing results are from running the regression test with the commands
2366
2367 % cd src/test/regress
2368 % make all
2369 % time make runtest
2370
2371
2372 Timing under Linux 2.0.27 seems to have a roughly 5% variation from run to
2373 run, presumably due to the scheduling vagaries of multitasking systems.
2374
2375 v6.5
2376
2377 As has been the case for previous releases, timing between releases is not
2378 directly comparable since new regression tests have been added. In general,
2379 v6.5 is faster than previous releases.
2380
2381 Timing with fsync() disabled:
2382
2383   Time   System
2384   02:00  Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
2385   04:38  Sparc Ultra 1 143MHz, 64MB, Solaris 2.6
2386
2387
2388 Timing with fsync() enabled:
2389
2390   Time   System
2391   04:21  Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
2392
2393
2394 For the linux system above, using UW-SCSI disks rather than (older) IDE
2395 disks leads to a 50% improvement in speed on the regression test.
2396
2397 v6.4beta
2398
2399 The times for this release are not directly comparable to those for previous
2400 releases since some additional regression tests have been included. In
2401 general, however, v6.4 should be slightly faster than the previous release
2402 (thanks, Bruce!).
2403
2404   Time   System
2405   02:26  Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
2406
2407 v6.3
2408
2409 The times for this release are not directly comparable to those for previous
2410 releases since some additional regression tests have been included and some
2411 obsolete tests involving time travel have been removed. In general, however,
2412 v6.3 is substantially faster than previous releases (thanks, Bruce!).
2413
2414   Time   System
2415   02:30  Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
2416   04:12  Dual Pentium Pro 180, 96MB, EIDE, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
2417
2418 v6.1
2419
2420   Time   System
2421   06:12  Pentium Pro 180, 32MB, EIDE, Linux 2.0.30, gcc 2.7.2 -O2 -m486
2422   12:06  P-100, 48MB, Linux 2.0.29, gcc
2423   39:58  Sparc IPC 32MB, Solaris 2.5, gcc 2.7.2.1 -O -g
2424
2425   ------------------------------------------------------------------------
2426 Prev                                Home
2427 Postgres95 Beta 0.01