5 Release date: 2002-??-??
9 Major changes in this release:
13 Schemas allow users to create objects in their own namespace
14 so two people or applications can have tables with the same
15 name. There is also a public schema for shared tables.
16 Table/index creation can be restricted by removing
17 permissions on the public schema.
21 PostgreSQL now supports ALTER TABLE ... DROP COLUMN functionality.
25 Functions returning multiple rows and/or multiple columns are
26 now much easier to use than before. You can call such a
27 "table function" in the SELECT FROM clause, treating its output
28 like a table. Also, plpgsql functions can now return sets.
32 For performance, PostgreSQL now supports prepared queries.
36 PostgreSQL now records object dependencies, which allows
37 improvements in many areas.
41 Functions and procedural languages now have privileges, and
42 people running them can take on the privileges of their creators.
46 Both multibyte and locale are now always enabled.
50 A variety of logging options have been enhanced.
54 A large number of interfaces have been moved to
55 http://gborg.postgresql.org where they can be developed
56 and released independently.
60 By default, functions can now take up to 32 parameters, and
61 identifiers can be up to 63 bytes long.
63 ----------------------------------------------------------------------
65 Migration to version 7.3
67 A dump/restore using "pg_dump" is required for those wishing to migrate
68 data from any previous release.
70 Observe the following incompatibilities:
72 * Pre-6.3 clients are no longer supported.
74 * pg_hba.conf now has a USER column and additional features.
76 * Several GUC logging parameters have been renamed and improved.
78 * LIMIT #,# is disabled, use LIMIT # OFFSET #.
80 * LIMIT can now appear before FOR UPDATE, for portability.
82 * INSERTs with column lists must specify all values, e.g.
83 INSERT INTO tab (col1, col2) VALUES ('val1') is now invalid
85 * DROP object now takes either CASCADE or RESTRICT to control
86 whether dependent objects are also dropped
88 * An index is now not automatically created for SERIAL columns
90 * A SET inside an aborted transaction is now rolled back
92 * COPY no longer considers missing trailing columns to be NULL
94 * TIMESTAMP and TIME data types now default to WITHOUT TIMEZONE
96 ----------------------------------------------------------------------
104 Kerberos V Heimdal support (KTH)
105 Add pg_locks view to show locks (Neil)
106 Security fixes for password negotiation memory allocation (Neil)
107 Remove support for version 0, <=6.2 FE/BE protocol (Tom)
108 Reserve the last few backend slots for superusers, add GUC variable
109 superuser_reserved_connections to control this (Nigel J. Andrews)
113 Improve startup by calling localtime() only once (Tom)
114 Cache system catalog information in flat files for faster startup (Tom)
115 Improve caching of index information (Tom)
116 Optimizer improvements (Tom, Fernando Nasser)
117 Catalog caches now store failed lookups (Tom)
118 Hash function improvements (Neil)
119 Improve performance of query tokenization and network handling (Peter)
120 Speed improvement for large object restore (Mario Weilguni)
121 Mark expired index entries on first lookup, saving later heap fetches (Tom)
122 Eliminate NULL bitmap padding when not required (Manfred)
123 Add BSD-licensed qsort() for Solaris, for performance (Bruce)
124 Reduce per-row overhead by four bytes (Manfred Koizar)
125 Fix GEQO optimizer bug (Neil Conway)
126 Make WITHOUT OID actually save four bytes per row (Manfred Koizar)
127 Add GUC default_statistics_target variable to specify ANALYZE buckets (Neil)
128 Use local buffer cache for temporary tables so no WAL overhead (Tom)
132 Add privileges on functions and procedural languages
133 Add OWNER to CREATE DATABASE so superusers can create databases
134 on behalf of unprivileged users. (Gavin Sherry, Tom)
135 Add new object permission bits EXECUTE and USAGE (Tom)
136 Add SET SESSION AUTHORIZATION DEFAULT and RESET SESSION AUTHORIZATION (Peter)
137 Allow functions to be executed with the privilege of the function owner (Peter)
139 Client Authentication
140 =====================
141 Add file to hold passwords using PGPASSWORDFILE environment variable
146 Server log messages now tagged with LOG, not DEBUG (Bruce)
147 Add USER column to pg_hba.conf (Bruce)
148 Have log_connections output two lines in log file (Tom)
149 Remove debug_level from postgresql.conf, now SERVER_MIN_MESSAGES (Bruce)
150 New ALTER DATABASE/USER ... SET command for per-user/db initialization (Peter)
151 New GUC variables server_min_messages and client_min_messages which control
152 which messages are sent to the server logs or client applications (Bruce)
153 Allow pg_hba.conf to specify lists of users/dbs separated by commas,
154 group names prepended with +, and file names prepended with @ (Bruce)
155 Allow group names specified by +
156 Add samegroup in pg_hba.conf for group name/dbname restriction (Bruce)
157 Remove secondary password file capability (Bruce)
158 Remove pg_passwd utility (Bruce)
159 Add GUC variable db_user_namespace for db-local user names (Bruce)
160 SSL improvements (Bear Giles)
161 Make encryption of stored passwords the default (Bruce)
162 Allow pg_statistics to be reset by calling pg_stat_reset() (Christopher)
163 Add log_duration GUC parameter (Bruce)
164 Rename GUC debug_print_query to log_statement (Bruce)
165 Rename GUC show_query_stats to show_statement_stats (Bruce)
166 Add GUC param log_min_error_statement to print query to logs on error (Gavin)
170 Make cursors insensitive, meaning their contents do not change (Tom)
171 Disable LIMIT #,# syntax; now only LIMIT # OFFSET # supported (Bruce)
172 Increase identifier length to 64 (Neil, Bruce)
173 UNION fixes for merging >= 3 columns of different lengths (Tom)
174 Add DEFAULT keyword to INSERT, i.e INSERT ... (..., DEFAULT, ) (Rod)
175 Allow views to have default values using ALTER COLUMN ... SET DEFAULT (Neil)
176 Fail on INSERTs with column lists that don't supply all column values,
177 e.g. INSERT INTO tab (col1, col2) VALUES ('val1'); (Rod)
178 Fix for join aliases (Tom)
179 Fix for FULL OUTER JOINs (Tom)
180 Improve reporting of invalid identifier and location (Tom, Gavin)
181 Fix OPEN cursor(args) (Tom)
182 Allow 'ctid' to be used in a view and currtid(viewname) (Hiroshi)
183 Fix for CREATE TABLE AS with UNION (Tom)
184 SQL99 syntax improvements (Thomas)
185 Add GUC statement_timeout variable to cancel queries (Bruce)
186 Allow prepared queries with PREPARE/EXECUTE (Neil)
187 Allow FOR UPDATE to appear after LIMIT/OFFSET (Bruce)
188 Add auto-transactions with GUC variable autocommit (Tom, David Van Wie)
192 Make equals signs optional in CREATE DATABASE (Gavin Sherry)
193 Make ALTER TABLE OWNER to change index ownership (Neil)
194 Add per-database and per-user startup commands, ALTER DATABASE ... SET and
195 ALTER USER ... SET (Peter)
196 New ALTER TABLE tabname ALTER COLUMN colname SET STORAGE controls TOAST
197 storage, compression (John Gray)
198 Add SCHEMA support with CREATE/DROP SCHEMA (Tom)
199 Create schema for temporary tables (Tom)
200 Add GUC variable search_path for namespace schema search (Tom)
201 Add ALTER TABLE SET/DROP NOT NULL (Christopher)
202 New CREATE FUNCTION volatility levels (Tom)
203 Make rule names unique only per table (Tom)
204 Add 'ON tablename' clause to DROP RULE and COMMENT ON RULE (Tom)
205 Add ALTER TRIGGER RENAME (Joe)
206 New current_schema() and current_schemas() inquiry functions (Tom)
207 Allow functions to return multiple rows, also called table functions (Joe)
208 Make WITH optional in CREATE DATABASE, for consistency (Bruce)
209 Add object dependency tracking (Rod, Tom)
210 Add RESTRICT/CASCADE to DROP commands (Rod)
211 Add ALTER TABLE DROP non-CHECK CONSTRAINT (Rod)
212 Auto-destroy sequence on DROP of table with SERIAL (Rod)
213 Prevent column dropping if column is used by foreign key (Rod)
214 Automatically drop constraints/functions when object is dropped (Rod)
215 Add CREATE/DROP OPERATOR CLASS (Bill Studenmund, Tom)
216 Add ALTER TABLE DROP COLUMN (Christopher)
217 Prevent inherited columns from being removed or renamed (Alvaro Herrera)
218 Add CREATE OR REPLACE VIEW, CREATE OR REPLACE RULE (Gavin, Neil, Tom)
219 Fix foreign key constraints to not error on intermediate db states (Stephan)
220 Propagate column or table renaming to foreign key constraints
224 Have COPY TO output embedded carriage returns and newlines as \r and \n (Tom)
225 Allow DELIMITER in COPY FROM to be 8-bit clean (Tatsuo)
226 Make pg_dump use ALTER TABLE ADD PRIMARY KEY, for performance (Neil)
227 Disable brackets in multi-statement rules (Bruce)
228 Disable VACUUM from being called inside a function (Bruce)
229 Allow dropdb and other scripts to use identifiers with spaces (Bruce)
230 Restrict comment to the current database
231 Allow comments on operators, independent of the underlying function (Rod)
232 Rollback SET commands in aborted transactions (Tom)
233 EXPLAIN now outputs as a query (Tom)
234 Display sort keys in EXPLAIN (Tom)
235 Add 'SET LOCAL var = value' to set GUC variables for a single transaction (Tom)
236 Allow ANALYZE to run in a transaction (Bruce)
237 Improve COPY syntax using new WITH clauses, keep backward compatibility (Bruce)
238 Fix pg_dump to consistently output tags in non-ASCII dumps (Bruce)
239 Make foreign key constraints clearer in dump file (Rod)
240 Add COMMENT ON CONSTRAINT (Rod)
241 Allow COPY TO/FROM to specify column names (Brent Verner)
242 Dump UNIQUE and PRIMARY KEY contraints as ALTER TABLE (Rod)
243 Have SHOW output a query result (Joe)
244 Generate failure on short COPY lines rather than pad NULLs (Neil)
245 Fix CLUSTER to preserve all table attributes (Alvaro Herrera)
246 New pg_settings table to view/modify GUC settings (Joe)
247 Add smart quoting, portability improvements to pg_dump output (Peter)
248 Dump serial columns out as SERIAL (Tom)
249 Enable large file support, >2G for pg_dump (Peter)
250 Disallow TRUNCATE on tables that are involved in referential constraints (Rod)
251 Have TRUNCATE also auto-truncate the toast table of the relation (Tom)
252 Add clusterdb utility that will auto-cluster an entire database based on
253 previous CLUSTER operations (Alvaro Herrera)
254 Overhaul pg_dumpall (Peter)
255 Allow REINDEX of TOAST tables (Tom)
257 Data Types and Functions
258 ========================
259 Fix factorial(0) to return 1 (Bruce)
260 Date/time/timezone improvements (Thomas)
261 Fix for array slice extraction (Tom)
262 Fix extract/date_part to report proper microseconds for timestamp (Tatsuo)
263 Allow text_substr() and bytea_substr() to read TOAST values more
264 efficiently (John Gray)
265 Add DOMAIN type support (Rod)
266 Make WITHOUT TIME ZONE the default for TIMESTAMP and TIME data types (Thomas)
267 Allow alternate storage scheme of 64-bit integers for date/time types
268 using --enable-integer-datetimes in configure (Thomas)
269 Make timezone(timestamptz) return timestamp rather than a string (Thomas)
270 Allow fractional seconds in date/time types for dates prior to 1BC (Thomas)
271 Limit timestamp data types to 6 decimal places of precision (Thomas)
272 Change timezone conversion functions from timetz() to timezone() (Thomas)
273 Add GUC variables datestyle and timezone (Tom)
274 Add OVERLAY(), which allows substitution of a substring in a string (Thomas)
275 Add SIMILAR TO as a synonym for our existing operator "~" (Thomas)
276 Add regular expression SUBSTRING(string FROM pat FOR escape) (Thomas)
277 Add LOCALTIME and LOCALTIMESTAMP functions (Thomas)
278 Add named composite types using CREATE TYPE typename AS (column) (Joe)
279 Allow composite type definition in the table alias clause (Joe)
280 Add new API to simplify creation of C language table functions (Joe)
281 Remove ODBC-compatible empty parentheses from calls to SQL99 functions
282 for which these parentheses do not match the standar (Thomas)
283 Add appendix in the User's Guide which lists SQL92 features (Thomas)
284 Allow macaddr data type to accept 12 hex digits with no separators (Mike Wyer)
285 Add CREATE/DROP CAST (Thomas)
286 Add IS DISTINCT FROM operator (Thomas)
287 Add SQL99 TREAT() function, synonym for CAST() (Thomas)
288 Add pg_backend_pid() to output backend pid (Bruce)
289 Allow inet arrays in /contrib/array (Neil)
290 Add IS OF / IS NOT OF type predicate (Thomas)
291 Allow bit string constants without fully-specified length (Thomas)
292 Allow conversion between 8-byte integers and bit strings (Thomas)
293 Implement hex literal conversion to bit string literal (Thomas)
294 Allow table functions to appear in the FROM clause (Joe)
295 Increase maximum number of function parameters to 32 (Bruce)
296 No longer automatically create index for SERIAL column (Tom)
297 Add current_database() (Rod)
298 Fix cash_words() to not overflow buffer (Tom)
299 Add functions replace(), split(), to_hex() (Joe)
300 Fix LIKE for bytea as a right-hand argument (Joe)
301 Prevent crashes caused by SELECT cash_out(2)
302 Triggers are now fired in alphabetical order
306 Add additional encodings (Korean (JOHAB), Thai (WIN874), Vietnamese (TCVN),
307 Arabic (WIN1256), Simplified Chinese (GBK), Korean (UHC) (Eiji Tokuya)
308 Enable locale support by default (Peter)
309 Add GUC locale variables (Peter)
310 Escape byes >= 0x7f for multibyte in PQescapeBytea/PQunescapeBytea (Tatsuo)
311 Add locale awareness to regular expression character classes
312 Enable multibyte support by default (Tatso)
313 Add GUC variables client_encoding (Tom)
314 Add GB18030 multibyte support (Bill Huang)
315 Add CREATE/DROP CONVERSION, allowing loadable encodings (Tatsuo, Kaori)
316 Add pg_conversion table (Tatsuo)
317 Add SQL99 CONVERT() function (Tatsuo)
319 Server-side Languages
320 =====================
321 Allow recursive SQL function (Peter)
322 Change PL/Tcl build to use configured compiler and Makefile.shlib (Peter)
323 Have PL/PgSQL FOUND return proper value for PERFORM and SELECT INTO (Tom, Neil)
324 Allow PL/PgSQL to handle quoted identifiers (Tom)
325 Allow PL/pgSQL functions can return sets (Neil)
329 Don't lowercase psql \connect database name for 7.2.0 compatibility (Tom)
330 Add psql \timing to time user queries (Greg Sabino Mullane)
331 Have psql \d show index information (Greg Sabino Mullane)
332 New psql \dD shows domains (Jonathan Eisler)
333 Allow psql to show rules on views (Paul ?)
334 Fix for psql variable substitution (Tom)
335 Allow psql \d to show temporary table structure (Tom)
336 Allow psql \d to show foreign keys (Rod)
337 Fix \? to honor \pset pager (Bruce)
338 Have psql reports its version number on startup (Tom)
342 Add PQunescapeBytea() function to libpq (Patrick Welche)
343 Fix for sending large queries over non-blocking connections (Bernhard Herzog)
344 Fix for libpq using timers on Win9X (David Ford)
345 Allow libpq notify to handle servers with different-length identifiers (Tom)
346 Add libpq PQescapeString() and PQescapeBytea() to Win32 (Bruce)
347 Fix for SSL with non-blocking connections (Jack Bates)
348 Add libpq connection timeout parameter (Denis A Ustimenko)
352 Allow jdbc to compile with jdk 1.4 (Dave)
353 Add jdbc3 support (Barry)
354 Allows jdbc to set loglevel by adding ?loglevel=X to the connection URL (Barry)
355 Add jdbc Driver.info() message that prints out the version number (Barry)
356 Add jdbc updateable result sets
357 Add jdbc support for callable statements
358 Add jdbc query cancel capability
359 Add refresh row to jdbc (Dave)
360 Fix jdbc MD5 encryption handling for multibyte servers (Jun Kawai)
361 Add JDBC support for prepared statements (Barry)
365 Fixed ecpg bug concerning octal numbers in single quotes (Michael)
369 Move /interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce)
370 Improve python (Elliot Lee, Andrew Johnson, Greg Copeland)
371 Add libpgtcl connection close event (Gerhard Hintermayer)
372 Move /interfaces/libpq++ to http://gborg.postgresql.org (Marc, Bruce)
373 Move /interfaces/odbc to http://gborg.postgresql.org (Marc)
374 Move /interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce)
375 Move /interfaces/perl5 to http://gborg.postgresql.org (Marc, Bruce)
376 Remove /bin/pgaccess from main tree, now at http::/www.pgaccess.org (Bruce)
380 Fix for parallel make (Peter)
381 AIX fixes for linking TCL (Andreas Zeugswetter)
382 Allow plperl to build under Cygwin (Jason Tishler)
383 Improve MIPS compiles (Peter, Oliver Elphick)
384 Require autoconf version 2.53 (Peter)
385 Require readline and zlib by default in configure (Peter)
386 Allow Solaris to use Intimate Shared Memory (ISM), for performance
387 (Scott Brunza, P.J. Josh Rovero)
388 Always enable syslog in compile, remove --enable-syslog option (Tatsuo)
389 Fix for Win9x DLL creation (Magnus Naeslund)
390 Fix for link() usage by WAL code on Win32, Netware, BeOS (Jason Tishler)
391 Add sys/types.h to c.h, remove from main files (Peter, Bruce)
392 Fix AIX hang on SMP machines (Tomoyuki Niijima)
396 Improve loadable module linking to use RTLD_NOW (Tom)
397 New error levels WARNING, INFO, LOG, DEBUG[1-5] (Bruce)
398 New src/port directory holds replace libc functions (Peter, Bruce)
399 New pg_namespace system catalog for schemas (Tom)
400 Add pg_class.relnamespace for schemas (Tom)
401 Add pg_type.typnamespace for schemas (Tom)
402 Add pg_proc.pronamespace for schemas (Tom)
403 Restructure aggregates to have pg_proc entries (Tom)
404 System relations now have their own namespace, pg_* test not required
406 Rename TOAST index names to be *_index rather than *_idx (Neil)
407 Add namespaces for operators, opclasses (Tom)
408 Add additional checks to server control file (Thomas)
409 New Polish FAQ (Marcin Mazurek)
410 Add Posix semaphore support (Tom)
411 Document need for reindex (Bruce)
412 Rename some internal identifiers to simplify Win32 compile (Jan, Katherine Ward)
413 Add documentation on computing disk space (Bruce)
414 Remove KSQO from GUC (Bruce)
415 Fix memory leak in rtree (Kenneth Been)
416 Modify a few error messages for consistency (Bruce)
417 Remove unused system table columns (Peter)
418 Make system columns NOT NULL where appropriate (Tom)
419 Clean up use of sprintf in favor of snprintf()
420 Remove OPAQUE and create specific subtypes (Tom)
421 Cleanups in array internal handling (Joe)
422 Disallow pg_atoi('') (Bruce)
423 Remove GUC parameter wal_files because WAL files are now recycled (Bruce)
428 Gist fixes (Teodor Sigaev, Neil)
429 Upgrade /contrib/mysql
430 Add /contrib/dbsize which shows table sizes without vacuum (Peter)
431 Add /contrib/intagg, integer aggregator routines (mlw)
432 Improve /contrib/Oid2name (Neil, Bruce)
433 Improve /contrib/tsearch (Teodor Sigaev)
434 Improve /contrib/tsearch (Oleg)
435 Cleanups of /contrib/rserver (Alexey V. Borzov)
436 Update /contrib/oracle conversion utility (Gilles Darold)
437 Update /contrib/dblink (Joe)
438 Improve options supported by /contrib/vacuumlo (Mario Weilguni)
439 Fixes, improvements to /contrib/intarray (Oleg, Andrey Oktyabrski)
440 Add /contrib/reindexdb utility (Shaun Thomas)
441 Add indexing to /contrib/isbn_issn (Dan Weston)
442 Add /contrib/dbmirror (Steven Singer)
443 Improve /contrib/pgbench (Neil)
444 Add /contrib/tablefunc table function examples (Joe)
445 Add /contrib/ltree data type for tree structures (Teodor Sigaev, Oleg Bartunov)
446 Move /contrib/pg_controldata into main tree (Bruce)
447 Fixes to /contrib/cube (Bruno Wolff)
448 Improve /contrib/fulltextindex (Christopher)
449 ----------------------------------------------------------------------
453 Release date: 2002-08-23
455 This has a variety of fixes from 7.2.1, including the security
456 problems reported on BUGTRAQ.
458 ----------------------------------------------------------------------
460 Migration to version 7.2.2
462 A dump/restore is *not* required for those running 7.2.X.
464 ----------------------------------------------------------------------
468 Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/PgSQL (Tom)
469 Fix for compressed transaction log id wraparound (Tom)
470 Fix PQescapeBytea/PQunescapeBytea so that they handle bytes > 0x7f (Tatsuo)
471 Fix for psql and pg_dump crashing when invoked with non-existent long
473 Fix crash when invoking geometric operators (Tom)
474 Allow OPEN cursor(args) (Tom)
475 Fix for rtree_gist index build (Teodor)
476 Fix for usage of partial indexes for relations other than first in
478 Fix for dumping user-defined aggregates (Tom)
479 Contrib/intarray fixes (Oleg)
480 Fix for complex UNION/EXCEPT/INTERSECT queries using parens (Tom)
481 Fix to pg_convert (Tatsuo)
482 Fix for buffer overrun in handling long datetime input (Thomas, Neil)
483 Fix for buffer overrun in repeat() (Neil)
484 Fix for buffer overrun in lpad() and rpad() with multibyte (Neil)
485 Fix for buffer overrun in SET TIME ZONE and TZ env var (Neil)
488 ----------------------------------------------------------------------
492 Release date: 2002-03-21
494 This has a variety of fixes from 7.2.
496 ----------------------------------------------------------------------
498 Migration to version 7.2.1
500 A dump/restore is *not* required for those running 7.2.
502 ----------------------------------------------------------------------
506 Ensure that sequence counters do not go backwards after a crash (Tom)
507 Fix pgaccess kanji-coversion key binding (Tatsuo)
508 Optimizer improvements (Tom)
509 cash I/O improvements (Tom)
511 Compile fix for missing AuthBlockSig (Heiko)
512 Additional time zones and time zone fixes (Thomas)
513 Allow psql \connect to handle mixed case database and user names (Tom)
514 Return proper OID on command completion even with ON INSERT rules (Tom)
515 Allow COPY FROM to use 8-bit DELIMITERS (Tatsuo)
516 Fix bug in extract/date_part for milliseconds/microseconds (Tatsuo)
517 Improve handling of multiple UNIONs with different lengths (Tom)
518 contrib/btree_gist improvements (Teodor Sigaev)
519 contrib/tsearch dictionary improvements, see README.tsearch for
520 an additional installation step (Thomas T. Thai, Teodor Sigaev)
521 Fix for array subscripts handling (Tom)
522 Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/PgSQL (Tom)
525 ----------------------------------------------------------------------
529 Release date: 2002-02-04
533 This release improves PostgreSQL for use in high-volume applications.
535 Major changes in this release:
539 Vacuuming no longer locks tables, thus allowing normal user access
540 during the vacuum. A new "VACUUM FULL" command does old-style
541 vacuum by locking the table and shrinking the on-disk copy of the
546 There is no longer a problem with installations that exceed four
547 billion transactions.
551 OID's are now optional. Users can now create tables without OID's
552 for cases where OID usage is excessive.
556 The system now computes histogram column statistics during
557 "ANALYZE", allowing much better optimizer choices.
561 A new MD5 encryption option allows more secure storage and
562 transfer of passwords. A new Unix-domain socket authentication
563 option is available on Linux and BSD systems.
567 Administrators can use the new table access statistics module to
568 get fine-grained information about table and index usage.
572 Program and library messages can now be displayed in several
575 ----------------------------------------------------------------------
577 Migration to version 7.2
579 A dump/restore using "pg_dump" is required for those wishing to migrate
580 data from any previous release.
582 Observe the following incompatibilities:
584 * The semantics of the "VACUUM" command have changed in this release.
585 You may wish to update your maintenance procedures accordingly.
587 * In this release, comparisons using = NULL will always return false (or
588 NULL, more precisely). Previous releases automatically transformed
589 this syntax to IS NULL. The old behavior can be re-enabled using a
590 "postgresql.conf" parameter.
592 * The "pg_hba.conf" and "pg_ident.conf" configuration is now only
593 reloaded after receiving a SIGHUP signal, not with each connection.
595 * The function "octet_length()" now returns the uncompressed data
598 * The date/time value 'current' is no longer available. You will need to
599 rewrite your applications.
601 * The timestamp() function is no longer available. Use timestamp
602 'string' instead, or CAST.
604 The SELECT ... LIMIT #,# syntax will be removed in the next release. You
605 should change your queries to use separate LIMIT and OFFSET clauses, e.g.
608 ----------------------------------------------------------------------
614 Create temporary files in a separate directory (Bruce)
615 Delete orphanded temporary files on postmaster startup (Bruce)
616 Added unique indexes to some system tables (Tom)
617 System table operator reorganization (Oleg Bartunov, Teodor Sigaev, Tom)
618 Renamed pg_log to pg_clog (Tom)
619 Enable SIGTERM, SIGQUIT to kill backends (Jan)
620 Removed compile-time limit on number of backends (Tom)
621 Better cleanup for semaphore resource failure (Tatsuo, Tom)
622 Allow safe transaction ID wraparound (Tom)
623 Removed OID's from some system tables (Tom)
624 Removed "triggered data change violation" error check (Tom)
625 SPI portal creation of prepared/saved plans (Jan)
626 Allow SPI column functions to work for system columns (Tom)
627 Long value compression improvement (Tom)
628 Statistics collector for table, index access (Jan)
629 Truncate extra-long sequence names to a reasonable value (Tom)
630 Measure transaction times in milliseconds (Thomas)
631 Fix TID sequential scans (Hiroshi)
632 Superuser ID now fixed at 1 (Peter E)
633 New pg_ctl "reload" option (Tom)
635 ----------------------------------------------------------------------
639 Optimizer improvements (Tom)
640 New histogram column statistics for optimizer (Tom)
641 Reuse write-ahead log files rather than discarding them (Tom)
642 Cache improvements (Tom)
643 IS NULL, IS NOT NULL optimizer improvement (Tom)
644 Improve lock manager to reduce lock contention (Tom)
645 Keep relcache entries for index access support functions (Tom)
646 Allow better selectivity with NaN and infinities in NUMERIC (Tom)
647 R-tree performance improvements (Kenneth Been)
648 B-tree splits more efficient (Tom)
650 ----------------------------------------------------------------------
654 Change UPDATE, DELETE permissions to be distinct (Peter E)
655 New REFERENCES, TRIGGER privileges (Peter E)
656 Allow GRANT/REVOKE to/from more than one user at a time (Peter E)
657 New has_table_privilege() function (Joe Conway)
658 Allow non-superuser to vacuum database (Tom)
659 New SET SESSION AUTHORIZATION command (Peter E)
660 Fix bug in privilege modifications on newly created tables (Tom)
661 Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom)
663 ----------------------------------------------------------------------
665 Client Authentication
667 Fork postmaster before doing authentication to prevent hangs (Peter E)
668 Add ident authentication over Unix domain sockets on Linux, *BSD (Helge Bahmann, Oliver Elphick, Teodor Sigaev, Bruce)
669 Add a password authentication method that uses MD5 encryption (Bruce)
670 Allow encryption of stored passwords using MD5 (Bruce)
671 PAM authentication (Dominic J. Eidson)
672 Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce)
674 ----------------------------------------------------------------------
678 Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce)
679 New parameter to set default transaction isolation level (Peter E)
680 New parameter to enable conversion of "expr = NULL" into "expr IS NULL", off by default (Peter E)
681 New parameter to control memory usage by VACUUM (Tom)
682 New parameter to set client authentication timeout (Tom)
683 New parameter to set maximum number of open files (Tom)
685 ----------------------------------------------------------------------
689 Statements added by INSERT rules now execute after the INSERT (Jan)
690 Prevent unadorned relation names in target list (Bruce)
691 NULLs now sort after all normal values in ORDER BY (Tom)
692 New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom)
693 New SHARE UPDATE EXCLUSIVE lock mode (Tom)
694 New EXPLAIN ANALYZE command that shows run times and row counts (Martijn van Oosterhout)
695 Fix problem with LIMIT and subqueries (Tom)
696 Fix for LIMIT, DISTINCT ON pushed into subqueryies (Tom)
697 Fix nested EXCEPT/INTERSECT (Tom)
699 ----------------------------------------------------------------------
703 Fix SERIAL in temporary tables (Bruce)
704 Allow temporary sequences (Bruce)
705 Sequences now use int8 internally (Tom)
706 New SERIAL8 creates int8 columns with sequences, default still SERIAL4 (Tom)
707 Make OIDs optional using WITHOUT OIDS (Tom)
708 Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor)
709 Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher Kings-Lynne)
710 New CREATE OR REPLACE FUNCTION to alter existing function (preserving the function OID) (Gavin Sherry)
711 Add ALTER TABLE / ADD [ UNIQUE | PRIMARY ] (Christopher Kings-Lynne)
712 Allow column renaming in views
713 Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent Verner)
714 Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (Stephan Szabo)
715 ALTER TABLE RENAME update foreign-key trigger arguments correctly (Brent Verner)
716 DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom)
717 Add automatic return type data casting for SQL functions (Tom)
718 Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom)
719 Enable partial indexes (Martijn van Oosterhout)
721 ----------------------------------------------------------------------
725 Add RESET ALL, SHOW ALL (Marko Kreen)
726 CREATE/ALTER USER/GROUP now allow options in any order (Vince)
727 Add LOCK A, B, C functionality (Neil Padgett)
728 New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce)
729 New light-weight VACUUM does not lock table; old semantics are available as VACUUM FULL (Tom)
730 Disable COPY TO/FROM on views (Bruce)
731 COPY DELIMITERS string must be exactly one character (Tom)
732 VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout)
733 Fix permission checks for CREATE INDEX (Tom)
734 Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom)
736 ----------------------------------------------------------------------
738 Data Types and Functions
740 SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom)
741 Add convert(), convert2() (Tatsuo)
742 New function bit_length() (Peter E)
743 Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tatsuo)
744 CHAR(), VARCHAR() now reject strings that are too long (Peter E)
745 BIT VARYING now rejects bit strings that are too long (Peter E)
746 BIT now rejects bit strings that do not match declared size (Peter E)
747 INET, CIDR text conversion functions (Alex Pilosov)
748 INET, CIDR operators << and <<= indexable (Alex Pilosov)
749 Bytea \### now requires valid three digit octal number
750 Bytea comparison improvements, now supports =, <>, >, >=, <, and <=
751 Bytea now supports B-tree indexes
752 Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE
753 Bytea now supports concatenation
754 New bytea functions: position, substring, trim, btrim, and length
755 New encode() function mode, "escaped", converts minimally escaped bytea to/from text
756 Add pg_database_encoding_max_length() (Tatsuo)
757 Add pg_client_encoding() function (Tatsuo)
758 now() returns time with millisecond precision (Thomas)
759 New TIMESTAMP WITHOUT TIMEZONE data type (Thomas)
760 Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas)
761 New xid/int comparison functions (Hiroshi)
762 Add precision to TIME, TIMESTAMP, and INVERVAL data types (Thomas)
763 Modify type coersion logic to attempt binary-compatible functions first (Tom)
764 New encode() function installed by default (Marko Kreen)
765 Improved to_*() conversion functions (Karel Zak)
766 Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo)
767 New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_salt() (Marko Kreen)
768 Correct description of translate() function (Bruce)
769 Add INTERVAL argument for SET TIME ZONE (Thomas)
770 Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas)
771 Optimize length functions when using single-byte encodings (Tatsuo)
772 Fix path_inter, path_distance, path_length, dist_ppath to handle closed paths (Curtis Barrett, Tom)
773 octet_length(text) now returns non-compressed length (Tatsuo, Bruce)
774 Handle "July" full name in date/time literals (Greg Sabino Mullane)
775 Some datatype() function calls now evaluated differently
776 Add support for Julian and ISO time specifications (Thomas)
778 ----------------------------------------------------------------------
782 National language support in psql, pg_dump, libpq, and server (Peter E)
783 Message translations in Chinese (simplified, traditional), Czech, French, German, Hungarian, Russian, Swedish (Peter E, Serguei A. Mokhov, Karel Zak, Weiping He, Zhenbang Wei, Kovacs Zoltan)
784 Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware (Tatsuo)
785 Add LATIN5,6,7,8,9,10 support (Tatsuo)
786 Add ISO 8859-5,6,7,8 support (Tatsuo)
787 Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo)
788 Make mic2ascii() non-ASCII aware (Tatsuo)
789 Reject invalid multibyte character sequences (Tatsuo)
791 ----------------------------------------------------------------------
795 Now uses portals for SELECT loops, allowing huge result sets (Jan)
796 CURSOR and REFCURSOR support (Jan)
797 Can now return open cursors (Jan)
798 Add ELSEIF (Klaus Reger)
799 Improve PL/pgSQL error reporting, including location of error (Tom)
800 Allow IS or FOR key words in cursor declaration, for compatibility (Bruce)
801 Fix for SELECT ... FOR UPDATE (Tom)
802 Fix for PERFORM returning multiple rows (Tom)
803 Make PL/pgSQL use the server's type coercion code (Tom)
804 Memory leak fix (Jan, Tom)
805 Make trailing semicolon optional (Tom)
807 ----------------------------------------------------------------------
811 New untrusted PL/Perl (Alex Pilosov)
812 PL/Perl is now built on some platforms even if libperl is not shared (Peter E)
814 ----------------------------------------------------------------------
818 Now reports errorInfo (Vsevolod Lobko)
819 Add spi_lastoid function (bob@redivi.com)
821 ----------------------------------------------------------------------
825 ...is new (Andrew Bosma)
827 ----------------------------------------------------------------------
831 \d displays indexes in unique, primary groupings (Christopher Kings-Lynne)
832 Allow trailing semicolons in backslash commands (Greg Sabino Mullane)
833 Read password from /dev/tty if possible
834 Force new password prompt when changing user and database (Tatsuo, Tom)
835 Format the correct number of columns for Unicode (Patrice)
837 ----------------------------------------------------------------------
841 New function PQescapeString() to escape quotes in command strings (Florian Weimer)
842 New function PQescapeBytea() escapes binary strings for use as SQL string literals
844 ----------------------------------------------------------------------
848 Return OID of INSERT (Ken K)
849 Handle more data types (Ken K)
850 Handle single quotes and newlines in strings (Ken K)
851 Handle NULL variables (Ken K)
852 Fix for time zone handling (Barry Lind)
853 Improved Druid support
854 Allow eight-bit characters with non-multibyte server (Barry Lind)
855 Support BIT, BINARY types (Ned Wolpert)
856 Reduce memory usage (Michael Stephens, Dave Cramer)
857 Update DatabaseMetaData (Peter E)
858 Add DatabaseMetaData.getCatalogs() (Peter E)
859 Encoding fixes (Anders Bengtsson)
860 Get/setCatalog methods (Jason Davies)
861 DatabaseMetaData.getColumns() now returns column defaults (Jason Davies)
862 DatabaseMetaData.getColumns() performance improvement (Jeroen van Vianen)
863 Some JDBC1 and JDBC2 merging (Anders Bengtsson)
864 Transaction performance improvements (Barry Lind)
865 Array fixes (Greg Zoller)
867 Fix batch processing (Rene Pijlman)
868 ExecSQL method reorganization (Anders Bengtsson)
869 GetColumn() fixes (Jeroen van Vianen)
870 Fix isWriteable() function (Rene Pijlman)
871 Improved passage of JDBC2 conformance tests (Rene Pijlman)
872 Add bytea type capability (Barry Lind)
873 Add isNullable() (Rene Pijlman)
874 JDBC date/time test suite fixes (Liam Stewart)
875 Fix for SELECT 'id' AS xxx FROM table (Dave Cramer)
876 Fix DatabaseMetaData to show precision properly (Mark Lillywhite)
877 New getImported/getExported keys (Jason Davies)
878 MD5 password encryption support (Jeremy Wohl)
879 Fix to actually use type cache (Ned Wolpert)
881 ----------------------------------------------------------------------
885 Remove query size limit (Hiroshi)
886 Remove text field size limit (Hiroshi)
887 Fix for SQLPrimaryKeys in multibyte mode (Hiroshi)
888 Allow ODBC procedure calls (Hiroshi)
889 Improve boolean handing (Aidan Mountford)
890 Most configuration options on setable via DSN (Hiroshi)
891 Multibyte, performance fixes (Hiroshi)
892 Allow driver to be used with iODBC or unixODBC (Peter E)
893 MD5 password encryption support (Bruce)
894 Add more compatibility functions to odbc.sql (Peter E)
896 ----------------------------------------------------------------------
900 EXECUTE ... INTO implemented (Christof Petig)
901 Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig)
902 Fix for GRANT parameters (Lee Kindness)
903 Fix INITIALLY DEFERRED bug
904 Various bug fixes (Michael, Christof Petig)
905 Auto allocation for indicator variable arrays (int *ind_p=NULL)
906 Auto allocation for string arrays (char **foo_pp=NULL)
907 ECPGfree_auto_mem fixed
908 All function names with external linkage are now prefixed by ECPG
909 Fixes for arrays of structures (Michael)
911 ----------------------------------------------------------------------
915 Python fix fetchone() (Gerhard Haring)
916 Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Max)
917 Add Tcl COPY TO/FROM (ljb)
918 Prevent output of default index op class in pg_dump (Tom)
919 Fix libpgeasy memory leak (Bruce)
921 ----------------------------------------------------------------------
925 Configure, dynamic loader, and shared library fixes (Peter E)
926 Fixes in QNX 4 port (Bernd Tegge)
927 Fixes in Cygwin and Win32 ports (Jason Tishler, Gerhard Haring, Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov)
928 Fix for Win32 socket communication failures (Magnus, Mikhail Terekhov)
929 Hurd compile fix (Oliver Elphick)
930 BeOS fixes (Cyril Velter)
931 Remove configure --enable-unicode-conversion, now enabled by multibyte (Tatsuo)
932 AIX fixes (Tatsuo, Andreas)
933 Fix parallel make (Peter E)
934 Install SQL language manual pages into OS-specific directories (Peter E)
935 Rename config.h to pg_config.h (Peter E)
936 Reorganize installation layout of header files (Peter E)
938 ----------------------------------------------------------------------
942 Remove SEP_CHAR (Bruce)
944 Merge GUC and command line handling (Marko Kreen)
945 Remove EXTEND INDEX (Martijn van Oosterhout, Tom)
946 New pgjindent utility to indent java code (Bruce)
947 Remove define of true/false when compiling under C++ (Leandro Fanzone, Tom)
948 pgindent fixes (Bruce, Tom)
949 Replace strcasecmp() with strcmp() where appropriate (Peter E)
950 Dynahash portability improvements (Tom)
951 Add 'volatile' usage in spinlock structures
952 Improve signal handling logic (Tom)
954 ----------------------------------------------------------------------
958 New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev)
959 New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev)
960 Add contrib/dblink for remote database access (Joe Conway)
961 contrib/ora2pg Oracle conversion utility (Gilles Darold)
962 contrib/xml XML conversion utility (John Gray)
963 contrib/fulltextindex fixes (Christopher Kings-Lynne)
964 New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merged (Joe Conway)
965 Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartunov)
966 New pg_upgrade utility (Bruce)
967 Add new pg_resetxlog options (Bruce, Tom)
968 ----------------------------------------------------------------------
972 Release date: 2001-08-15
974 ----------------------------------------------------------------------
976 Migration to version 7.1.3
978 A dump/restore is *not* required for those running 7.1.X.
980 ----------------------------------------------------------------------
984 Remove unused WAL segements of large transactions (Tom)
985 Multiaction rule fix (Tom)
986 PL/pgSQL memory allocation fix (Jan)
987 VACUUM buffer fix (Tom)
988 Regression test fixes (Tom)
989 pg_dump fixes for GRANT/REVOKE/comments on views, user-defined types (Tom)
990 Fix subselects with DISTINCT ON or LIMIT (Tom)
992 Disable COPY TO/FROM a view (Tom)
993 Cygwin build (Jason Tishler)
996 ----------------------------------------------------------------------
1000 Release date: 2001-05-11
1002 This has one fix from 7.1.1.
1004 ----------------------------------------------------------------------
1006 Migration to version 7.1.2
1008 A dump/restore is *not* required for those running 7.1.X.
1010 ----------------------------------------------------------------------
1014 Fix PL/pgSQL SELECTs when returning no rows
1015 Fix for psql backslash core dump
1016 Referential integrity permission fix
1021 ----------------------------------------------------------------------
1025 Release date: 2001-05-05
1027 This has a variety of fixes from 7.1.
1029 ----------------------------------------------------------------------
1031 Migration to version 7.1.1
1033 A dump/restore is *not* required for those running 7.1.
1035 ----------------------------------------------------------------------
1039 Fix for numeric MODULO operator (Tom)
1040 pg_dump fixes (Philip)
1041 pg_dump can dump 7.0 databases (Philip)
1042 readline 4.2 fixes (Peter E)
1044 AIX, MSWIN, VAX,N32K fixes (Tom)
1045 Multibytes fixes (Tom)
1046 Unicode fixes (Tatsuo)
1047 Optimizer improvements (Tom)
1048 Fix for whole tuples in functions (Tom)
1049 Fix for pg_ctl and option strings with spaces (Peter E)
1050 ODBC fixes (Hiroshi)
1051 EXTRACT can now take string argument (Thomas)
1052 Python fixes (Darcy)
1055 ----------------------------------------------------------------------
1059 Release date: 2001-04-13
1061 This release focuses on removing limitations that have existed in the
1062 PostgreSQL code for many years.
1064 Major changes in this release:
1066 Write-ahead Log (WAL)
1068 To maintain database consistency in case of an operating system
1069 crash, previous releases of PostgreSQL have forced all data
1070 modifications to disk before each transaction commit. With WAL,
1071 only one log file must be flushed to disk, greatly improving
1072 performance. If you have been using -F in previous releases to
1073 disable disk flushes, you may want to consider discontinuing its
1078 TOAST - Previous releases had a compiled-in row length limit,
1079 typically 8k - 32k. This limit made storage of long text fields
1080 difficult. With TOAST, long rows of any length can be stored with
1085 We now support outer joins. The UNION/NOT IN workaround for outer
1086 joins is no longer required. We use the SQL92 outer join syntax.
1090 The previous C function manager did not handle NULLs properly, nor
1091 did it support 64-bit CPU's (Alpha). The new function manager
1092 does. You can continue using your old custom functions, but you
1093 may want to rewrite them in the future to use the new function
1094 manager call interface.
1098 A large number of complex queries that were unsupported in
1099 previous releases now work. Many combinations of views,
1100 aggregates, UNION, LIMIT, cursors, subqueries, and inherited
1101 tables now work properly. Inherited tables are now accessed by
1102 default. Subqueries in FROM are now supported.
1104 ----------------------------------------------------------------------
1106 Migration to version 7.1
1108 A dump/restore using pg_dump is required for those wishing to migrate data
1109 from any previous release.
1111 ----------------------------------------------------------------------
1117 Many multi-byte/Unicode/locale fixes (Tatsuo and others)
1118 More reliable ALTER TABLE RENAME (Tom)
1119 Kerberos V fixes (David Wragg)
1120 Fix for INSERT INTO...SELECT where targetlist has subqueries (Tom)
1121 Prompt username/password on standard error (Bruce)
1122 Large objects inv_read/inv_write fixes (Tom)
1123 Fixes for to_char(), to_date(), to_ascii(), and to_timestamp() (Karel,
1125 Prevent query expressions from leaking memory (Tom)
1126 Allow UPDATE of arrays elements (Tom)
1127 Wake up lock waiters during cancel (Hiroshi)
1128 Fix rare cursor crash when using hash join (Tom)
1129 Fix for DROP TABLE/INDEX in rolled-back transaction (Hiroshi)
1130 Fix psql crash from \l+ if MULTIBYTE enabled (Peter E)
1131 Fix truncation of rule names during CREATE VIEW (Ross Reedstrom)
1132 Fix PL/perl (Alex Kapranoff)
1133 Disallow LOCK on views (Mark Hollomon)
1134 Disallow INSERT/UPDATE/DELETE on views (Mark Hollomon)
1135 Disallow DROP RULE, CREATE INDEX, TRUNCATE on views (Mark Hollomon)
1136 Allow PL/pgSQL accept non-ASCII identifiers (Tatsuo)
1137 Allow views to proper handle GROUP BY, aggregates, DISTINCT (Tom)
1138 Fix rare failure with TRUNCATE command (Tom)
1139 Allow UNION/INTERSECT/EXCEPT to be used with ALL, subqueries, views,
1140 DISTINCT, ORDER BY, SELECT...INTO (Tom)
1141 Fix parser failures during aborted transactions (Tom)
1142 Allow temporary relations to properly clean up indexes (Bruce)
1143 Fix VACUUM problem with moving rows in same page (Tom)
1144 Modify pg_dump to better handle user-defined items in template1 (Philip)
1145 Allow LIMIT in VIEW (Tom)
1146 Require cursor FETCH to honor LIMIT (Tom)
1147 Allow PRIMARY/FOREIGN Key definitions on inherited columns (Stephan)
1148 Allow ORDER BY, LIMIT in sub-selects (Tom)
1149 Allow UNION in CREATE RULE (Tom)
1150 Make ALTER/DROP TABLE rollback-able (Vadim, Tom)
1151 Store initdb collation in pg_control so collation cannot be changed (Tom)
1152 Fix INSERT...SELECT with rules (Tom)
1153 Fix FOR UPDATE inside views and subselects (Tom)
1154 Fix OVERLAPS operators conform to SQL92 spec regarding NULLs (Tom)
1155 Fix lpad() and rpad() to handle length less than input string (Tom)
1156 Fix use of NOTIFY in some rules (Tom)
1157 Overhaul btree code (Tom)
1158 Fix NOT NULL use in Pl/pgSQL variables (Tom)
1159 Overhaul GIST code (Oleg)
1160 Fix CLUSTER to preserve constraints and column default (Tom)
1161 Improved deadlock detection handling (Tom)
1162 Allow multiple SERIAL columns in a table (Tom)
1163 Prevent occasional index corruption (Vadim)
1167 Add OUTER JOINs (Tom)
1168 Function manager overhaul (Tom)
1169 Allow ALTER TABLE RENAME on indexes (Tom)
1170 Improve CLUSTER (Tom)
1171 Improve ps status display for more platforms (Peter E, Marc)
1172 Improve CREATE FUNCTION failure message (Ross)
1173 JDBC improvements (Peter, Travis Bauer, Christopher Cain, William Webber,
1175 Grand Unified Configuration scheme/GUC. Many options can now be set in
1176 data/postgresql.conf, postmaster/postgres flags, or SET commands (Peter E)
1177 Improved handling of file descriptor cache (Tom)
1178 New warning code about auto-created table alias entries (Bruce)
1179 Overhaul initdb process (Tom, Peter E)
1180 Overhaul of inherited tables; inherited tables now accessed by default;
1181 new ONLY keyword prevents it (Chris Bitmead, Tom)
1182 ODBC cleanups/improvements (Nick Gorham, Stephan Szabo, Zoltan Kovacs,
1184 Allow renaming of temp tables (Tom)
1185 Overhaul memory manager contexts (Tom)
1186 pg_dumpall uses CREATE USER or CREATE GROUP rather using COPY (Peter E)
1187 Overhaul pg_dump (Philip Warner)
1188 Allow pg_hba.conf secondary password file to specify only username (Peter E)
1189 Allow TEMPORARY or TEMP keyword when creating temporary tables (Bruce)
1190 New memory leak checker (Karel)
1191 New SET SESSION CHARACTERISTICS (Thomas)
1192 Allow nested block comments (Thomas)
1193 Add WITHOUT TIME ZONE type qualifier (Thomas)
1194 New ALTER TABLE ADD CONSTRAINT (Stephan)
1195 Use NUMERIC accumulators for INTEGER aggregates (Tom)
1196 Overhaul aggregate code (Tom)
1197 New VARIANCE and STDDEV() aggregates
1198 Improve dependency ordering of pg_dump (Philip)
1199 New pg_restore command (Philip)
1200 New pg_dump tar output option (Philip)
1201 New pg_dump of large objects (Philip)
1202 New ESCAPE option to LIKE (Thomas)
1203 New case-insensitive LIKE - ILIKE (Thomas)
1204 Allow functional indexes to use binary-compatible type (Tom)
1205 Allow SQL functions to be used in more contexts (Tom)
1206 New pg_config utility (Peter E)
1207 New PL/pgSQL EXECUTE command which allows dynamic SQL and utility statements
1209 New PL/pgSQL GET DIAGNOSTICS statement for SPI value access (Jan)
1210 New quote_identifiers() and quote_literal() functions (Jan)
1211 New ALTER TABLE table OWNER TO user command (Mark Hollomon)
1212 Allow subselects in FROM, i.e. FROM (SELECT ...) [AS] alias (Tom)
1213 Update PyGreSQL to version 3.1 (D'Arcy)
1214 Store tables as files named by OID (Vadim)
1215 New SQL function setval(seq,val,bool) for use in pg_dump (Philip)
1216 Require DROP VIEW to remove views, no DROP TABLE (Mark)
1217 Allow DROP VIEW view1, view2 (Mark)
1218 Allow multiple objects in DROP INDEX, DROP RULE, and DROP TYPE (Tom)
1219 Allow automatic conversion to/from Unicode (Tatsuo, Eiji)
1220 New /contrib/pgcrypto hashing functions (Marko Kreen)
1221 New pg_dumpall --globals-only option (Peter E)
1222 New CHECKPOINT command for WAL which creates new WAL log file (Vadim)
1223 New AT TIME ZONE syntax (Thomas)
1224 Allow location of Unix domain socket to be configurable (David J. MacKenzie)
1225 Allow postmaster to listen on a specific IP address (David J. MacKenzie)
1226 Allow socket path name to be specified in hostname by using leading slash
1227 (David J. MacKenzie)
1228 Allow CREATE DATABASE to specify template database (Tom)
1229 New utility to convert MySQL schema dumps to SQL92 and PostgreSQL (Thomas)
1230 New /contrib/rserv replication toolkit (Vadim)
1231 New file format for COPY BINARY (Tom)
1232 New /contrib/oid2name to map numeric files to table names (B Palmer)
1233 New "idle in transaction" ps status message (Marc)
1234 Update to pgaccess 0.98.7 (Constantin Teodorescu)
1235 pg_ctl now defaults to -w (wait) on shutdown, new -l (log) option
1236 Add rudimentary dependency checking to pg_dump (Philip)
1240 Fix INET/CIDR type ordering and add new functions (Tom)
1241 Make OID behave as an unsigned type (Tom)
1242 Allow BIGINT as synonym for INT8 (Peter E)
1243 New int2 and int8 comparison operators (Tom)
1244 New BIT and BIT VARYING types (Adriaan Joubert, Tom, Peter E)
1245 CHAR() no longer faster than VARCHAR() because of TOAST (Tom)
1246 New GIST seg/cube examples (Gene Selkov)
1247 Improved round(numeric) handling (Tom)
1248 Fix CIDR output formatting (Tom)
1249 New CIDR abbrev() function (Tom)
1253 Write-Ahead Log (WAL) to provide crash recovery with less performance
1255 ANALYZE stage of VACUUM no longer exclusively locks table (Bruce)
1256 Reduced file seeks (Denis Perchine)
1257 Improve BTREE code for duplicate keys (Tom)
1258 Store all large objects in a single table (Denis Perchine, Tom)
1259 Improve memory allocation performance (Karel, Tom)
1263 New function manager call conventions (Tom)
1264 SGI portability fixes (David Kaelbling)
1265 New configure --enable-syslog option (Peter E)
1266 New BSDI README (Bruce)
1267 configure script moved to top level, not /src (Peter E)
1268 Makefile/configuration/compilation overhaul (Peter E)
1269 New configure --with-python option (Peter E)
1270 Solaris cleanups (Peter E)
1271 Overhaul /contrib Makefiles (Karel)
1272 New OpenSSL configuration option (Magnus, Peter E)
1274 QNX fixes (Maurizio)
1275 New heap_open(), heap_openr() API (Tom)
1276 Remove colon and semi-colon operators (Thomas)
1277 New pg_class.relkind value for views (Mark Hollomon)
1278 Rename ichar() to chr() (Karel)
1279 New documentation for btrim(), ascii(), chr(), repeat() (Karel)
1280 Fixes for NT/Cygwin (Pete Forman)
1281 AIX port fixes (Andreas)
1282 New BeOS port (David Reid, Cyril Velter)
1283 Add proofreader's changes to docs (Addison-Wesley, Bruce)
1284 New Alpha spinlock code (Adriaan Joubert, Compaq)
1285 Unixware port overhaul (Peter E)
1286 New Darwin/Mac OSX port (Peter Bierman, Bruce Hartzler)
1287 New FreeBSD Alpha port (Alfred)
1288 Overhaul shared memory segments (Tom)
1289 Add IBM S/390 support (Neale Ferguson)
1290 Moved macmanuf to /contrib (Larry Rosenman)
1291 Syslog improvements (Larry Rosenman)
1292 New template0 database that contains no user additions (Tom)
1293 New /contrib/cube and /contrib/seg GIST sample code (Gene Selkov)
1294 Allow NetBSD's libedit instead of readline (Peter)
1295 Improved assembly language source code format (Bruce)
1296 New contrib/pg_logger
1297 New --template option to createdb
1298 New contrib/pg_control utility (Oliver)
1299 New FreeBSD tools ipc_check, start-scripts/freebsd
1302 ----------------------------------------------------------------------
1306 Release date: 2000-11-11
1308 This has a variety of fixes from 7.0.2.
1310 ----------------------------------------------------------------------
1312 Migration to version 7.0.3
1314 A dump/restore is *not* required for those running 7.0.*.
1316 ----------------------------------------------------------------------
1321 Large object fix (Tom)
1322 Fix lean in COPY WITH OIDS leak (Tom)
1323 Fix backwards-index-scan (Tom)
1324 Fix SELECT ... FOR UPDATE so it checks for duplicate keys (Hiroshi)
1325 Add --enable-syslog to configure (Marc)
1326 Fix abort transaction at backend exit in rare cases (Tom)
1327 Fix for psql \l+ when multi-byte enabled (Tatsuo)
1328 Allow PL/pgSQL to accept non ascii identifiers (Tatsuo)
1329 Make vacuum always flush buffers (Tom)
1330 Fix to allow cancel while waiting for a lock (Hiroshi)
1331 Fix for memory aloocation problem in user authentication code (Tom)
1332 Remove bogus use of int4out() (Tom)
1333 Fixes for multiple subqueries in COALESCE or BETWEEN (Tom)
1334 Fix for failure of triggers on heap open in certain cases (Jeroen van
1336 Fix for erroneous selectivity of not-equals (Tom)
1337 Fix for erroneous use of strcmp() (Tom)
1338 Fix for bug where storage manager accesses items beyond end of file
1340 Fix to include kernel errno message in all smgr elog messages (Tom)
1341 Fix for '.' not in PATH at build time (SL Baur)
1342 Fix for out-of-file-descriptors error (Tom)
1343 Fix to make pg_dump dump 'iscachable' flag for functions (Tom)
1344 Fix for subselect in targetlist of Append node (Tom)
1345 Fix for mergejoin plans (Tom)
1346 Fix TRUNCATE failure on relations with indexes (Tom)
1347 Avoid database-wide restart on write error (Hiroshi)
1348 Fix nodeMaterial to honor chgParam by recomputing its output (Tom)
1349 Fix VACUUM problem with moving chain of update tuples when source and
1350 destination of a tuple lie on the same page (Tom)
1351 Fix user.c CommandCounterIncrement (Tom)
1352 Fix for AM/PM boundary problem in to_char() (Karel Zak)
1353 Fix TIME aggregate handling (Tom)
1354 Fix to_char() to avoid coredump on NULL input (Tom)
1356 Fix for inserting/copying longer multibyte strings into char() data
1358 Fix for crash of backend, on abort (Tom)
1361 ----------------------------------------------------------------------
1365 Release date: 2000-06-05
1367 This is a repackaging of 7.0.1 with added documentation.
1369 ----------------------------------------------------------------------
1371 Migration to version 7.0.2
1373 A dump/restore is *not* required for those running 7.*.
1375 ----------------------------------------------------------------------
1379 Added documentation to tarball.
1382 ----------------------------------------------------------------------
1386 Release date: 2000-06-01
1388 This is a cleanup release for 7.0.
1390 ----------------------------------------------------------------------
1392 Migration to version 7.0.1
1394 A dump/restore is *not* required for those running 7.0.
1396 ----------------------------------------------------------------------
1400 Fix many CLUSTER failures (Tom)
1401 Allow ALTER TABLE RENAME works on indexes (Tom)
1402 Fix plpgsql to handle datetime->timestamp and timespan->interval (Bruce)
1403 New configure --with-setproctitle switch to use setproctitle() (Marc, Bruce)
1404 Fix the off by one errors in ResultSet from 6.5.3, and more.
1405 jdbc ResultSet fixes (Joseph Shraibman)
1406 optimizer tunings (Tom)
1407 Fix create user for pgaccess
1408 Fix for UNLISTEN failure
1409 IRIX fixes (David Kaelbling)
1410 QNX fixes (Andreas Kardos)
1411 Reduce COPY IN lock level (Tom)
1412 Change libpqeasy to use PQconnectdb() style parameters (Bruce)
1413 Fix pg_dump to handle OID indexes (Tom)
1414 Fix small memory leak (Tom)
1415 Solaris fix for createdb/dropdb (Tatsuo)
1416 Fix for non-blocking connections (Alfred Perlstein)
1417 Fix improper recovery after RENAME TABLE failures (Tom)
1418 Copy pg_ident.conf.sample into /lib directory in install (Bruce)
1419 Add SJIS UDC (NEC selection IBM kanji) support (Eiji Tokuya)
1420 Fix too long syslog message (Tatsuo)
1421 Fix problem with quoted indexes that are too long (Tom)
1422 JDBC ResultSet.getTimestamp() fix (Gregory Krasnow & Floyd Marinescu)
1423 ecpg changes (Michael)
1426 ----------------------------------------------------------------------
1430 Release date: 2000-05-08
1432 This release contains improvements in many areas, demonstrating the
1433 continued growth of PostgreSQL. There are more improvements and fixes in
1434 7.0 than in any previous release. The developers have confidence that this
1435 is the best release yet; we do our best to put out only solid releases,
1436 and this one is no exception.
1438 Major changes in this release:
1442 Foreign keys are now implemented, with the exception of PARTIAL
1443 MATCH foreign keys. Many users have been asking for this feature,
1444 and we are pleased to offer it.
1448 Continuing on work started a year ago, the optimizer has been
1449 improved, allowing better query plan selection and faster
1450 performance with less memory usage.
1454 psql, our interactive terminal monitor, has been updated with a
1455 variety of new features. See the psql manual page for details.
1459 SQL92 join syntax is now supported, though only as INNER JOINs for
1460 this release. JOIN, NATURAL JOIN, JOIN/USING, JOIN/ON are
1461 available, as are column correlation names.
1463 ----------------------------------------------------------------------
1465 Migration to version 7.0
1467 A dump/restore using pg_dump is required for those wishing to migrate data
1468 from any previous release of PostgreSQL. For those upgrading from 6.5.*,
1469 you may instead use pg_upgrade to upgrade to this release; however, a full
1470 dump/reload installation is always the most robust method for upgrades.
1472 Interface and compatibility issues to consider for the new release
1475 * The date/time types datetime and timespan have been superseded by the
1476 SQL92-defined types timestamp and interval. Although there has been
1477 some effort to ease the transition by allowing PostgreSQL to recognize
1478 the deprecated type names and translate them to the new type names,
1479 this mechanism may not be completely transparent to your existing
1482 * The optimizer has been substantially improved in the area of query
1483 cost estimation. In some cases, this will result in decreased query
1484 times as the optimizer makes a better choice for the preferred plan.
1485 However, in a small number of cases, usually involving pathological
1486 distributions of data, your query times may go up. If you are dealing
1487 with large amounts of data, you may want to check your queries to
1490 * The JDBC and ODBC interfaces have been upgraded and extended.
1492 * The string function CHAR_LENGTH is now a native function. Previous
1493 versions translated this into a call to LENGTH, which could result in
1494 ambiguity with other types implementing LENGTH such as the geometric
1497 ----------------------------------------------------------------------
1503 Prevent function calls exceeding maximum number of arguments (Tom)
1504 Improve CASE construct (Tom)
1505 Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
1506 Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
1507 Fix GROUP BY scan bug (Tom)
1508 Improvements in SQL grammar processing (Tom)
1509 Fix for views involved in INSERT ... SELECT ... (Tom)
1510 Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom)
1511 Fix for subselects in INSERT ... SELECT (Tom)
1512 Prevent INSERT ... SELECT ... ORDER BY (Tom)
1513 Fixes for relations greater than 2GB, including vacuum
1514 Improve propagating system table changes to other backends (Tom)
1515 Improve propagating user table changes to other backends (Tom)
1516 Fix handling of temp tables in complex situations (Bruce, Tom)
1517 Allow table locking at table open, improving concurrent reliability (Tom)
1518 Properly quote sequence names in pg_dump (Ross J. Reedstrom)
1519 Prevent DROP DATABASE while others accessing
1520 Prevent any rows from being returned by GROUP BY if no rows processed (Tom)
1521 Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom)
1522 Fix pg_upgrade so it works for MVCC (Tom)
1523 Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) > 1) (Tom)
1524 Fix for "f1 datetime DEFAULT 'now'" (Tom)
1525 Fix problems with CURRENT_DATE used in DEFAULT (Tom)
1526 Allow comment-only lines, and ;;; lines too. (Tom)
1527 Improve recovery after failed disk writes, disk full (Hiroshi)
1528 Fix cases where table is mentioned in FROM but not joined (Tom)
1529 Allow HAVING clause without aggregate functions (Tom)
1530 Fix for "--" comment and no trailing newline, as seen in perl interface
1531 Improve pg_dump failure error reports (Bruce)
1532 Allow sorts and hashes to exceed 2GB file sizes (Tom)
1533 Fix for pg_dump dumping of inherited rules (Tom)
1534 Fix for NULL handling comparisons (Tom)
1535 Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi)
1536 Fix for dbname with dash
1537 Prevent DROP INDEX from interfering with other backends (Tom)
1538 Fix file descriptor leak in verify_password()
1539 Fix for "Unable to identify an operator =$" problem
1540 Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann)
1541 Fix for recursive exit call (Massimo)
1542 Fix for extra-long timezones (Jeroen van Vianen)
1543 Make pg_dump preserve primary key information (Peter E)
1544 Prevent databases with single quotes (Peter E)
1545 Prevent DROP DATABASE inside transaction (Peter E)
1546 ecpg memory leak fixes (Stephen Birch)
1547 Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom)
1548 Y2K timestamp fix (Massimo)
1549 Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom)
1550 Fix for views with tables/columns containing spaces (Tom)
1551 Prevent permissions on indexes (Peter E)
1552 Fix for spinlock stuck problem when error is generated (Hiroshi)
1553 Fix ipcclean on Linux
1554 Fix handling of NULL constraint conditions (Tom)
1555 Fix memory leak in odbc driver (Nick Gorham)
1556 Fix for permission check on UNION tables (Tom)
1557 Fix to allow SELECT 'a' LIKE 'a' (Tom)
1558 Fix for SELECT 1 + NULL (Tom)
1560 Fix log() on numeric type (Tom)
1561 Deprecate ':' and ';' operators
1562 Allow vacuum of temporary tables
1563 Disallow inherited columns with the same name as new columns
1564 Recover or force failure when disk space is exhausted (Hiroshi)
1565 Fix INSERT INTO ... SELECT with AS columns matching result columns
1566 Fix INSERT ... SELECT ... GROUP BY groups by target columns not source columns (Tom)
1567 Fix CREATE TABLE test (a char(5) DEFAULT text '', b int4) with INSERT (Tom)
1568 Fix UNION with LIMIT
1569 Fix CREATE TABLE x AS SELECT 1 UNION SELECT 2
1570 Fix CREATE TABLE test(col char(2) DEFAULT user)
1571 Fix mismatched types in CREATE TABLE ... DEFAULT
1572 Fix SELECT * FROM pg_class where oid in (0,-1)
1573 Fix SELECT COUNT('asdf') FROM pg_class WHERE oid=12
1574 Prevent user who can create databases can modifying pg_database table (Peter E)
1575 Fix btree to give a useful elog when key > 1/2 (page - overhead) (Tom)
1576 Fix INSERT of 0.0 into DECIMAL(4,4) field (Tom)
1580 New CLI interface include file sqlcli.h, based on SQL3/SQL98
1581 Remove all limits on query length, row length limit still exists (Tom)
1582 Update jdbc protocol to 2.0 (Jens Glaser <jens@jens.de>)
1583 Add TRUNCATE command to quickly truncate relation (Mike Mascari)
1584 Fix to give super user and createdb user proper update catalog rights (Peter E)
1585 Allow ecpg bool variables to have NULL values (Christof)
1586 Issue ecpg error if NULL value for variable with no NULL indicator (Christof)
1587 Allow ^C to cancel COPY command (Massimo)
1588 Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo)
1589 Function name overloading for dynamically-loaded C functions (Frankpitt)
1590 Add CmdTuples() to libpq++(Vince)
1591 New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan)
1592 Allow CREATE FUNCTION/WITH clause to be used for all language types
1593 configure --enable-debug adds -g (Peter E)
1594 configure --disable-debug removes -g (Peter E)
1595 Allow more complex default expressions (Tom)
1596 First real FOREIGN KEY constraint trigger functionality (Jan)
1597 Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan)
1598 Add FOREIGN KEY ... MATCH <unspecified> referential actions (Don Baccus)
1599 Allow WHERE restriction on ctid (physical heap location) (Hiroshi)
1600 Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
1601 Change pgeasy connectdb() parameter ordering (Bruce)
1602 Require SELECT DISTINCT target list to have all ORDER BY columns (Tom)
1603 Add Oracle's COMMENT ON command (Mike Mascari <mascarim@yahoo.com>)
1604 libpq's PQsetNoticeProcessor function now returns previous hook(Peter E)
1605 Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
1606 Make USING in COPY optional (Bruce)
1607 Allow subselects in the target list (Tom)
1608 Allow subselects on the left side of comparison operators (Tom)
1609 New parallel regression test (Jan)
1610 Change backend-side COPY to write files with permissions 644 not 666 (Tom)
1611 Force permissions on PGDATA directory to be secure, even if it exists (Tom)
1612 Added psql LASTOID variable to return last inserted oid (Peter E)
1613 Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom)
1614 Add permissions check for vacuum (Peter E)
1615 New libpq functions to allow asynchronous connections: PQconnectStart(),
1616 PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(),
1617 PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
1618 New libpq PQsetenv() function (Ewan Mellor)
1619 create/alter user extension (Peter E)
1620 New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo)
1621 New scripts for create/drop user/db (Peter E)
1622 Major psql overhaul (Peter E)
1623 Add const to libpq interface (Peter E)
1624 New libpq function PQoidValue (Peter E)
1625 Show specific non-aggregate causing problem with GROUP BY (Tom)
1626 Make changes to pg_shadow recreate pg_pwd file (Peter E)
1627 Add aggregate(DISTINCT ...) (Tom)
1628 Allow flag to control COPY input/output of NULLs (Peter E)
1629 Make postgres user have a password by default (Peter E)
1630 Add CREATE/ALTER/DROP GROUP (Peter E)
1631 All administration scripts now support --long options (Peter E, Karel)
1632 Vacuumdb script now supports --all option (Peter E)
1633 ecpg new portable FETCH syntax
1634 Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF
1635 and EXEC SQL ENDIF directives
1636 Add pg_ctl script to control backend start-up (Tatsuo)
1637 Add postmaster.opts.default file to store start-up flags (Tatsuo)
1638 Allow --with-mb=SQL_ASCII
1639 Increase maximum number of index keys to 16 (Bruce)
1640 Increase maximum number of function arguments to 16 (Bruce)
1641 Allow configuration of maximum number of index keys and arguments (Bruce)
1642 Allow unprivileged users to change their passwords (Peter E)
1643 Password authentication enabled; required for new users (Peter E)
1644 Disallow dropping a user who owns a database (Peter E)
1645 Change initdb option --with-mb to --enable-multibyte
1646 Add option for initdb to prompts for superuser password (Peter E)
1647 Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom)
1648 Updated user interfaces on initdb, initlocation, pg_dump, ipcclean (Peter E)
1649 New pg_char_to_encoding() and pg_encoding_to_char() functions (Tatsuo)
1650 Libpq non-blocking mode (Alfred Perlstein)
1651 Improve conversion of types in casts that don't specify a length
1652 New plperl internal programming language (Mark Hollomon)
1653 Allow COPY IN to read file that do not end with a newline (Tom)
1654 Indicate when long identifiers are truncated (Tom)
1655 Allow aggregates to use type equivalency (Peter E)
1656 Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number()
1657 conversion functions (Karel Zak <zakkr@zf.jcu.cz>)
1658 Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
1659 Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
1660 Add NUMERIC and int8 types to ODBC
1661 Improve EXPLAIN results for Append, Group, Agg, Unique (Tom)
1662 Add ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo)
1663 Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi)
1664 Enable backward sequential scan even after reaching EOF (Hiroshi)
1665 Add btree indexing of boolean values, >= and <= (Don Baccus)
1666 Print current line number when COPY FROM fails (Massimo)
1667 Recognize POSIX time zone e.g. "PST+8" and "GMT-8" (Thomas)
1668 Add DEC as synonym for DECIMAL (Thomas)
1669 Add SESSION_USER as SQL92 keyword, same as CURRENT_USER (Thomas)
1670 Implement SQL92 column aliases (aka correlation names) (Thomas)
1671 Implement SQL92 join syntax (Thomas)
1672 Make INTERVAL reserved word allowed as a column identifier (Thomas)
1673 Implement REINDEX command (Hiroshi)
1674 Accept ALL in aggregate function SUM(ALL col) (Tom)
1675 Prevent GROUP BY from using column aliases (Tom)
1676 New psql \encoding option (Tatsuo)
1677 Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi)
1678 Allow negation of a negative number in all cases
1679 Add ecpg descriptors (Christof, Michael)
1680 Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl
1681 Allow casts with length, like foo::char(8)
1682 New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo)
1683 Add support for SJIS user defined characters (Tatsuo)
1684 Larger views/rules supported
1685 Make libpq's PQconndefaults() thread-safe (Tom)
1686 Disable // as comment to be ANSI conforming, should use -- (Tom)
1687 Allow column aliases on views CREATE VIEW name (collist)
1688 Fixes for views with subqueries (Tom)
1689 Allow UPDATE table SET fld = (SELECT ...) (Tom)
1690 SET command options no longer require quotes
1691 Update pgaccess to 0.98.6
1692 New SET SEED command
1693 New pg_options.sample file
1694 New SET FSYNC command (Massimo)
1695 Allow pg_descriptions when creating tables
1696 Allow pg_descriptions when creating types, columns, and functions
1697 Allow psql \copy to allow delimiters (Peter E)
1698 Allow psql to print nulls as distinct from "" [null] (Peter E)
1702 Many array fixes (Tom)
1703 Allow bare column names to be subscripted as arrays (Tom)
1704 Improve type casting of int and float constants (Tom)
1705 Cleanups for int8 inputs, range checking, and type conversion (Tom)
1706 Fix for SELECT timespan('21:11:26'::time) (Tom)
1707 netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0 (Oleg Sharoiko)
1708 Add btree index on NUMERIC (Jan)
1709 Perl fix for large objects containing NUL characters (Douglas Thomson)
1710 ODBC fix for for large objects (free)
1711 Fix indexing of cidr data type
1712 Fix for Ethernet MAC addresses (macaddr type) comparisons
1713 Fix for date/time types when overflows happened in computations (Tom)
1714 Allow array on int8 (Peter E)
1715 Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom)
1716 Allow NUMERIC arrays
1717 Fix bugs in NUMERIC ceil() and floor() functions (Tom)
1718 Make char_length()/octet_length including trailing blanks (Tom)
1719 Made abstime/reltime use int4 instead of time_t (Peter E)
1720 New lztext data type for compressed text fields
1721 Revise code to handle coercion of int and float constants (Tom)
1722 Start at new code to implement a BIT and BIT VARYING type (Adriaan Joubert)
1723 NUMERIC now accepts scientific notation (Tom)
1724 NUMERIC to int4 rounds (Tom)
1725 Convert float4/8 to NUMERIC properly (Tom)
1726 Allow type conversion with NUMERIC (Thomas)
1727 Make ISO date style (2000-02-16 09:33) the default (Thomas)
1728 Add NATIONAL CHAR [ VARYING ] (Thomas)
1729 Allow NUMERIC round and trunc to accept negative scales (Tom)
1730 New TIME WITH TIME ZONE type (Thomas)
1731 Add MAX()/MIN() on time type (Thomas)
1732 Add abs(), mod(), fac() for int8 (Thomas)
1733 Rename functions to round(), sqrt(), cbrt(), pow() for float8 (Thomas)
1734 Add transcendental math functions (e.g. sin(), acos()) for float8 (Thomas)
1735 Add exp() and ln() for NUMERIC type
1736 Rename NUMERIC power() to pow() (Thomas)
1737 Improved TRANSLATE() function (Edwin Ramirez, Tom)
1738 Allow X=-Y operators (Tom)
1739 Allow SELECT float8(COUNT(*))/(SELECT COUNT(*) FROM t) FROM t GROUP BY f1; (Tom)
1740 Allow LOCALE to use indexes in regular expression searches (Tom)
1741 Allow creation of functional indexes to use default types
1745 Prevent exponential space consumption with many AND's and OR's (Tom)
1746 Collect attribute selectivity values for system columns (Tom)
1747 Reduce memory usage of aggregates (Tom)
1748 Fix for LIKE optimization to use indexes with multibyte encodings (Tom)
1749 Fix r-tree index optimizer selectivity (Thomas)
1750 Improve optimizer selectivity computations and functions (Tom)
1751 Optimize btree searching for cases where many equal keys exist (Tom)
1752 Enable fast LIKE index processing only if index present (Tom)
1753 Re-use free space on index pages with duplicates (Tom)
1754 Improve hash join processing (Tom)
1755 Prevent descending sort if result is already sorted(Hiroshi)
1756 Allow commuting of index scan query qualifications (Tom)
1757 Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom)
1758 Allocate large memory requests in fix-sized chunks for performance (Tom)
1759 Fix vacuum's performance by reducing memory allocation requests (Tom)
1760 Implement constant-expression simplification (Bernard Frankpitt, Tom)
1761 Use secondary columns to be used to determine start of index scan (Hiroshi)
1762 Prevent quadruple use of disk space when doing internal sorting (Tom)
1763 Faster sorting by calling fewer functions (Tom)
1764 Create system indexes to match all system caches (Bruce, Hiroshi)
1765 Make system caches use system indexes (Bruce)
1766 Make all system indexes unique (Bruce)
1767 Improve pg_statistics management for VACUUM speed improvement (Tom)
1768 Flush backend cache less frequently (Tom, Hiroshi)
1769 COPY now reuses previous memory allocation, improving performance (Tom)
1770 Improve optimization cost estimation (Tom)
1771 Improve optimizer estimate of range queries x > lowbound AND x < highbound (Tom)
1772 Use DNF instead of CNF where appropriate (Tom, Taral)
1773 Further cleanup for OR-of-AND WHERE-clauses (Tom)
1774 Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom)
1775 Smarter optimizer computations for random index page access (Tom)
1776 New SET variable to control optimizer costs (Tom)
1777 Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
1778 Reduce optimizer internal housekeeping of join paths for speedup (Tom)
1779 Major subquery speedup (Tom)
1780 Fewer fsync writes when fsync is not disabled (Tom)
1781 Improved LIKE optimizer estimates (Tom)
1782 Prevent fsync in SELECT-only queries (Vadim)
1783 Make index creation use psort code, because it is now faster (Tom)
1784 Allow creation of sort temp tables > 1 Gig
1788 Fix for linux PPC compile
1789 New generic expression-tree-walker subroutine (Tom)
1790 Change form() to varargform() to prevent portability problems
1791 Improved range checking for large integers on Alphas
1792 Clean up #include in /include directory (Bruce)
1793 Add scripts for checking includes (Bruce)
1794 Remove un-needed #include's from *.c files (Bruce)
1795 Change #include's to use <> and "" as appropriate (Bruce)
1796 Enable WIN32 compilation of libpq
1797 Alpha spinlock fix from Uncle George <gatgul@voicenet.com>
1798 Overhaul of optimizer data structures (Tom)
1799 Fix to cygipc library (Yutaka Tanida)
1800 Allow pgsql to work on newer Cygwin snapshots (Dan)
1801 New catalog version number (Tom)
1803 Rename heap_replace to heap_update
1804 Update for QNX (Dr. Andreas Kardos)
1805 New platform-specific regression handling (Tom)
1806 Rename oid8 -> oidvector and int28 -> int2vector (Bruce)
1807 Included all yacc and lex files into the distribution (Peter E.)
1808 Remove lextest, no longer needed (Peter E)
1809 Fix for libpq and psql on Win32 (Magnus)
1810 Internally change datetime and timespan into timestamp and interval (Thomas)
1811 Fix for plpgsql on BSDI
1812 Add SQL_ASCII test case to the regression test (Tatsuo)
1813 configure --with-mb now deprecated (Tatsuo)
1815 NetBSD fixes (Johnny C. Lam <lamj@stat.cmu.edu>)
1816 Fixes for Alpha compiles
1817 New multibyte encodings
1820 ----------------------------------------------------------------------
1824 Release date: 1999-10-13
1826 This is basically a cleanup release for 6.5.2. We have added a new
1827 PgAccess that was missing in 6.5.2, and installed an NT-specific fix.
1829 ----------------------------------------------------------------------
1831 Migration to version 6.5.3
1833 A dump/restore is *not* required for those running 6.5.*.
1835 ----------------------------------------------------------------------
1839 Updated version of pgaccess 0.98
1841 Fix dumping rules on inherited tables
1844 ----------------------------------------------------------------------
1848 Release date: 1999-09-15
1850 This is basically a cleanup release for 6.5.1. We have fixed a variety of
1851 problems reported by 6.5.1 users.
1853 ----------------------------------------------------------------------
1855 Migration to version 6.5.2
1857 A dump/restore is *not* required for those running 6.5.*.
1859 ----------------------------------------------------------------------
1863 subselect+CASE fixes(Tom)
1864 Add SHLIB_LINK setting for solaris_i386 and solaris_sparc ports(Daren Sefcik)
1865 Fixes for CASE in WHERE join clauses(Tom)
1866 Fix BTScan abort(Tom)
1867 Repair the check for redundant UNIQUE and PRIMARY KEY indexes(Thomas)
1868 Improve it so that it checks for multi-column constraints(Thomas)
1869 Fix for Win32 making problem with MB enabled(Hiroki Kataoka)
1870 Allow BSD yacc and bison to compile pl code(Bruce)
1871 Fix SET NAMES working
1873 Fix vacuum's memory consumption(Hiroshi,Tatsuo)
1874 Reduce the total memory consumption of vacuum(Tom)
1875 Fix for timestamp(datetime)
1876 Rule deparsing bugfixes(Tom)
1877 Fix quoting problems in mkMakefile.tcldefs.sh.in and mkMakefile.tkdefs.sh.in(Tom)
1878 This is to re-use space on index pages freed by vacuum(Vadim)
1879 document -x for pg_dump(Bruce)
1880 Fix for unary operators in rule deparser(Tom)
1881 Comment out FileUnlink of excess segments during mdtruncate()(Tom)
1882 Irix linking fix from Yu Cao >yucao@falcon.kla-tencor.com<
1883 Repair logic error in LIKE: should not return LIKE_ABORT
1884 when reach end of pattern before end of text(Tom)
1885 Repair incorrect cleanup of heap memory allocation during transaction abort(Tom)
1886 Updated version of pgaccess 0.98
1889 ----------------------------------------------------------------------
1893 Release date: 1999-07-15
1895 This is basically a cleanup release for 6.5. We have fixed a variety of
1896 problems reported by 6.5 users.
1898 ----------------------------------------------------------------------
1900 Migration to version 6.5.1
1902 A dump/restore is *not* required for those running 6.5.
1904 ----------------------------------------------------------------------
1909 Portability fixes for linux_ppc, Irix, linux_alpha, OpenBSD, alpha
1910 Remove QUERY_LIMIT, use SELECT...LIMIT
1911 Fix for EXPLAIN on inheritance(Tom)
1912 Patch to allow vacuum on multi-segment tables(Hiroshi)
1913 R-Tree optimizer selectivity fix(Tom)
1914 ACL file descriptor leak fix(Atsushi Ogawa)
1915 New expresssion subtree code(Tom)
1916 Avoid disk writes for read-only transactions(Vadim)
1917 Fix for removal of temp tables if last transaction was aborted(Bruce)
1918 Fix to prevent too large tuple from being created(Bruce)
1920 Allow port numbers 32k - 64k(Bruce)
1921 Add ^ precidence(Bruce)
1922 Rename sort files called pg_temp to pg_sorttemp(Bruce)
1923 Fix for microseconds in time values(Tom)
1924 Tutorial source cleanup
1926 Fix for sorting of NULL's in some cases(Tom)
1927 Shared library dependencies fixed (Tom)
1928 Fixed glitches affecting GROUP BY in subselects(Tom)
1929 Fix some compiler warnings (Tomoaki Nishiyama)
1930 Add Win1250 (Czech) support (Pavel Behal)
1933 ----------------------------------------------------------------------
1937 Release date: 1999-06-09
1939 This release marks a major step in the development team's mastery of the
1940 source code we inherited from Berkeley. You will see we are now easily
1941 adding major features, thanks to the increasing size and experience of our
1942 world-wide development team.
1944 Here is a brief summary of the more notable changes:
1946 Multi-version concurrency control(MVCC)
1948 This removes our old table-level locking, and replaces it with a
1949 locking system that is superior to most commercial database
1950 systems. In a traditional system, each row that is modified is
1951 locked until committed, preventing reads by other users. MVCC uses
1952 the natural multi-version nature of PostgreSQL to allow readers to
1953 continue reading consistent data during writer activity. Writers
1954 continue to use the compact pg_log transaction system. This is all
1955 performed without having to allocate a lock for every row like
1956 traditional database systems. So, basically, we no longer are
1957 restricted by simple table-level locking; we have something better
1958 than row-level locking.
1960 Hot backups from pg_dump
1962 pg_dump takes advantage of the new MVCC features to give a
1963 consistent database dump/backup while the database stays online
1964 and available for queries.
1968 We now have a true numeric data type, with user-specified
1973 Temporary tables are guaranteed to have unique names within a
1974 database session, and are destroyed on session exit.
1978 We now have CASE, INTERSECT, and EXCEPT statement support. We have
1979 new LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL, SELECT ... FOR
1980 UPDATE, and an improved LOCK TABLE command.
1984 We continue to speed up PostgreSQL, thanks to the variety of
1985 talents within our team. We have sped up memory allocation,
1986 optimization, table joins, and row transfer routines.
1990 We continue to expand our port list, this time including Windows
1991 NT/ix86 and NetBSD/arm32.
1995 Most interfaces have new versions, and existing functionality has
2000 New and updated material is present throughout the documentation.
2001 New FAQs have been contributed for SGI and AIX platforms. The
2002 Tutorial has introductory information on SQL from Stefan
2003 Simkovics. For the User's Guide, there are reference pages
2004 covering the postmaster and more utility programs, and a new
2005 appendix contains details on date/time behavior. The
2006 Administrator's Guide has a new chapter on troubleshooting from
2007 Tom Lane. And the Programmer's Guide has a description of query
2008 processing, also from Stefan, and details on obtaining the
2009 PostgreSQL source tree via anonymous CVS and CVSup.
2011 ----------------------------------------------------------------------
2013 Migration to version 6.5
2015 A dump/restore using pg_dump is required for those wishing to migrate data
2016 from any previous release of PostgreSQL. pg_upgrade can *not* be used to
2017 upgrade to this release because the on-disk structure of the tables has
2018 changed compared to previous releases.
2020 The new Multi-Version Concurrency Control (MVCC) features can give
2021 somewhat different behaviors in multi-user environments. *Read and
2022 understand the following section to ensure that your existing applications
2023 will give you the behavior you need.*
2025 ----------------------------------------------------------------------
2027 Multi-Version Concurrency Control
2029 Because readers in 6.5 don't lock data, regardless of transaction
2030 isolation level, data read by one transaction can be overwritten by
2031 another. In other words, if a row is returned by "SELECT" it doesn't mean
2032 that this row really exists at the time it is returned (i.e. sometime
2033 after the statement or transaction began) nor that the row is protected
2034 from being deleted or updated by concurrent transactions before the
2035 current transaction does a commit or rollback.
2037 To ensure the actual existence of a row and protect it against concurrent
2038 updates one must use "SELECT FOR UPDATE" or an appropriate "LOCK TABLE"
2039 statement. This should be taken into account when porting applications
2040 from previous releases of PostgreSQL and other environments.
2042 Keep the above in mind if you are using "contrib/refint.*" triggers for
2043 referential integrity. Additional techniques are required now. One way is
2044 to use "LOCK parent_table IN SHARE ROW EXCLUSIVE MODE" command if a
2045 transaction is going to update/delete a primary key and use "LOCK
2046 parent_table IN SHARE MODE" command if a transaction is going to
2047 update/insert a foreign key.
2049 Note: Note that if you run a transaction in SERIALIZABLE mode then you
2050 must execute the "LOCK" commands above before execution of any DML
2051 statement ("SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO") in the
2054 These inconveniences will disappear in the future when the ability to read
2055 dirty (uncommitted) data (regardless of isolation level) and true
2056 referential integrity will be implemented.
2058 ----------------------------------------------------------------------
2064 Fix text<->float8 and text<->float4 conversion functions(Thomas)
2065 Fix for creating tables with mixed-case constraints(Billy)
2066 Change exp()/pow() behavior to generate error on underflow/overflow(Jan)
2067 Fix bug in pg_dump -z
2068 Memory overrun cleanups(Tatsuo)
2069 Fix for lo_import crash(Tatsuo)
2070 Adjust handling of data type names to suppress double quotes(Thomas)
2071 Use type coercion for matching columns and DEFAULT(Thomas)
2072 Fix deadlock so it only checks once after one second of sleep(Bruce)
2073 Fixes for aggregates and PL/pgsql(Hiroshi)
2074 Fix for subquery crash(Vadim)
2075 Fix for libpq function PQfnumber and case-insensitive names(Bahman Rafatjoo)
2076 Fix for large object write-in-middle, no extra block, memory consumption(Tatsuo)
2077 Fix for pg_dump -d or -D and quote special characters in INSERT
2078 Repair serious problems with dynahash(Tom)
2079 Fix INET/CIDR portability problems
2080 Fix problem with selectivity error in ALTER TABLE ADD COLUMN(Bruce)
2081 Fix executor so mergejoin of different column types works(Tom)
2082 Fix for Alpha OR selectivity bug
2083 Fix OR index selectivity problem(Bruce)
2084 Fix so \d shows proper length for char()/varchar()(Ryan)
2085 Fix tutorial code(Clark)
2086 Improve destroyuser checking(Oliver)
2087 Fix for Kerberos(Rodney McDuff)
2088 Fix for dropping database while dirty buffers(Bruce)
2089 Fix so sequence nextval() can be case-sensitive(Bruce)
2091 Drop buffers before destroying database files(Bruce)
2092 Fix case where executor evaluates functions twice(Tatsuo)
2093 Allow sequence nextval actions to be case-sensitive(Bruce)
2094 Fix optimizer indexing not working for negative numbers(Bruce)
2095 Fix for memory leak in executor with fjIsNull
2096 Fix for aggregate memory leaks(Erik Riedel)
2097 Allow username containing a dash GRANT permissions
2098 Cleanup of NULL in inet types
2099 Clean up system table bugs(Tom)
2100 Fix problems of PAGER and \? command(Masaaki Sakaida)
2101 Reduce default multi-segment file size limit to 1GB(Peter)
2102 Fix for dumping of CREATE OPERATOR(Tom)
2103 Fix for backward scanning of cursors(Hiroshi Inoue)
2104 Fix for COPY FROM STDIN when using \i(Tom)
2105 Fix for subselect is compared inside an expression(Jan)
2106 Fix handling of error reporting while returning rows(Tom)
2107 Fix problems with reference to array types(Tom,Jan)
2108 Prevent UPDATE SET oid(Jan)
2109 Fix pg_dump so -t option can handle case-sensitive tablenames
2110 Fixes for GROUP BY in special cases(Tom, Jan)
2111 Fix for memory leak in failed queries(Tom)
2112 DEFAULT now supports mixed-case identifiers(Tom)
2113 Fix for multi-segment uses of DROP/RENAME table, indexes(Ole Gjerde)
2114 Disable use of pg_dump with both -o and -d options(Bruce)
2115 Allow pg_dump to properly dump GROUP permissions(Bruce)
2116 Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan)
2117 Fix for computations in views(Jan)
2118 Fix for aggregates on array indexes(Tom)
2119 Fix for DEFAULT handles single quotes in value requiring too many quotes
2120 Fix security problem with non-super users importing/exporting large objects(Tom)
2121 Rollback of transaction that creates table cleaned up properly(Tom)
2122 Fix to allow long table and column names to generate proper serial names(Tom)
2126 Add "vacuumdb" utility
2127 Speed up libpq by allocating memory better(Tom)
2128 EXPLAIN all indexes used(Tom)
2129 Implement CASE, COALESCE, NULLIF expression(Thomas)
2130 New pg_dump table output format(Constantin)
2131 Add string min()/max() functions(Thomas)
2132 Extend new type coercion techniques to aggregates(Thomas)
2133 New moddatetime contrib(Terry)
2134 Update to pgaccess 0.96(Constantin)
2135 Add routines for single-byte "char" type(Thomas)
2136 Improved substr() function(Thomas)
2137 Improved multibyte handling(Tatsuo)
2138 Multi-version concurrency control/MVCC(Vadim)
2139 New Serialized mode(Vadim)
2140 Fix for tables over 2gigs(Peter)
2141 New SET TRANSACTION ISOLATION LEVEL(Vadim)
2142 New LOCK TABLE IN ... MODE(Vadim)
2143 Update ODBC driver(Byron)
2144 New NUMERIC data type(Jan)
2145 New SELECT FOR UPDATE(Vadim)
2146 Handle "NaN" and "Infinity" for input values(Jan)
2147 Improved date/year handling(Thomas)
2148 Improved handling of backend connections(Magnus)
2149 New options ELOG_TIMESTAMPS and USE_SYSLOG options for log files(Massimo)
2150 New TCL_ARRAYS option(Massimo)
2151 New INTERSECT and EXCEPT(Stefan)
2152 New pg_index.indisprimary for primary key tracking(D'Arcy)
2153 New pg_dump option to allow dropping of tables before creation(Brook)
2154 Speedup of row output routines(Tom)
2155 New READ COMMITTED isolation level(Vadim)
2156 New TEMP tables/indexes(Bruce)
2157 Prevent sorting if result is already sorted(Jan)
2158 New memory allocation optimization(Jan)
2159 Allow psql to do \p\g(Bruce)
2160 Allow multiple rule actions(Jan)
2161 Added LIMIT/OFFSET functionality(Jan)
2162 Improve optimizer when joining a large number of tables(Bruce)
2163 New intro to SQL from S. Simkovics' Master's Thesis (Stefan, Thomas)
2164 New intro to backend processing from S. Simkovics' Master's Thesis (Stefan)
2165 Improved int8 support(Ryan Bradetich, Thomas, Tom)
2166 New routines to convert between int8 and text/varchar types(Thomas)
2167 New bushy plans, where meta-tables are joined(Bruce)
2168 Enable right-hand queries by default(Bruce)
2169 Allow reliable maximum number of backends to be set at configure time
2170 (--with-maxbackends and postmaster switch (-N backends))(Tom)
2171 GEQO default now 10 tables because of optimizer speedups(Tom)
2172 Allow NULL=Var for MS-SQL portability(Michael, Bruce)
2173 Modify contrib check_primary_key() so either "automatic" or "dependent"(Anand)
2174 Allow psql \d on a view show query(Ryan)
2175 Speedup for LIKE(Bruce)
2176 Ecpg fixes/features, see src/interfaces/ecpg/ChangeLog file(Michael)
2177 JDBC fixes/features, see src/interfaces/jdbc/CHANGELOG(Peter)
2178 Make % operator have precedence like /(Bruce)
2179 Add new postgres -O option to allow system table structure changes(Bruce)
2180 Update contrib/pginterface/findoidjoins script(Tom)
2181 Major speedup in vacuum of deleted rows with indexes(Vadim)
2182 Allow non-SQL functions to run different versions based on arguments(Tom)
2183 Add -E option that shows actual queries sent by \dt and friends(Masaaki Sakaida)
2184 Add version number in start-up banners for psql(Masaaki Sakaida)
2185 New contrib/vacuumlo removes large objects not referenced(Peter)
2186 New initialization for table sizes so non-vacuumed tables perform better(Tom)
2187 Improve error messages when a connection is rejected(Tom)
2188 Support for arrays of char() and varchar() fields(Massimo)
2189 Overhaul of hash code to increase reliability and performance(Tom)
2190 Update to PyGreSQL 2.4(D'Arcy)
2191 Changed debug options so -d4 and -d5 produce different node displays(Jan)
2192 New pg_options: pretty_plan, pretty_parse, pretty_rewritten(Jan)
2193 Better optimization statistics for system table access(Tom)
2194 Better handling of non-default block sizes(Massimo)
2195 Improve GEQO optimizer memory consumption(Tom)
2196 UNION now suppports ORDER BY of columns not in target list(Jan)
2197 Major libpq++ improvements(Vince Vielhaber)
2198 pg_dump now uses -z(ACL's) as default(Bruce)
2199 backend cache, memory speedups(Tom)
2200 have pg_dump do everything in one snapshot transaction(Vadim)
2201 fix for large object memory leakage, fix for pg_dumping(Tom)
2202 INET type now respects netmask for comparisons
2203 Make VACUUM ANALYZE only use a readlock(Vadim)
2204 Allow VIEWs on UNIONS(Jan)
2205 pg_dump now can generate consistent snapshots on active databases(Vadim)
2209 Improve port matching(Tom)
2210 Portability fixes for SunOS
2211 Add NT/Win32 backend port and enable dynamic loading(Magnus and Daniel Horak)
2212 New port to Cobalt Qube(Mips) running Linux(Tatsuo)
2213 Port to NetBSD/m68k(Mr. Mutsuki Nakajima)
2214 Port to NetBSD/sun3(Mr. Mutsuki Nakajima)
2215 Port to NetBSD/macppc(Toshimi Aoki)
2216 Fix for tcl/tk configuration(Vince)
2217 Removed CURRENT keyword for rule queries(Jan)
2218 NT dynamic loading now works(Daniel Horak)
2219 Add ARM32 support(Andrew McMurry)
2220 Better support for HPUX 11 and Unixware
2221 Improve file handling to be more uniform, prevent file descriptor leak(Tom)
2222 New install commands for plpgsql(Jan)
2225 ----------------------------------------------------------------------
2229 Release date: 1998-12-20
2231 The 6.4.1 release was improperly packaged. This also has one additional
2234 ----------------------------------------------------------------------
2236 Migration to version 6.4.2
2238 A dump/restore is *not* required for those running 6.4.*.
2240 ----------------------------------------------------------------------
2244 Fix for datetime constant problem on some platforms(Thomas)
2246 ----------------------------------------------------------------------
2250 Release date: 1998-12-18
2252 This is basically a cleanup release for 6.4. We have fixed a variety of
2253 problems reported by 6.4 users.
2255 ----------------------------------------------------------------------
2257 Migration to version 6.4.1
2259 A dump/restore is *not* required for those running 6.4.
2261 ----------------------------------------------------------------------
2265 Add pg_dump -N flag to force double quotes around identifiers. This is
2267 Fix for NOT in where clause causing crash(Bruce)
2268 EXPLAIN VERBOSE coredump fix(Vadim)
2269 Fix shared-library problems on Linux
2270 Fix test for table existance to allow mixed-case and whitespace in
2271 the table name(Thomas)
2272 Fix a couple of pg_dump bugs
2273 Configure matches template/.similar entries better(Tom)
2274 Change builtin function names from SPI_* to spi_*
2275 OR WHERE clause fix(Vadim)
2276 Fixes for mixed-case table names(Billy)
2277 contrib/linux/postgres.init.csh/sh fix(Thomas)
2278 libpq memory overrun fix
2280 Change exp() behavior to generate error on underflow(Thomas)
2281 pg_dump fixes for memory leak, inheritance constraints, layout change
2282 update pgaccess to 0.93
2283 Fix prototype for 64-bit platforms
2284 Multibyte fixes(Tatsuo)
2286 Fix memory overruns(Tatsuo)
2287 Fix for lo_import() crash(Bruce)
2288 Better search for install program(Tom)
2291 Use implicit type coercion for matching DEFAULT values(Thomas)
2292 Add routines to help with single-byte (internal) character type(Thomas)
2293 Compilation of libpq for Win32 fixes(Magnus)
2294 Upgrade to PyGreSQL 2.2(D'Arcy)
2296 ----------------------------------------------------------------------
2300 Release date: 1998-10-30
2302 There are *many* new features and improvements in this release. Thanks to
2303 our developers and maintainers, nearly every aspect of the system has
2304 received some attention since the previous release. Here is a brief,
2307 * Views and rules are now functional thanks to extensive new code in the
2308 rewrite rules system from Jan Wieck. He also wrote a chapter on it for
2309 the Programmer's Guide.
2311 * Jan also contributed a second procedural language, PL/pgSQL, to go
2312 with the original PL/pgTCL procedural language he contributed last
2315 * We have optional multiple-byte character set support from Tatsuo Iishi
2316 to complement our existing locale support.
2318 * Client/server communications has been cleaned up, with better support
2319 for asynchronous messages and interrupts thanks to Tom Lane.
2321 * The parser will now perform automatic type coercion to match arguments
2322 to available operators and functions, and to match columns and
2323 expressions with target columns. This uses a generic mechanism which
2324 supports the type extensibility features of PostgreSQL. There is a new
2325 chapter in the User's Guide which covers this topic.
2327 * Three new data types have been added. Two types, inet and cidr,
2328 support various forms of IP network, subnet, and machine addressing.
2329 There is now an 8-byte integer type available on some platforms. See
2330 the chapter on data types in the User's Guide for details. A fourth
2331 type, serial, is now supported by the parser as an amalgam of the int4
2332 type, a sequence, and a unique index.
2334 * Several more SQL92-compatible syntax features have been added,
2335 including "INSERT DEFAULT VALUES"
2337 * The automatic configuration and installation system has received some
2338 attention, and should be more robust for more platforms than it has
2341 ----------------------------------------------------------------------
2343 Migration to version 6.4
2345 A dump/restore using pg_dump or pg_dumpall is required for those wishing
2346 to migrate data from any previous release of PostgreSQL.
2348 ----------------------------------------------------------------------
2354 Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan)
2355 Remove char2-16 data types, use char/varchar(Darren)
2356 Pqfn not handles a NOTICE message(Anders)
2357 Reduced busywaiting overhead for spinlocks with many backends (dg)
2358 Stuck spinlock detection (dg)
2359 Fix up "ISO-style" timespan decoding and encoding(Thomas)
2360 Fix problem with table drop after rollback of transaction(Vadim)
2361 Change error message and remove non-functional update message(Vadim)
2362 Fix for COPY array checking
2363 Fix for SELECT 1 UNION SELECT NULL
2364 Fix for buffer leaks in large object calls(Pascal)
2365 Change owner from oid to int4 type(Bruce)
2366 Fix a bug in the oracle compatibility functions btrim() ltrim() and rtrim()
2367 Fix for shared invalidation cache overflow(Massimo)
2368 Prevent file descriptor leaks in failed COPY's(Bruce)
2369 Fix memory leak in libpgtcl's pg_select(Constantin)
2370 Fix problems with username/passwords over 8 characters(Tom)
2371 Fix problems with handling of asynchronous NOTIFY in backend(Tom)
2372 Fix of many bad system table entries(Tom)
2376 Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael)
2377 Show the index used in an EXPLAIN(Zeugswetter)
2378 EXPLAIN invokes rule system and shows plan(s) for rewritten queries(Jan)
2379 Multibyte awareness of many data types and functions, via configure(Tatsuo)
2380 New configure --with-mb option(Tatsuo)
2381 New initdb --pgencoding option(Tatsuo)
2382 New createdb -E multibyte option(Tatsuo)
2383 Select version(); now returns PostgreSQL version(Jeroen)
2384 Libpq now allows asynchronous clients(Tom)
2385 Allow cancel from client of backend query(Tom)
2386 Psql now cancels query with Control-C(Tom)
2387 Libpq users need not issue dummy queries to get NOTIFY messages(Tom)
2388 NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom)
2389 PGresult struct now includes associated error message, if any(Tom)
2390 Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas)
2391 Add routines to convert between varchar and bpchar(Thomas)
2392 Add routines to allow sizing of varchar and bpchar into target columns(Thomas)
2393 Add bit flags to support timezonehour and minute in data retrieval(Thomas)
2394 Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas)
2395 Fixes for unary minus parsing with leading spaces(Thomas)
2396 Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas)
2397 Check for and properly ignore FOREIGN KEY column constraints(Thomas)
2398 Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas)
2399 Enable HAVING clause but no fixes elsewhere yet.
2400 Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas)
2401 Save string type if specified for DEFAULT clause handling(Thomas)
2402 Coerce operations involving different data types(Thomas)
2403 Allow some index use for columns of different types(Thomas)
2404 Add capabilities for automatic type conversion(Thomas)
2405 Cleanups for large objects, so file is truncated on open(Peter)
2406 Readline cleanups(Tom)
2407 Allow psql \f \ to make spaces as delimiter(Bruce)
2408 Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce)
2409 Msql compatibility library in /contrib(Aldrin)
2410 Remove the requirement that ORDER/GROUP BY clause identifiers be
2411 included in the target list(David)
2412 Convert columns to match columns in UNION clauses(Thomas)
2413 Remove fork()/exec() and only do fork()(Bruce)
2414 Jdbc cleanups(Peter)
2415 Show backend status on ps command line(only works on some platforms)(Bruce)
2416 Pg_hba.conf now has a sameuser option in the database field
2417 Make lo_unlink take oid param, not int4
2418 New DISABLE_COMPLEX_MACRO for compilers that can't handle our macros(Bruce)
2419 Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom)
2420 libpgtcl cleanups(Tom)
2421 Add -error option to libpgtcl's pg_result command(Tom)
2422 New locale patch, see docs/README/locale(Oleg)
2423 Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb)
2424 New contrib/lo code for large object orphan removal(Peter)
2425 New psql command "SET CLIENT_ENCODING TO 'encoding'" for multibytes
2426 feature, see /doc/README.mb(Tatsuo)
2427 /contrib/noupdate code to revoke update permission on a column
2428 Libpq can now be compiled on win32(Magnus)
2429 Add PQsetdbLogin() in libpq
2430 New 8-byte integer type, checked by configure for OS support(Thomas)
2431 Better support for quoted table/column names(Thomas)
2432 Surround table and column names with double-quotes in pg_dump(Thomas)
2433 PQreset() now works with passwords(Tom)
2434 Handle case of GROUP BY target list column number out of range(David)
2435 Allow UNION in subselects
2436 Add auto-size to screen to \d? commands(Bruce)
2437 Use UNION to show all \d? results in one query(Bruce)
2438 Add \d? field search feature(Bruce)
2439 Pg_dump issues fewer \connect requests(Tom)
2440 Make pg_dump -z flag work better, document it in manual page(Tom)
2441 Add HAVING clause with full support for subselects and unions(Stephan)
2442 Full text indexing routines in contrib/fulltextindex(Maarten)
2443 Transaction ids now stored in shared memory(Vadim)
2444 New PGCLIENTENCODING when issuing COPY command(Tatsuo)
2445 Support for SQL92 syntax "SET NAMES"(Tatsuo)
2446 Support for LATIN2-5(Tatsuo)
2447 Add UNICODE regression test case(Tatsuo)
2448 Lock manager cleanup, new locking modes for LLL(Vadim)
2449 Allow index use with OR clauses(Bruce)
2450 Allows "SELECT NULL ORDER BY 1;"
2451 Explain VERBOSE prints the plan, and now pretty-prints the plan to
2452 the postmaster log file(Bruce)
2453 Add indexes display to \d command(Bruce)
2454 Allow GROUP BY on functions(David)
2455 New pg_class.relkind for large objects(Bruce)
2456 New way to send libpq NOTICE messages to a different location(Tom)
2457 New \w write command to psql(Bruce)
2458 New /contrib/findoidjoins scans oid columns to find join relationships(Bruce)
2459 Allow binary-compatible indexes to be considered when checking for valid
2460 Indexes for restriction clauses containing a constant(Thomas)
2461 New ISBN/ISSN code in /contrib/isbn_issn
2462 Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas)
2463 New rewrite system fixes many problems with rules and views(Jan)
2464 * Rules on relations work
2465 * Event qualifications on insert/update/delete work
2466 * New OLD variable to reference CURRENT, CURRENT will be remove in future
2467 * Update rules can reference NEW and OLD in rule qualifications/actions
2468 * Insert/update/delete rules on views work
2469 * Multiple rule actions are now supported, surrounded by parentheses
2470 * Regular users can create views/rules on tables they have RULE permits
2471 * Rules and views inherit the permissions on the creator
2472 * No rules at the column level
2473 * No UPDATE NEW/OLD rules
2474 * New pg_tables, pg_indexes, pg_rules and pg_views system views
2475 * Only a single action on SELECT rules
2476 * Total rewrite overhaul, perhaps for 6.5
2478 * handle aggregates on views
2479 * handle insert into select from view works
2480 System indexes are now multi-key(Bruce)
2481 Oidint2, oidint4, and oidname types are removed(Bruce)
2482 Use system cache for more system table lookups(Bruce)
2483 New backend programming language PL/pgSQL in backend/pl(Jan)
2484 New SERIAL data type, auto-creates sequence/index(Thomas)
2485 Enable assert checking without a recompile(Massimo)
2486 User lock enhancements(Massimo)
2487 New setval() command to set sequence value(Massimo)
2488 Auto-remove unix socket file on start-up if no postmaster running(Massimo)
2489 Conditional trace package(Massimo)
2490 New UNLISTEN command(Massimo)
2491 Psql and libpq now compile under win32 using win32.mak(Magnus)
2492 Lo_read no longer stores trailing NULL(Bruce)
2493 Identifiers are now truncated to 31 characters internally(Bruce)
2494 Createuser options now availble on the command line
2495 Code for 64-bit integer supported added, configure tested, int8 type(Thomas)
2496 Prevent file descriptor leaf from failed COPY(Bruce)
2497 New pg_upgrade command(Bruce)
2498 Updated /contrib directories(Massimo)
2499 New CREATE TABLE DEFAULT VALUES statement available(Thomas)
2500 New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas)
2501 New DECLARE and FETCH feature(Thomas)
2502 libpq's internal structures now not exported(Tom)
2503 Allow up to 8 key indexes(Bruce)
2504 Remove ARCHIVE keyword, that is no longer used(Thomas)
2505 pg_dump -n flag to supress quotes around indentifiers
2506 disable system columns for views(Jan)
2507 new INET and CIDR types for network addresses(TomH, Paul)
2508 no more double quotes in psql output
2509 pg_dump now dumps views(Terry)
2510 new SET QUERY_LIMIT(Tatsuo,Jan)
2514 /contrib cleanup(Jun)
2515 Inline some small functions called for every row(Bruce)
2518 Multibyte regression tests(Soonmyung.)
2519 Remove --disabled options from configure
2520 Define PGDOC to use POSTGRESDIR by default
2521 Make regression optional
2522 Remove extra braces code to pgindent(Bruce)
2523 Add bsdi shared library support(Bruce)
2524 New --without-CXX support configure option(Brook)
2526 Update backend flowchart in tools/backend(Bruce)
2527 Change atttypmod from int16 to int32(Bruce, Tom)
2528 Getrusage() fix for platforms that do not have it(Tom)
2529 Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page
2530 NS32K platform fixes(Phil Nelson, John Buller)
2531 Sco 7/UnixWare 2.x fixes(Billy,others)
2532 Sparc/Solaris 2.5 fixes(Ryan)
2533 Pgbuiltin.3 is obsolete, move to doc files(Thomas)
2534 Even more documention(Thomas)
2535 Nextstep support(Jacek)
2537 pginterface manual page(Bruce)
2538 shared libraries all have version numbers
2539 merged all OS-specific shared library defines into one file
2540 smarter TCL/TK configuration checking(Billy)
2541 smarter perl configuration(Brook)
2542 configure uses supplied install-sh if no install script found(Tom)
2543 new Makefile.shlib for shared library configuration(Tom)
2545 ----------------------------------------------------------------------
2549 Release date: 1998-04-07
2551 This is a bug-fix release for 6.3.x. Refer to the release notes for
2552 version 6.3 for a more complete summary of new features.
2556 * Repairs automatic configuration support for some platforms, including
2557 Linux, from breakage inadvertently introduced in version 6.3.1.
2559 * Correctly handles function calls on the left side of BETWEEN and LIKE
2562 A dump/restore is NOT required for those running 6.3 or 6.3.1. A make
2563 distclean, make, and make install is all that is required. This last step
2564 should be performed while the postmaster is not running. You should
2565 re-link any custom applications that use PostgreSQL libraries.
2567 For upgrades from pre-6.3 installations, refer to the installation and
2568 migration instructions for version 6.3.
2570 ----------------------------------------------------------------------
2574 Configure detection improvements for tcl/tk(Brook Milligan, Alvin)
2575 Manual page improvements(Bruce)
2576 BETWEEN and LIKE fix(Thomas)
2577 fix for psql \connect used by pg_dump(Oliver Elphick)
2579 pgaccess, version 0.86
2580 qsort removed, now uses libc version, cleanups(Jeroen)
2581 fix for buffer over-runs detected(Maurice Gittens)
2582 fix for buffer overrun in libpgtcl(Randy Kunkee)
2583 fix for UNION with DISTINCT or ORDER BY(Bruce)
2584 gettimeofday configure check(Doug Winterburn)
2585 Fix "indexes not used" bug(Vadim)
2586 docs additions(Thomas)
2587 Fix for backend memory leak(Bruce)
2588 libreadline cleanup(Erwan MAS)
2589 Remove DISTDIR(Bruce)
2590 Makefile dependency cleanup(Jeroen van Vianen)
2594 ----------------------------------------------------------------------
2598 Release date: 1998-03-23
2602 * Additional support for multibyte character sets.
2604 * Repair byte ordering for mixed-endian clients and servers.
2606 * Minor updates to allowed SQL syntax.
2608 * Improvements to the configuration autodetection for installation.
2610 A dump/restore is NOT required for those running 6.3. A make distclean,
2611 make, and make install is all that is required. This last step should be
2612 performed while the postmaster is not running. You should re-link any
2613 custom applications that use PostgreSQL libraries.
2615 For upgrades from pre-6.3 installations, refer to the installation and
2616 migration instructions for version 6.3.
2618 ----------------------------------------------------------------------
2622 ecpg cleanup/fixes, now version 1.1(Michael Meskes)
2623 pg_user cleanup(Bruce)
2624 large object fix for pg_dump and tclsh (alvin)
2625 LIKE fix for multiple adjacent underscores
2626 fix for redefining builtin functions(Thomas)
2628 upgrade to pg_access 0.83
2629 updated CLUSTER manual page
2630 multibyte character set support, see doc/README.mb(Tatsuo)
2631 configure --with-pgport fix
2633 big-endian fix for backend communications(Kataoka)
2634 SUBSTR() and substring() fix(Jan)
2635 several jdbc fixes(Peter)
2636 libpgtcl improvements, see libptcl/README(Randy Kunkee)
2637 Fix for "Datasize = 0" error(Vadim)
2638 Prevent \do from wrapping(Bruce)
2639 Remove duplicate Russian character set entries
2641 Allow optional TABLE keyword in LOCK and SELECT INTO(Thomas)
2642 CREATE SEQUENCE options to allow a negative integer(Thomas)
2643 Add "PASSWORD" as an allowed column identifier(Thomas)
2644 Add checks for UNION target fields(Bruce)
2645 Fix Alpha port(Dwayne Bailey)
2646 Fix for text arrays containing quotes(Doug Gibson)
2647 Solaris compile fix(Albert Chin-A-Young)
2648 Better identify tcl and tk libs and includes(Bruce)
2651 ----------------------------------------------------------------------
2655 Release date: 1998-03-01
2657 There are *many* new features and improvements in this release. Here is a
2658 brief, incomplete summary:
2660 * Many new SQL features, including full SQL92 subselect capability
2661 (everything is here but target-list subselects).
2663 * Support for client-side environment variables to specify time zone and
2666 * Socket interface for client/server connection. This is the default now
2667 so you may need to start postmaster with the "-i" flag.
2669 * Better password authorization mechanisms. Default table permissions
2672 * Old-style time travel has been removed. Performance has been improved.
2674 Note: Bruce Momjian wrote the following notes to introduce the new
2677 There are some general 6.3 issues that I want to mention. These are only
2678 the big items that can not be described in one sentence. A review of the
2679 detailed changes list is still needed.
2681 First, we now have subselects. Now that we have them, I would like to
2682 mention that without subselects, SQL is a very limited language.
2683 Subselects are a major feature, and you should review your code for places
2684 where subselects provide a better solution for your queries. I think you
2685 will find that there are more uses for subselects than you may think.
2686 Vadim has put us on the big SQL map with subselects, and fully functional
2687 ones too. The only thing you can't do with subselects is to use them in
2690 Second, 6.3 uses Unix domain sockets rather than TCP/IP by default. To
2691 enable connections from other machines, you have to use the new postmaster
2692 -i option, and of course edit "pg_hba.conf". Also, for this reason, the
2693 format of "pg_hba.conf" has changed.
2695 Third, char() fields will now allow faster access than varchar() or text.
2696 Specifically, the text and varchar() have a penalty for access to any
2697 columns after the first column of this type. char() used to also have this
2698 access penalty, but it no longer does. This may suggest that you redesign
2699 some of your tables, especially if you have short character columns that
2700 you have defined as varchar() or text. This and other changes make 6.3
2701 even faster than earlier releases.
2703 We now have passwords definable independent of any Unix file. There are
2704 new SQL USER commands. See the Administrator's Guide for more information.
2705 There is a new table, pg_shadow, which is used to store user information
2706 and user passwords, and it by default only SELECT-able by the postgres
2707 super-user. pg_user is now a view of pg_shadow, and is SELECT-able by
2708 PUBLIC. You should keep using pg_user in your application without changes.
2710 User-created tables now no longer have SELECT permission to PUBLIC by
2711 default. This was done because the ANSI standard requires it. You can of
2712 course GRANT any permissions you want after the table is created. System
2713 tables continue to be SELECT-able by PUBLIC.
2715 We also have real deadlock detection code. No more sixty-second timeouts.
2716 And the new locking code implements a FIFO better, so there should be less
2717 resource starvation during heavy use.
2719 Many complaints have been made about inadequate documentation in previous
2720 releases. Thomas has put much effort into many new manuals for this
2721 release. Check out the doc/ directory.
2723 For performance reasons, time travel is gone, but can be implemented using
2724 triggers (see "pgsql/contrib/spi/README"). Please check out the new \d
2725 command for types, operators, etc. Also, views have their own permissions
2726 now, not based on the underlying tables, so permissions on them have to be
2727 set separately. Check "/pgsql/interfaces" for some new ways to talk to
2730 This is the first release that really required an explanation for existing
2731 users. In many ways, this was necessary because the new release removes
2732 many limitations, and the work-arounds people were using are no longer
2735 ----------------------------------------------------------------------
2737 Migration to version 6.3
2739 A dump/restore using pg_dump or pg_dumpall is required for those wishing
2740 to migrate data from any previous release of PostgreSQL.
2742 ----------------------------------------------------------------------
2748 Fix binary cursors broken by MOVE implementation(Vadim)
2749 Fix for tcl library crash(Jan)
2750 Fix for array handling, from Gerhard Hintermayer
2751 Fix acl error, and remove duplicate pqtrace(Bruce)
2752 Fix psql \e for empty file(Bruce)
2753 Fix for textcat on varchar() fields(Bruce)
2754 Fix for DBT Sendproc (Zeugswetter Andres)
2755 Fix vacuum analyze syntax problem(Bruce)
2756 Fix for international identifiers(Tatsuo)
2757 Fix aggregates on inherited tables(Bruce)
2758 Fix substr() for out-of-bounds data
2759 Fix for select 1=1 or 2=2, select 1=1 and 2=2, and select sum(2+2)(Bruce)
2760 Fix notty output to show status result. -q option still turns it off(Bruce)
2761 Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce)
2763 Fix for PQtrace start/stop several times(Bruce)
2764 Fix a variety of locking problems like newer lock waiters getting
2765 lock before older waiters, and having readlock people not share
2766 locks if a writer is waiting for a lock, and waiting writers not
2767 getting priority over waiting readers(Bruce)
2768 Fix crashes in psql when executing queries from external files(James)
2769 Fix problem with multiple order by columns, with the first one having
2771 Use correct hash table support functions for float8 and int4(Thomas)
2772 Re-enable JOIN= option in CREATE OPERATOR statement (Thomas)
2773 Change precedence for boolean operators to match expected behavior(Thomas)
2774 Generate elog(ERROR) on over-large integer(Bruce)
2775 Allow multiple-argument functions in constraint clauses(Thomas)
2776 Check boolean input literals for 'true','false','yes','no','1','0'
2777 and throw elog(ERROR) if unrecognized(Thomas)
2778 Major large objects fix
2779 Fix for GROUP BY showing duplicates(Vadim)
2780 Fix for index scans in MergeJion(Vadim)
2784 Subselects with EXISTS, IN, ALL, ANY keywords (Vadim, Bruce, Thomas)
2785 New User Manual(Thomas, others)
2786 Speedup by inlining some frequently-called functions
2787 Real deadlock detection, no more timeouts(Bruce)
2788 Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
2789 CURRENT_USER(Thomas)
2790 Modify constraint syntax to be SQL92-compliant(Thomas)
2791 Implement SQL92 PRIMARY KEY and UNIQUE clauses using indexes(Thomas)
2792 Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas)
2793 Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas)
2794 Allow PostgreSQL-style casting ("::") of non-constants(Thomas)
2795 Add support for SQL3 TRUE and FALSE boolean constants(Thomas)
2796 Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas)
2797 Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas)
2798 Allow SQL92 delimited identifiers(Thomas)
2799 Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas)
2800 Support SQL92 syntax for type coercion of literal strings
2801 (e.g. "DATETIME 'now'")(Thomas)
2802 Add conversions for int2, int4, and OID types to and from text(Thomas)
2803 Use shared lock when building indexes(Vadim)
2804 Free memory allocated for an user query inside transaction block after
2805 this query is done, was turned off in <= 6.2.1(Vadim)
2806 New SQL statement CREATE PROCEDURAL LANGUAGE(Jan)
2807 New PostgreSQL Procedural Language (PL) backend interface(Jan)
2808 Rename pg_dump -H option to -h(Bruce)
2809 Add Java support for passwords, European dates(Peter)
2810 Use indexes for LIKE and ~, !~ operations(Bruce)
2811 Add hash functions for datetime and timespan(Thomas)
2812 Time Travel removed(Vadim, Bruce)
2813 Add paging for \d and \z, and fix \i(Bruce)
2814 Add Unix domain socket support to backend and to frontend library(Goran)
2815 Implement CREATE DATABASE/WITH LOCATION and initlocation utility(Thomas)
2816 Allow more SQL92 and/or PostgreSQL reserved words as column identifiers(Thomas)
2817 Augment support for SQL92 SET TIME ZONE...(Thomas)
2818 SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas)
2819 Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas)
2820 Enable SET TIME ZONE using TZ environment variable(Thomas)
2821 Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas)
2822 Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO
2823 frontend library initialization environment variables(Thomas)
2824 Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas)
2825 Add pg_description table for info on tables, columns, operators, types, and
2827 Increase 16 char limit on system table/index names to 32 characters(Bruce)
2828 Rename system indexes(Bruce)
2829 Add 'GERMAN' option to SET DATESTYLE(Thomas)
2830 Define an "ISO-style" timespan output format with "hh:mm:ss" fields(Thomas)
2831 Allow fractional values for delta times (e.g. '2.5 days')(Thomas)
2832 Validate numeric input more carefully for delta times(Thomas)
2833 Implement day of year as possible input to date_part()(Thomas)
2834 Define timespan_finite() and text_timespan() functions(Thomas)
2835 Remove archive stuff(Bruce)
2836 Allow for a pg_password authentication database that is separate from
2837 the system password file(Todd)
2838 Dump ACLs, GRANT, REVOKE permissions(Matt)
2839 Define text, varchar, and bpchar string length functions(Thomas)
2840 Fix Query handling for inheritance, and cost computations(Bruce)
2841 Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas)
2842 Allow NOT, IS NULL, IS NOT NULL in constraints(Thomas)
2843 Implement UNIONs for SELECT(Bruce)
2844 Add UNION, GROUP, DISTINCT to INSERT(Bruce)
2845 varchar() stores only necessary bytes on disk(Bruce)
2846 Fix for BLOBs(Peter)
2847 Mega-Patch for JDBC...see README_6.3 for list of changes(Peter)
2848 Remove unused "option" from PQconnectdb()
2849 New LOCK command and lock manual page describing deadlocks(Bruce)
2850 Add new psql \da, \dd, \df, \do, \dS, and \dT commands(Bruce)
2851 Enhance psql \z to show sequences(Bruce)
2852 Show NOT NULL and DEFAULT in psql \d table(Bruce)
2853 New psql .psqlrc file start-up(Andrew)
2854 Modify sample start-up script in contrib/linux to show syslog(Thomas)
2855 New types for IP and MAC addresses in contrib/ip_and_mac(TomH)
2856 Unix system time conversions with date/time types in contrib/unixdate(Thomas)
2857 Update of contrib stuff(Massimo)
2858 Add Unix socket support to DBD::Pg(Goran)
2859 New python interface (PyGreSQL 2.0)(D'Arcy)
2860 New frontend/backend protocol has a version number, network byte order(Phil)
2861 Security features in pg_hba.conf enhanced and documented, many cleanups(Phil)
2862 CHAR() now faster access than VARCHAR() or TEXT
2863 ecpg embedded SQL preprocessor
2864 Reduce system column overhead(Vadmin)
2865 Remove pg_time table(Vadim)
2866 Add pg_type attribute to identify types that need length (bpchar, varchar)
2867 Add report of offending line when COPY command fails
2868 Allow VIEW permissions to be set separately from the underlying tables.
2869 For security, use GRANT/REVOKE on views as appropriate(Jan)
2870 Tables now have no default GRANT SELECT TO PUBLIC. You must
2871 explicitly grant such permissions.
2872 Clean up tutorial examples(Darren)
2876 Add new html development tools, and flow chart in /tools/backend
2877 Fix for SCO compiles
2878 Stratus computer port Robert Gillies
2879 Added support for shlib for BSD44_derived & i386_solaris
2880 Make configure more automated(Brook)
2881 Add script to check regression test results
2882 Break parser functions into smaller files, group together(Bruce)
2883 Rename heap_create to heap_create_and_catalog, rename heap_creatr
2884 to heap_create()(Bruce)
2885 Sparc/Linux patch for locking(TomS)
2886 Remove PORTNAME and reorganize port-specific stuff(Marc)
2887 Add optimizer README file(Bruce)
2888 Remove some recursion in optimizer and clean up some code there(Bruce)
2889 Fix for NetBSD locking(Henry)
2890 Fix for libptcl make(Tatsuo)
2892 Change IS TRUE, IS FALSE, ... to expressions using "=" rather than
2893 function calls to istrue() or isfalse() to allow optimization(Thomas)
2894 Various fixes NetBSD/Sparc related(TomH)
2895 Alpha linux locking(Travis,Ryan)
2896 Change elog(WARN) to elog(ERROR)(Bruce)
2897 FAQ for FreeBSD(Marc)
2898 Bring in the PostODBC source tree as part of our standard distribution(Marc)
2899 A minor patch for HP/UX 10 vs 9(Stan)
2900 New pg_attribute.atttypmod for type-specific info like varchar length(Bruce)
2901 Unixware patches(Billy)
2902 New i386 'lock' for spin lock asm(Billy)
2903 Support for multiplexed backends is removed
2904 Start an OpenBSD port
2907 Add string functions to regression suite(Thomas)
2908 Expand a few function names formerly truncated to 16 characters(Thomas)
2909 Remove un-needed malloc() calls and replace with palloc()(Bruce)
2911 ----------------------------------------------------------------------
2915 Release date: 1997-10-17
2917 6.2.1 is a bug-fix and usability release on 6.2.
2921 * Allow strings to span lines, per SQL92.
2923 * Include example trigger function for inserting user names on table
2926 This is a minor bug-fix release on 6.2. For upgrades from pre-6.2 systems,
2927 a full dump/reload is required. Refer to the 6.2 release notes for
2930 ----------------------------------------------------------------------
2932 Migration from version 6.2 to version 6.2.1
2934 This is a minor bug-fix release. A dump/reload is not required from
2935 version 6.2, but is required from any release prior to 6.2.
2937 In upgrading from version 6.2, if you choose to dump/reload you will find
2938 that avg(money) is now calculated correctly. All other bug fixes take
2939 effect upon updating the executables.
2941 Another way to avoid dump/reload is to use the following SQL command from
2942 "psql" to update the existing system table:
2944 update pg_aggregate set aggfinalfn = 'cash_div_flt8'
2945 where aggname = 'avg' and aggbasetype = 790;
2947 This will need to be done to every existing database, including template1.
2949 ----------------------------------------------------------------------
2953 Allow TIME and TYPE column names(Thomas)
2954 Allow larger range of true/false as boolean values(Thomas)
2955 Support output of "now" and "current"(Thomas)
2956 Handle DEFAULT with INSERT of NULL properly(Vadim)
2957 Fix for relation reference counts problem in buffer manager(Vadim)
2958 Allow strings to span lines, like ANSI(Thomas)
2959 Fix for backward cursor with ORDER BY(Vadim)
2960 Fix avg(cash) computation(Thomas)
2961 Fix for specifying a column twice in ORDER/GROUP BY(Vadim)
2962 Documented new libpq function to return affected rows, PQcmdTuples(Bruce)
2963 Trigger function for inserting user names for INSERT/UPDATE(Brook Milligan)
2966 ----------------------------------------------------------------------
2970 Release date: 1997-10-02
2972 A dump/restore is required for those wishing to migrate data from previous
2973 releases of PostgreSQL.
2975 ----------------------------------------------------------------------
2977 Migration from version 6.1 to version 6.2
2979 This migration requires a complete dump of the 6.1 database and a restore
2980 of the database in 6.2.
2982 Note that the "pg_dump" and "pg_dumpall" utility from 6.2 should be used
2983 to dump the 6.1 database.
2985 ----------------------------------------------------------------------
2987 Migration from version 1.x to version 6.2
2989 Those migrating from earlier 1.* releases should first upgrade to 1.09
2990 because the COPY output format was improved from the 1.02 release.
2992 ----------------------------------------------------------------------
2998 Fix problems with pg_dump for inheritance, sequences, archive tables(Bruce)
2999 Fix compile errors on overflow due to shifts, unsigned, and bad prototypes
3000 from Solaris(Diab Jerius)
3001 Fix bugs in geometric line arithmetic (bad intersection calculations)(Thomas)
3002 Check for geometric intersections at endpoints to avoid rounding ugliness(Thomas)
3003 Catch non-functional delete attempts(Vadim)
3004 Change time function names to be more consistent(Michael Reifenberg)
3005 Check for zero divides(Michael Reifenberg)
3006 Fix very old bug which made tuples changed/inserted by a commnd
3007 visible to the command itself (so we had multiple update of
3008 updated tuples, etc)(Vadim)
3009 Fix for SELECT null, 'fail' FROM pg_am (Patrick)
3010 SELECT NULL as EMPTY_FIELD now allowed(Patrick)
3011 Remove un-needed signal stuff from contrib/pginterface
3012 Fix OR (where x != 1 or x isnull didn't return tuples with x NULL) (Vadim)
3013 Fix time_cmp function (Vadim)
3014 Fix handling of functions with non-attribute first argument in
3015 WHERE clauses (Vadim)
3016 Fix GROUP BY when order of entries is different from order
3017 in target list (Vadim)
3018 Fix pg_dump for aggregates without sfunc1 (Vadim)
3022 Default genetic optimizer GEQO parameter is now 8(Bruce)
3023 Allow use parameters in target list having aggregates in functions(Vadim)
3024 Added JDBC driver as an interface(Adrian & Peter)
3026 Return number of tuples inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim)
3027 Triggers implemented with CREATE TRIGGER (SQL3)(Vadim)
3028 SPI (Server Programming Interface) allows execution of queries inside
3030 NOT NULL implemented (SQL92)(Robson Paniago de Miranda)
3031 Include reserved words for string handling, outer joins, and unions(Thomas)
3032 Implement extended comments ("/* ... */") using exclusive states(Thomas)
3033 Add "//" single-line comments(Bruce)
3034 Remove some restrictions on characters in operator names(Thomas)
3035 DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim & Thomas)
3036 Add text concatenation operator and function (SQL92)(Thomas)
3037 Support WITH TIME ZONE syntax (SQL92)(Thomas)
3038 Support INTERVAL unit TO unit syntax (SQL92)(Thomas)
3039 Define types DOUBLE PRECISION, INTERVAL, CHARACTER,
3040 and CHARACTER VARYING (SQL92)(Thomas)
3041 Define type FLOAT(p) and rudimentary DECIMAL(p,s), NUMERIC(p,s) (SQL92)(Thomas)
3042 Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM() (SQL92)(Thomas)
3043 Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP (SQL92)(Thomas)
3044 Add syntax and warnings for UNION, HAVING, INNER and OUTER JOIN (SQL92)(Thomas)
3045 Add more reserved words, mostly for SQL92 compliance(Thomas)
3046 Allow hh:mm:ss time entry for timespan/reltime types(Thomas)
3047 Add center() routines for lseg, path, polygon(Thomas)
3048 Add distance() routines for circle-polygon, polygon-polygon(Thomas)
3049 Check explicitly for points and polygons contained within polygons
3050 using an axis-crossing algorithm(Thomas)
3051 Add routine to convert circle-box(Thomas)
3052 Merge conflicting operators for different geometric data types(Thomas)
3053 Replace distance operator "<===>" with "<->"(Thomas)
3054 Replace "above" operator "!^" with ">^" and "below" operator "!|" with "<^"(Thomas)
3055 Add routines for text trimming on both ends, substring, and string position(Thomas)
3056 Added conversion routines circle(box) and poly(circle)(Thomas)
3057 Allow internal sorts to be stored in memory rather than in files(Bruce & Vadim)
3058 Allow functions and operators on internally-identical types to succeed(Bruce)
3059 Speed up backend start-up after profiling analysis(Bruce)
3060 Inline frequently called functions for performance(Bruce)
3061 Reduce open() calls(Bruce)
3062 psql: Add PAGER for \h and \?,\C fix
3063 Fix for psql pager when no tty(Bruce)
3064 New entab utility(Bruce)
3065 General trigger functions for referential integrity (Vadim)
3066 General trigger functions for time travel (Vadim)
3067 General trigger functions for AUTOINCREMENT/IDENTITY feature (Vadim)
3068 MOVE implementation (Vadim)
3072 HPUX 10 patches (Vladimir Turin)
3073 Added SCO support, (Daniel Harris)
3074 mkLinux patches (Tatsuo Ishii)
3075 Change geometric box terminology from "length" to "width"(Thomas)
3076 Deprecate temporary unstored slope fields in geometric code(Thomas)
3077 Remove restart instructions from INSTALL(Bruce)
3078 Look in /usr/ucb first for install(Bruce)
3079 Fix c++ copy example code(Thomas)
3080 Add -o to psql manual page(Bruce)
3081 Prevent relname unallocated string length from being copied into database(Bruce)
3082 Cleanup for NAMEDATALEN use(Bruce)
3083 Fix pg_proc names over 15 chars in output(Bruce)
3084 Add strNcpy() function(Bruce)
3085 remove some (void) casts that are unnecessary(Bruce)
3086 new interfaces directory(Marc)
3087 Replace fopen() calls with calls to fd.c functions(Bruce)
3088 Make functions static where possible(Bruce)
3089 enclose unused functions in #ifdef NOT_USED(Bruce)
3090 Remove call to difftime() in timestamp support to fix SunOS(Bruce & Thomas)
3091 Changes for Digital Unix
3092 Portability fix for pg_dumpall(Bruce)
3093 Rename pg_attribute.attnvals to attdispersion(Bruce)
3094 "intro/unix" manual page now "pgintro"(Bruce)
3095 "built-in" manual page now "pgbuiltin"(Bruce)
3096 "drop" manual page now "drop_table"(Bruce)
3097 Add "create_trigger", "drop_trigger" manual pages(Thomas)
3098 Add constraints regression test(Vadim & Thomas)
3099 Add comments syntax regression test(Thomas)
3100 Add PGINDENT and support program(Bruce)
3101 Massive commit to run PGINDENT on all *.c and *.h files(Bruce)
3102 Files moved to /src/tools directory(Bruce)
3103 SPI and Trigger programming guides (Vadim & D'Arcy)
3105 ----------------------------------------------------------------------
3109 Release date: 1997-07-22
3111 ----------------------------------------------------------------------
3113 Migration from version 6.1 to version 6.1.1
3115 This is a minor bug-fix release. A dump/reload is not required from
3116 version 6.1, but is required from any release prior to 6.1. Refer to the
3117 release notes for 6.1 for more details.
3119 ----------------------------------------------------------------------
3123 fix for SET with options (Thomas)
3124 allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce)
3125 new psql \connect option allows changing usernames without changing databases
3126 fix for initdb --debug option(Yoshihiko Ichikawa))
3127 lextest cleanup(Bruce)
3129 fix date/time month boundary arithmetic(Thomas)
3130 fix timezone daylight handling for some ports(Thomas, Bruce, Tatsuo)
3131 timestamp overhauled to use standard functions(Thomas)
3132 other code cleanup in date/time routines(Thomas)
3133 psql's \d now case-insensitive(Bruce)
3134 psql's backslash commands can now have trailing semicolon(Bruce)
3135 fix memory leak in psql when using \g(Bruce)
3136 major fix for endian handling of communication to server(Thomas, Tatsuo)
3137 Fix for Solaris assembler and include files(Yoshihiko Ichikawa)
3138 allow underscores in usernames(Bruce)
3139 pg_dumpall now returns proper status, portability fix(Bruce)
3142 ----------------------------------------------------------------------
3146 Release date: 1997-06-08
3148 The regression tests have been adapted and extensively modified for the
3149 6.1 release of PostgreSQL.
3151 Three new data types (datetime, timespan, and circle) have been added to
3152 the native set of PostgreSQL types. Points, boxes, paths, and polygons
3153 have had their output formats made consistent across the data types. The
3154 polygon output in misc.out has only been spot-checked for correctness
3155 relative to the original regression output.
3157 PostgreSQL 6.1 introduces a new, alternate optimizer which uses genetic
3158 algorithms. These algorithms introduce a random behavior in the ordering
3159 of query results when the query contains multiple qualifiers or multiple
3160 tables (giving the optimizer a choice on order of evaluation). Several
3161 regression tests have been modified to explicitly order the results, and
3162 hence are insensitive to optimizer choices. A few regression tests are for
3163 data types which are inherently unordered (e.g. points and time intervals)
3164 and tests involving those types are explicitly bracketed with "set geqo to
3165 'off'" and "reset geqo".
3167 The interpretation of array specifiers (the curly braces around atomic
3168 values) appears to have changed sometime after the original regression
3169 tests were generated. The current "./expected/*.out" files reflect this
3170 new interpretation, which may not be correct!
3172 The float8 regression test fails on at least some platforms. This is due
3173 to differences in implementations of pow() and exp() and the signaling
3174 mechanisms used for overflow and underflow conditions.
3176 The "random" results in the random test should cause the "random" test to
3177 be "failed", since the regression tests are evaluated using a simple diff.
3178 However, "random" does not seem to produce random results on my test
3179 machine (Linux/gcc/i686).
3181 ----------------------------------------------------------------------
3183 Migration to version 6.1
3185 This migration requires a complete dump of the 6.0 database and a restore
3186 of the database in 6.1.
3188 Those migrating from earlier 1.* releases should first upgrade to 1.09
3189 because the COPY output format was improved from the 1.02 release.
3191 ----------------------------------------------------------------------
3197 packet length checking in library routines
3198 lock manager priority patch
3199 check for under/over flow of float8(Bruce)
3200 multi-table join fix(Vadim)
3201 SIGPIPE crash fix(Darren)
3202 large object fixes(Sven)
3203 allow btree indexes to handle NULLs(Vadim)
3204 timezone fixes(D'Arcy)
3205 select SUM(x) can return NULL on no rows(Thomas)
3206 internal optimizer, executor bug fixes(Vadim)
3207 fix problem where inner loop in < or <= has no rows(Vadim)
3208 prevent re-commuting join index clauses(Vadim)
3209 fix join clauses for multiple tables(Vadim)
3210 fix hash, hashjoin for arrays(Vadim)
3211 fix btree for abstime type(Vadim)
3212 large object fixes(Raymond)
3213 fix buffer leak in hash indexes (Vadim)
3214 fix rtree for use in inner scan (Vadim)
3215 fix gist for use in inner scan, cleanups (Vadim, Andrea)
3216 avoid unnecessary local buffers allocation (Vadim, Massimo)
3217 fix local buffers leak in transaction aborts (Vadim)
3218 fix file manager memmory leaks, cleanups (Vadim, Massimo)
3219 fix storage manager memmory leaks (Vadim)
3220 fix btree duplicates handling (Vadim)
3221 fix deleted tuples re-incarnation caused by vacuum (Vadim)
3222 fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce)
3223 many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor)
3227 attribute optimization statistics(Bruce)
3228 much faster new btree bulk load code(Paul)
3229 BTREE UNIQUE added to bulk load code(Vadim)
3230 new lock debug code(Massimo)
3231 massive changes to libpg++(Leo)
3232 new GEQO optimizer speeds table multi-table optimization(Martin)
3233 new WARN message for non-unique insert into unique key(Marc)
3234 update x=-3, no spaces, now valid(Bruce)
3235 remove case-sensitive identifier handling(Bruce,Thomas,Dan)
3236 debug backend now pretty-prints tree(Darren)
3237 new Oracle character functions(Edmund)
3238 new plaintext password functions(Dan)
3239 no such class or insufficient privilege changed to distinct messages(Dan)
3240 new ANSI timestamp function(Dan)
3241 new ANSI Time and Date types (Thomas)
3242 move large chunks of data in backend(Martin)
3243 multi-column btree indexes(Vadim)
3244 new SET var TO value command(Martin)
3245 update transaction status on reads(Dan)
3246 new locale settings for character types(Oleg)
3247 new SEQUENCE serial number generator(Vadim)
3248 GROUP BY function now possible(Vadim)
3249 re-organize regression test(Thomas,Marc)
3250 new optimizer operation weights(Vadim)
3251 new psql \z grant/permit option(Marc)
3252 new MONEY data type(D'Arcy,Thomas)
3253 tcp socket communication speed improved(Vadim)
3254 new VACUUM option for attribute statistics, and for certain columns (Vadim)
3255 many geometric type improvements(Thomas,Keith)
3256 additional regression tests(Thomas)
3257 new datestyle variable(Thomas,Vadim,Martin)
3258 more comparison operators for sorting types(Thomas)
3259 new conversion functions(Thomas)
3260 new more compact btree format(Vadim)
3261 allow pg_dumpall to preserve database ownership(Bruce)
3262 new SET GEQO=# and R_PLANS variable(Vadim)
3263 old (!GEQO) optimizer can use right-sided plans (Vadim)
3264 typechecking improvement in SQL parser(Bruce)
3265 new SET, SHOW, RESET commands(Thomas,Vadim)
3266 new \connect database USER option
3267 new destroydb -i option (Igor)
3268 new \dt and \di psql commands (Darren)
3269 SELECT "\n" now escapes newline (A. Duursma)
3270 new geometry conversion functions from old format (Thomas)
3274 new configuration script(Marc)
3275 readline configuration option added(Marc)
3276 OS-specific configuration options removed(Marc)
3277 new OS-specific template files(Marc)
3278 no more need to edit Makefile.global(Marc)
3279 re-arrange include files(Marc)
3280 nextstep patches (Gregor Hoffleit)
3281 removed WIN32-specific code(Bruce)
3282 removed postmaster -e option, now only postgres -e option (Bruce)
3283 merge duplicate library code in front/backends(Martin)
3284 now works with eBones, international Kerberos(Jun)
3285 more shared library support
3286 c++ include file cleanup(Bruce)
3287 warn about buggy flex(Bruce)
3288 DG-UX, Ultrix, Irix, AIX portability fixes
3290 ----------------------------------------------------------------------
3294 Release date: 1997-01-29
3296 A dump/restore is required for those wishing to migrate data from previous
3297 releases of PostgreSQL.
3299 ----------------------------------------------------------------------
3301 Migration from version 1.09 to version 6.0
3303 This migration requires a complete dump of the 1.09 database and a restore
3304 of the database in 6.0.
3306 ----------------------------------------------------------------------
3308 Migration from pre-1.09 to version 6.0
3310 Those migrating from earlier 1.* releases should first upgrade to 1.09
3311 because the COPY output format was improved from the 1.02 release.
3313 ----------------------------------------------------------------------
3319 ALTER TABLE bug - running postgress process needs to re-read table definition
3320 Allow vacuum to be run on one table or entire database(Bruce)
3322 Fix array over-runs of memory writes(Kurt)
3323 Fix elusive btree range/non-range bug(Dan)
3324 Fix for hash indexes on some types like time and date
3325 Fix for pg_log size explosion
3326 Fix permissions on lo_export()(Bruce)
3327 Fix unitialized reads of memory(Kurt)
3328 Fixed ALTER TABLE ... char(3) bug(Bruce)
3329 Fixed a few small memory leaks
3330 Fixed EXPLAIN handling of options and changed full_path option name
3331 Fixed output of group acl permissions
3332 Memory leaks (hunt and destroy with tools like Purify(Kurt)
3333 Minor improvements to rules system
3335 New asserts for run-checking
3336 Overhauled parser/analyze code to properly report errors and increase speed
3337 Pg_dump -d now handles NULL's properly(Bruce)
3338 Prevent SELECT NULL from crashing server (Bruce)
3339 Properly report errors when INSERT ... SELECT columns did not match
3340 Properly report errors when insert column names were not correct
3341 Psql \g filename now works(Bruce)
3342 Psql fixed problem with multiple statements on one line with multiple outputs
3343 Removed duplicate system oid's
3344 SELECT * INTO TABLE . GROUP/ORDER BY gives unlink error if table exists(Bruce)
3345 Several fixes for queries that crashed the backend
3346 Starting quote in insert string errors(Bruce)
3347 Submitting an empty query now returns empty status, not just " " query(Bruce)
3351 Add EXPLAIN manual page(Bruce)
3352 Add UNIQUE index capability(Dan)
3353 Add hostname/user level access control rather than just hostname and user
3354 Add synonym of != for <>(Bruce)
3355 Allow "select oid,* from table"
3356 Allow BY,ORDER BY to specify columns by number, or by non-alias table.column(Bruce)
3357 Allow COPY from the frontend(Bryan)
3358 Allow GROUP BY to use alias column name(Bruce)
3359 Allow actual compression, not just reuse on the same page(Vadim)
3360 Allow installation-configuration option to auto-add all local users(Bryan)
3361 Allow libpq to distinguish between text value '' and null(Bruce)
3362 Allow non-postgres users with createdb privs to destroydb's
3363 Allow restriction on who can create C functions(Bryan)
3364 Allow restriction on who can do backend COPY(Bryan)
3365 Can shrink tables, pg_time and pg_log(Vadim & Erich)
3366 Change debug level 2 to print queries only, changed debug heading layout(Bruce)
3367 Change default decimal constant representation from float4 to float8(Bruce)
3368 European date format now set when postmaster is started
3369 Execute lowercase function names if not found with exact case
3370 Fixes for aggregate/GROUP processing, allow 'select sum(func(x),sum(x+y) from z'
3371 Gist now included in the distrubution(Marc)
3372 Idend authentication of local users(Bryan)
3373 Implement BETWEEN qualifier(Bruce)
3374 Implement IN qualifier(Bruce)
3375 Libpq has PQgetisnull()(Bruce)
3376 Libpq++ improvements
3377 New options to initdb(Bryan)
3378 Pg_dump allow dump of oid's(Bruce)
3379 Pg_dump create indexes after tables are loaded for speed(Bruce)
3380 Pg_dumpall dumps all databases, and the user table
3381 Pginterface additions for NULL values(Bruce)
3382 Prevent postmaster from being run as root
3383 Psql \h and \? is now readable(Bruce)
3384 Psql allow backslashed, semicolons anywhere on the line(Bruce)
3385 Psql changed command prompt for lines in query or in quotes(Bruce)
3386 Psql char(3) now displays as (bp)char in \d output(Bruce)
3387 Psql return code now more accurate(Bryan?)
3388 Psql updated help syntax(Bruce)
3389 Re-visit and fix vacuum(Vadim)
3390 Reduce size of regression diffs, remove timezone name difference(Bruce)
3391 Remove compile-time parameters to enable binary distributions(Bryan)
3392 Reverse meaning of HBA masks(Bryan)
3393 Secure Authentication of local users(Bryan)
3394 Speed up vacuum(Vadim)
3395 Vacuum now had VERBOSE option(Bruce)
3399 All functions now have prototypes that are compared against the calls
3400 Allow asserts to be disabled easly from Makefile.global(Bruce)
3401 Change oid constants used in code to #define names
3402 Decoupled sparc and solaris defines(Kurt)
3403 Gcc -Wall compiles cleanly with warnings only from unfixable constructs
3404 Major include file reorganization/reduction(Marc)
3405 Make now stops on compile failure(Bryan)
3406 Makefile restructuring(Bryan, Marc)
3407 Merge bsdi_2_1 to bsdi(Bruce)
3408 Monitor program removed
3409 Name change from Postgres95 to PostgreSQL
3410 New config.h file(Marc, Bryan)
3411 PG_VERSION now set to 6.0 and used by postmaster
3412 Portability additions, including Ultrix, DG/UX, AIX, and Solaris
3413 Reduced the number of #define's, centeralized #define's
3414 Remove duplicate OIDS in system tables(Dan)
3415 Remove duplicate system catalog info or report mismatches(Dan)
3416 Removed many os-specific #define's
3417 Restructured object file generation/location(Bryan, Marc)
3418 Restructured port-specific file locations(Bryan, Marc)
3419 Unused/uninialized variables corrected
3421 ----------------------------------------------------------------------
3425 Release date: 1996-11-04
3427 Sorry, we didn't keep track of changes from 1.02 to 1.09. Some of the
3428 changes listed in 6.0 were actually included in the 1.02.1 to 1.09
3431 ----------------------------------------------------------------------
3435 Release date: 1996-08-01
3437 ----------------------------------------------------------------------
3439 Migration from version 1.02 to version 1.02.1
3441 Here is a new migration file for 1.02.1. It includes the 'copy' change and
3442 a script to convert old ASCII files.
3444 Note: The following notes are for the benefit of users who want to
3445 migrate databases from Postgres95 1.01 and 1.02 to Postgres95 1.02.1.
3447 If you are starting afresh with Postgres95 1.02.1 and do not need to
3448 migrate old databases, you do not need to read any further.
3450 In order to upgrade older Postgres95 version 1.01 or 1.02 databases to
3451 version 1.02.1, the following steps are required:
3456 databases. This is done by running the new 1.02.1 server against your
3457 own 1.01 or 1.02 database and applying the queries attached at the end
3458 of the file. This can be done easily through "psql". If your 1.01 or
3459 1.02 database is named testdb and you have cut the commands from the
3460 end of this file and saved them in "addfunc.sql":
3462 % psql testdb -f addfunc.sql
3464 Those upgrading 1.02 databases will get a warning when executing the
3465 last two statements in the file because they are already present in
3466 1.02. This is not a cause for concern.
3468 ----------------------------------------------------------------------
3470 Dump/Reload Procedure
3472 If you are trying to reload a pg_dump or text-mode, copy tablename to
3473 stdout generated with a previous version, you will need to run the
3474 attached "sed" script on the ASCII file before loading it into the
3475 database. The old format used '.' as end-of-data, while '\.' is now the
3476 end-of-data marker. Also, empty strings are now loaded in as '' rather
3477 than NULL. See the copy manual page for full details.
3479 sed 's/^\.$/\\./g' <in_file >out_file
3481 If you are loading an older binary copy or non-stdout copy, there is no
3482 end-of-data character, and hence no conversion necessary.
3484 -- following lines added by agc to reflect the case-insensitive
3485 -- regexp searching for varchar (in 1.02), and bpchar (in 1.02.1)
3486 create operator ~* (leftarg = bpchar, rightarg = text, procedure = texticregexeq);
3487 create operator !~* (leftarg = bpchar, rightarg = text, procedure = texticregexne);
3488 create operator ~* (leftarg = varchar, rightarg = text, procedure = texticregexeq);
3489 create operator !~* (leftarg = varchar, rightarg = text, procedure = texticregexne);
3491 ----------------------------------------------------------------------
3495 Source code maintenance and development
3496 * worldwide team of volunteers
3497 * the source tree now in CVS at ftp.ki.net
3500 * psql (and underlying libpq library) now has many more options for
3501 formatting output, including HTML
3502 * pg_dump now output the schema and/or the data, with many fixes to
3503 enhance completeness.
3504 * psql used in place of monitor in administration shell scripts.
3505 monitor to be depreciated in next release.
3506 * date/time functions enhanced
3507 * NULL insert/update/comparison fixed/enhanced
3508 * TCL/TK lib and shell fixed to work with both tck7.4/tk4.0 and tcl7.5/tk4.1
3510 Bug Fixes (almost too numerous to mention)
3512 * storage management
3513 * check for NULL pointer before dereferencing
3517 * added SolarisX86 port
3518 * added BSDI 2.1 port
3521 ----------------------------------------------------------------------
3525 Release date: 1996-02-23
3527 ----------------------------------------------------------------------
3529 Migration from version 1.0 to version 1.01
3531 The following notes are for the benefit of users who want to migrate
3532 databases from Postgres95 1.0 to Postgres95 1.01.
3534 If you are starting afresh with Postgres95 1.01 and do not need to migrate
3535 old databases, you do not need to read any further.
3537 In order to Postgres95 version 1.01 with databases created with Postgres95
3538 version 1.0, the following steps are required:
3546 data directory (typically the value of your $PGDATA).
3547 "src/libpq/pg_hba" shows an example syntax.
3554 in "src/Makefile.global"
3556 Note that host-based authentication is turned on by default, and
3557 if you do not take steps A or B above, the out-of-the-box 1.01
3558 will not allow you to connect to 1.0 databases.
3563 your existing $PGDATA directory.
3566 path up so that 1.01 binaries are being used.
3573 This is done by running the new 1.01 server against your own 1.0
3574 database and applying the queries attached and saving in the file
3575 1.0_to_1.01.sql. This can be done easily through "psql". If your 1.0
3576 database is name testdb:
3578 % psql testdb -f 1.0_to_1.01.sql
3580 and then execute the following commands (cut and paste from here):
3582 -- add builtin functions that are new to 1.01
3584 create function int4eqoid (int4, oid) returns bool as 'foo'
3585 language 'internal';
3586 create function oideqint4 (oid, int4) returns bool as 'foo'
3587 language 'internal';
3588 create function char2icregexeq (char2, text) returns bool as 'foo'
3589 language 'internal';
3590 create function char2icregexne (char2, text) returns bool as 'foo'
3591 language 'internal';
3592 create function char4icregexeq (char4, text) returns bool as 'foo'
3593 language 'internal';
3594 create function char4icregexne (char4, text) returns bool as 'foo'
3595 language 'internal';
3596 create function char8icregexeq (char8, text) returns bool as 'foo'
3597 language 'internal';
3598 create function char8icregexne (char8, text) returns bool as 'foo'
3599 language 'internal';
3600 create function char16icregexeq (char16, text) returns bool as 'foo'
3601 language 'internal';
3602 create function char16icregexne (char16, text) returns bool as 'foo'
3603 language 'internal';
3604 create function texticregexeq (text, text) returns bool as 'foo'
3605 language 'internal';
3606 create function texticregexne (text, text) returns bool as 'foo'
3607 language 'internal';
3609 -- add builtin functions that are new to 1.01
3611 create operator = (leftarg = int4, rightarg = oid, procedure = int4eqoid);
3612 create operator = (leftarg = oid, rightarg = int4, procedure = oideqint4);
3613 create operator ~* (leftarg = char2, rightarg = text, procedure = char2icregexeq);
3614 create operator !~* (leftarg = char2, rightarg = text, procedure = char2icregexne);
3615 create operator ~* (leftarg = char4, rightarg = text, procedure = char4icregexeq);
3616 create operator !~* (leftarg = char4, rightarg = text, procedure = char4icregexne);
3617 create operator ~* (leftarg = char8, rightarg = text, procedure = char8icregexeq);
3618 create operator !~* (leftarg = char8, rightarg = text, procedure = char8icregexne);
3619 create operator ~* (leftarg = char16, rightarg = text, procedure = char16icregexeq);
3620 create operator !~* (leftarg = char16, rightarg = text, procedure = char16icregexne);
3621 create operator ~* (leftarg = text, rightarg = text, procedure = texticregexeq);
3622 create operator !~* (leftarg = text, rightarg = text, procedure = texticregexne);
3624 ----------------------------------------------------------------------
3629 * 1.01 is backwards compatible with 1.0 database provided the user
3630 follow the steps outlined in the MIGRATION_from_1.0_to_1.01 file.
3631 If those steps are not taken, 1.01 is not compatible with 1.0 database.
3634 * added PQdisplayTuples() to libpq and changed monitor and psql to use it
3635 * added NeXT port (requires SysVIPC implementation)
3636 * added CAST .. AS ... syntax
3637 * added ASC and DESC keywords
3638 * added 'internal' as a possible language for CREATE FUNCTION
3639 internal functions are C functions which have been statically linked
3640 into the postgres backend.
3641 * a new type "name" has been added for system identifiers (table names,
3642 attribute names, etc.) This replaces the old char16 type. The
3643 of name is set by the NAMEDATALEN #define in src/Makefile.global
3644 * a readable reference manual that describes the query language.
3645 * added host-based access control. A configuration file ($PGDATA/pg_hba)
3646 is used to hold the configuration data. If host-based access control
3647 is not desired, comment out HBA=1 in src/Makefile.global.
3648 * changed regex handling to be uniform use of Henry Spencer's regex code
3649 regardless of platform. The regex code is included in the distribution
3650 * added functions and operators for case-insensitive regular expressions.
3651 The operators are ~* and !~*.
3652 * pg_dump uses COPY instead of SELECT loop for better performance
3655 * fixed an optimizer bug that was causing core dumps when
3656 functions calls were used in comparisons in the WHERE clause
3657 * changed all uses of getuid to geteuid so that effective uids are used
3658 * psql now returns non-zero status on errors when using -c
3659 * applied public patches 1-14
3661 ----------------------------------------------------------------------
3665 Release date: 1995-09-05
3667 ----------------------------------------------------------------------
3672 * The copyright of Postgres 1.0 has been loosened to be freely modifiable
3673 and modifiable for any purpose. Please read the COPYRIGHT file.
3674 Thanks to Professor Michael Stonebraker for making this possible.
3677 * date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using
3678 EUROPEAN STYLE). This follows SQL-92 specs.
3679 * "delimiters" is now a keyword
3682 * sql LIKE syntax has been added
3683 * copy command now takes an optional USING DELIMITER specification.
3684 delimiters can be any single-character string.
3685 * IRIX 5.3 port has been added.
3686 Thanks to Paul Walmsley and others.
3687 * updated pg_dump to work with new libpq
3688 * \d has been added psql
3689 Thanks to Keith Parks
3690 * regexp performance for architectures that use POSIX regex has been
3691 improved due to caching of precompiled patterns.
3692 Thanks to Alistair Crooks
3693 * a new version of libpq++
3694 Thanks to William Wanders
3697 * arbitrary userids can be specified in the createuser script
3698 * \c to connect to other databases in psql now works.
3699 * bad pg_proc entry for float4inc() is fixed
3700 * users with usecreatedb field set can now create databases without
3701 having to be usesuper
3702 * remove access control entries when the entry no longer has any
3704 * fixed non-portable datetimes implementation
3705 * added kerberos flags to the src/backend/Makefile
3706 * libpq now works with kerberos
3707 * typographic errors in the user manual have been corrected.
3708 * btrees with multiple index never worked, now we tell you they don't
3709 work when you try to use them
3711 ----------------------------------------------------------------------
3713 Postgres95 Release 0.03
3715 Release date: 1995-07-21
3717 ----------------------------------------------------------------------
3721 Incompatible changes:
3722 * BETA-0.3 IS INCOMPATIBLE WITH DATABASES CREATED WITH PREVIOUS VERSIONS
3723 (due to system catalog changes and indexing structure changes).
3724 * double-quote (") is deprecated as a quoting character for string literals;
3725 you need to convert them to single quotes (').
3726 * name of aggregates (eg. int4sum) are renamed in accordance with the
3727 SQL standard (eg. sum).
3728 * CHANGE ACL syntax is replaced by GRANT/REVOKE syntax.
3729 * float literals (eg. 3.14) are now of type float4 (instead of float8 in
3730 previous releases); you might have to do typecasting if you depend on it
3731 being of type float8. If you neglect to do the typecasting and you assign
3732 a float literal to a field of type float8, you may get incorrect values
3734 * LIBPQ has been totally revamped so that frontend applications
3735 can connect to multiple backends
3736 * the usesysid field in pg_user has been changed from int2 to int4 to
3737 allow wider range of Unix user ids.
3738 * the netbsd/freebsd/bsd o/s ports have been consolidated into a
3739 single BSD44_derived port. (thanks to Alistair Crooks)
3741 SQL standard-compliance (the following details changes that makes postgres95
3742 more compliant to the SQL-92 standard):
3743 * the following SQL types are now built-in: smallint, int(eger), float, real,
3744 char(N), varchar(N), date and time.
3746 The following are aliases to existing postgres types:
3748 integer, int -> int4
3749 float, real -> float4
3750 char(N) and varchar(N) are implemented as truncated text types. In
3751 addition, char(N) does blank-padding.
3752 * single-quote (') is used for quoting string literals; '' (in addition to
3753 \') is supported as means of inserting a single quote in a string
3754 * SQL standard aggregate names (MAX, MIN, AVG, SUM, COUNT) are used
3755 (Also, aggregates can now be overloaded, i.e. you can define your
3756 own MAX aggregate to take in a user-defined type.)
3757 * CHANGE ACL removed. GRANT/REVOKE syntax added.
3758 - Privileges can be given to a group using the "GROUP" keyword.
3760 GRANT SELECT ON foobar TO GROUP my_group;
3761 The keyword 'PUBLIC' is also supported to mean all users.
3763 Privileges can only be granted or revoked to one user or group
3766 "WITH GRANT OPTION" is not supported. Only class owners can change
3768 - The default access control is to to grant users readonly access.
3769 You must explicitly grant insert/update access to users. To change
3770 this, modify the line in
3771 src/backend/utils/acl.h
3772 that defines ACL_WORLD_DEFAULT
3775 * the bug where aggregates of empty tables were not run has been fixed. Now,
3776 aggregates run on empty tables will return the initial conditions of the
3777 aggregates. Thus, COUNT of an empty table will now properly return 0.
3778 MAX/MIN of an empty table will return a tuple of value NULL.
3779 * allow the use of \; inside the monitor
3780 * the LISTEN/NOTIFY asynchronous notification mechanism now work
3781 * NOTIFY in rule action bodies now work
3782 * hash indexes work, and access methods in general should perform better.
3783 creation of large btree indexes should be much faster. (thanks to Paul
3786 Other changes and enhancements:
3787 * addition of an EXPLAIN statement used for explaining the query execution
3788 plan (eg. "EXPLAIN SELECT * FROM EMP" prints out the execution plan for
3790 * WARN and NOTICE messages no longer have timestamps on them. To turn on
3791 timestamps of error messages, uncomment the line in
3792 src/backend/utils/elog.h:
3793 /* define ELOG_TIMESTAMPS */
3794 * On an access control violation, the message
3795 "Either no such class or insufficient privilege"
3796 will be given. This is the same message that is returned when
3797 a class is not found. This dissuades non-privileged users from
3798 guessing the existence of privileged classes.
3799 * some additional system catalog changes have been made that are not
3800 visible to the user.
3803 * The -oid option has been added to the "pg_result" tcl command.
3804 pg_result -oid returns oid of the last tuple inserted. If the
3805 last command was not an INSERT, then pg_result -oid returns "".
3806 * the large object interface is available as pg_lo* tcl commands:
3807 pg_lo_open, pg_lo_close, pg_lo_creat, etc.
3809 Portability enhancements and New Ports:
3810 * flex/lex problems have been cleared up. Now, you should be able to use
3811 flex instead of lex on any platforms. We no longer make assumptions of
3812 what lexer you use based on the platform you use.
3813 * The Linux-ELF port is now supported. Various configuration have been
3814 tested: The following configuration is known to work:
3815 kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24
3816 with everything in ELF format,
3819 * ipcclean added to the distribution
3820 ipcclean usually does not need to be run, but if your backend crashes
3821 and leaves shared memory segments hanging around, ipcclean will
3822 clean them up for you.
3825 * the user manual has been revised and libpq documentation added.
3827 ----------------------------------------------------------------------
3829 Postgres95 Release 0.02
3831 Release date: 1995-05-25
3833 ----------------------------------------------------------------------
3837 Incompatible changes:
3838 * The SQL statement for creating a database is 'CREATE DATABASE' instead
3839 of 'CREATEDB'. Similarly, dropping a database is 'DROP DATABASE' instead
3840 of 'DESTROYDB'. However, the names of the executables 'createdb' and
3841 'destroydb' remain the same.
3844 * pgperl - a Perl (4.036) interface to Postgres95
3845 * pg_dump - a utility for dumping out a postgres database into a
3846 script file containing query commands. The script files are in a ASCII
3847 format and can be used to reconstruct the database, even on other
3848 machines and other architectures. (Also good for converting
3849 a Postgres 4.2 database to Postgres95 database.)
3851 The following ports have been incorporated into postgres95-beta-0.02:
3852 * the NetBSD port by Alistair Crooks
3853 * the AIX port by Mike Tung
3854 * the Windows NT port by Jon Forrest (more stuff but not done yet)
3855 * the Linux ELF port by Brian Gallew
3857 The following bugs have been fixed in postgres95-beta-0.02:
3858 * new lines not escaped in COPY OUT and problem with COPY OUT when first
3860 * cannot type return to use the default user id in createuser
3861 * SELECT DISTINCT on big tables crashes
3862 * Linux installation problems
3863 * monitor doesn't allow use of 'localhost' as PGHOST
3864 * psql core dumps when doing \c or \l
3865 * the "pgtclsh" target missing from src/bin/pgtclsh/Makefile
3866 * libpgtcl has a hard-wired default port number
3867 * SELECT DISTINCT INTO TABLE hangs
3868 * CREATE TYPE doesn't accept 'variable' as the internallength
3869 * wrong result using more than 1 aggregate in a SELECT
3871 ----------------------------------------------------------------------
3873 Postgres95 Release 0.01
3875 Release date: 1995-05-01