2 $Header: /cvsroot/pgsql/doc/src/sgml/release.sgml,v 1.166 2002/11/23 02:41:03 tgl Exp $
5 <appendix id="release">
6 <title>Release Notes</title>
8 <sect1 id="release-devel">
9 <title>7.4 Development Branch</title>
12 Below is a subset of the changes that have gone into the
13 development branch of PostgreSQL since version 7.3. For a complete
14 list of changes, consult the CVS logs.
18 Developers: When you add a feature, mention it here. This avoids
19 lossiness when digging out the information from the CVS logs, and
20 furthermore it advertises your feature to external parties at the
21 earliest possible moment.
23 CDATA means the content is "SGML-free", so you can write without
24 worries about funny characters.
26 <literallayout><![CDATA[
31 <sect1 id="release-7-3">
32 <title>Release 7.3</title>
35 <title>Release date</title>
36 <simpara>2002-11-??</simpara>
40 <title>Overview</title>
43 Major changes in this release:
50 Schemas allow users to create objects in separate namespaces,
51 so two people or applications can have tables with the same
52 name. There is also a public schema for shared tables.
53 Table/index creation can be restricted by removing permissions
60 <term>Drop Column</term>
63 PostgreSQL now supports the <literal>ALTER TABLE ... DROP
64 COLUMN</literal> functionality.
70 <term>Table Functions</term>
73 Functions returning multiple rows and/or multiple columns are
74 now much easier to use than before. You can call such a
75 <quote>table function</quote> in the <literal>SELECT</literal>
76 <literal>FROM</literal> clause, treating its output like a
77 table. Also, <application>PL/pgSQL</application> functions can
84 <term>Prepared Queries</term>
87 PostgreSQL now supports prepared queries, for improved
94 <term>Dependency Tracking</term>
97 PostgreSQL now records object dependencies, which allows
98 improvements in many areas. <command>DROP</command>
99 statements now take either <literal>CASCADE</> or
100 <literal>RESTRICT</> to control whether dependent objects are
107 <term>Privileges</term>
110 Functions and procedural languages now have privileges, and
111 functions can be defined to run with the privileges of their
118 <term>Internationalization</term>
121 Both multibyte and locale support are now always enabled.
130 A variety of logging options have been enhanced.
136 <term>Interfaces</term>
139 A large number of interfaces have been moved to <ulink
140 url="http://gborg.postgresql.org">http://gborg.postgresql.org</>
141 where they can be developed and released independently.
147 <term>Functions/Identifiers</term>
150 By default, functions can now take up to 32 parameters, and
151 identifiers can be up to 63 bytes long. Also, <literal>OPAQUE</>
152 is now deprecated: there are specific <quote>pseudo-datatypes</>
153 to represent each of the former meanings of <literal>OPAQUE</>
154 in function argument and result types.
164 <title>Migration to version 7.3</title>
167 A dump/restore using <application>pg_dump</> is required for those
168 wishing to migrate data from any previous release. If your
169 application examines the system catalogs, additional changes will
170 be required due to the introduction of schemas in 7.3; for more
171 information, see: <ulink
172 url="http://www.ca.postgresql.org/docs/momjian/upgrade_tips_7.3">
173 http://www.ca.postgresql.org/docs/momjian/upgrade_tips_7.3</>.
177 Observe the following incompatibilities:
182 Pre-6.3 clients are no longer supported.
188 <filename>pg_hba.conf</filename> now has a column for the user
189 name and additional features. Existing files need to be
196 Several <filename>postgresql.conf</filename> logging parameters
203 <literal>LIMIT #,#</literal> has been disabled; use
204 <literal>LIMIT # OFFSET #</literal>.
210 <command>INSERT</command> statements with column lists must
211 specify a value for each specified column. For example,
212 <literal>INSERT INTO tab (col1, col2) VALUES ('val1')</literal>
213 is now invalid. It's still allowed to supply fewer columns than
214 expected if the <command>INSERT</command> does not have a column list.
220 <type>serial</type> columns are no longer automatically
221 <literal>UNIQUE</>; thus, an index will not automatically be
228 A <command>SET</command> command inside an aborted transaction
235 <command>COPY</command> no longer considers missing trailing
236 columns to be null. All columns need to be specified.
237 (However, one may achieve a similar effect by specifying a
238 column list in the <command>COPY</command> command.)
244 The data type <type>timestamp</type> is now equivalent to
245 <type>timestamp without time zone</type>, instead of
246 <type>timestamp with time zone</type>.
252 Pre-7.3 databases loaded into 7.3 will not have the new object
253 dependencies for <type>serial</type> columns, unique
254 constraints, and foreign keys. See the directory
255 <filename>contrib/adddepend/</filename> for a detailed
256 description and a script that will add such dependencies.
262 An empty string (<literal>''</literal>) is no longer allowed as
263 the input into an integer field. Formerly, it was silently
274 <title>Changes</title>
277 <title>Server Operation</title>
279 Add pg_locks view to show locks (Neil)
280 Security fixes for password negotiation memory allocation (Neil)
281 Remove support for version 0 FE/BE protocol (PostgreSQL 6.2 and
283 Reserve the last few backend slots for superusers, add parameter
284 superuser_reserved_connections to control this (Nigel J. Andrews)
289 <title>Performance</title>
291 Improve startup by calling localtime() only once (Tom)
292 Cache system catalog information in flat files for faster startup
294 Improve caching of index information (Tom)
295 Optimizer improvements (Tom, Fernando Nasser)
296 Catalog caches now store failed lookups (Tom)
297 Hash function improvements (Neil)
298 Improve performance of query tokenization and network handling (Peter)
299 Speed improvement for large object restore (Mario Weilguni)
300 Mark expired index entries on first lookup, saving later heap fetches
302 Avoid excessive NULL bitmap padding (Manfred Koizar)
303 Add BSD-licensed qsort() for Solaris, for performance (Bruce)
304 Reduce per-row overhead by four bytes (Manfred Koizar)
305 Fix GEQO optimizer bug (Neil Conway)
306 Make WITHOUT OID actually save four bytes per row (Manfred Koizar)
307 Add default_statistics_target variable to specify ANALYZE buckets
309 Use local buffer cache for temporary tables so no WAL overhead (Tom)
310 Improve free space map performance on large tables (Stephen Marshall,
312 Improved WAL write concurrency (Tom)
317 <title>Privileges</title>
319 Add privileges on functions and procedural languages (Peter)
320 Add OWNER to CREATE DATABASE so superusers can create databases
321 on behalf of unprivileged users. (Gavin Sherry, Tom)
322 Add new object permission bits EXECUTE and USAGE (Tom)
323 Add SET SESSION AUTHORIZATION DEFAULT and RESET SESSION AUTHORIZATION
325 Allow functions to be executed with the privilege of the function
331 <title>Server Configuration</title>
333 Server log messages now tagged with LOG, not DEBUG (Bruce)
334 Add user column to pg_hba.conf (Bruce)
335 Have log_connections output two lines in log file (Tom)
336 Remove debug_level from postgresql.conf, now server_min_messages
338 New ALTER DATABASE/USER ... SET command for per-user/database
339 initialization (Peter)
340 New parameters server_min_messages and client_min_messages to
341 control which messages are sent to the server logs or client
343 Allow pg_hba.conf to specify lists of users/databases separated by
344 commas, group names prepended with +, and file names prepended
346 Remove secondary password file capability and pg_password utility
348 Add variable db_user_namespace for database-local user names (Bruce)
349 SSL improvements (Bear Giles)
350 Make encryption of stored passwords the default (Bruce)
351 Allow pg_statistics to be reset by calling pg_stat_reset()
353 Add log_duration parameter (Bruce)
354 Rename debug_print_query to log_statement (Bruce)
355 Rename show_query_stats to show_statement_stats (Bruce)
356 Add param log_min_error_statement to print commands to logs on error
362 <title>Queries</title>
364 Make cursors insensitive, meaning their contents do not change (Tom)
365 Disable LIMIT #,# syntax; now only LIMIT # OFFSET # supported (Bruce)
366 Increase identifier length to 63 (Neil, Bruce)
367 UNION fixes for merging >= 3 columns of different lengths (Tom)
368 Add DEFAULT keyword to INSERT, e.g., INSERT ... (..., DEFAULT, ...)
370 Allow views to have default values using ALTER COLUMN ... SET DEFAULT
372 Fail on INSERTs with column lists that don't supply all column
373 values, e.g., INSERT INTO tab (col1, col2) VALUES ('val1'); (Rod)
374 Fix for join aliases (Tom)
375 Fix for FULL OUTER JOINs (Tom)
376 Improve reporting of invalid identifier and location (Tom, Gavin)
377 Fix OPEN cursor(args) (Tom)
378 Allow 'ctid' to be used in a view and currtid(viewname) (Hiroshi)
379 Fix for CREATE TABLE AS with UNION (Tom)
380 SQL99 syntax improvements (Thomas)
381 Add statement_timeout variable to cancel queries (Bruce)
382 Allow prepared queries with PREPARE/EXECUTE (Neil)
383 Allow FOR UPDATE to appear after LIMIT/OFFSET (Bruce)
384 Add variable autocommit (Tom, David Van Wie)
389 <title>Object Manipulation</title>
391 Make equals signs optional in CREATE DATABASE (Gavin Sherry)
392 Make ALTER TABLE OWNER change index ownership too (Neil)
393 New ALTER TABLE tabname ALTER COLUMN colname SET STORAGE controls
394 TOAST storage, compression (John Gray)
395 Add schema support, CREATE/DROP SCHEMA (Tom)
396 Create schema for temporary tables (Tom)
397 Add variable search_path for schema search (Tom)
398 Add ALTER TABLE SET/DROP NOT NULL (Christopher)
399 New CREATE FUNCTION volatility levels (Tom)
400 Make rule names unique only per table (Tom)
401 Add 'ON tablename' clause to DROP RULE and COMMENT ON RULE (Tom)
402 Add ALTER TRIGGER RENAME (Joe)
403 New current_schema() and current_schemas() inquiry functions (Tom)
404 Allow functions to return multiple rows (table functions) (Joe)
405 Make WITH optional in CREATE DATABASE, for consistency (Bruce)
406 Add object dependency tracking (Rod, Tom)
407 Add RESTRICT/CASCADE to DROP commands (Rod)
408 Add ALTER TABLE DROP for non-CHECK CONSTRAINT (Rod)
409 Autodestroy sequence on DROP of table with SERIAL (Rod)
410 Prevent column dropping if column is used by foreign key (Rod)
411 Automatically drop constraints/functions when object is dropped (Rod)
412 Add CREATE/DROP OPERATOR CLASS (Bill Studenmund, Tom)
413 Add ALTER TABLE DROP COLUMN (Christopher, Tom, Hiroshi)
414 Prevent inherited columns from being removed or renamed (Alvaro
416 Fix foreign key constraints to not error on intermediate database
418 Propagate column or table renaming to foreign key constraints
419 Add CREATE OR REPLACE VIEW (Gavin, Neil, Tom)
420 Add CREATE OR REPLACE RULE (Gavin, Neil, Tom)
421 Have rules execute alphabetically, returning more predictable values
423 Triggers are now fired in alphabetical order (Tom)
424 Add /contrib/adddepend to handle pre-7.3 object dependencies (Rod)
425 Allow better casting when inserting/updating values (Tom)
430 <title>Utility Commands</title>
432 Have COPY TO output embedded carriage returns and newlines as \r and
434 Allow DELIMITER in COPY FROM to be 8-bit clean (Tatsuo)
435 Make pg_dump use ALTER TABLE ADD PRIMARY KEY, for performance (Neil)
436 Disable brackets in multistatement rules (Bruce)
437 Disable VACUUM from being called inside a function (Bruce)
438 Allow dropdb and other scripts to use identifiers with spaces (Bruce)
439 Restrict database comment changes to the current database
440 Allow comments on operators, independent of the underlying function
442 Rollback SET commands in aborted transactions (Tom)
443 EXPLAIN now outputs as a query (Tom)
444 Display condition expressions and sort keys in EXPLAIN (Tom)
445 Add 'SET LOCAL var = value' to set configuration variables for a
446 single transaction (Tom)
447 Allow ANALYZE to run in a transaction (Bruce)
448 Improve COPY syntax using new WITH clauses, keep backward
449 compatibility (Bruce)
450 Fix pg_dump to consistently output tags in non-ASCII dumps (Bruce)
451 Make foreign key constraints clearer in dump file (Rod)
452 Add COMMENT ON CONSTRAINT (Rod)
453 Allow COPY TO/FROM to specify column names (Brent Verner)
454 Dump UNIQUE and PRIMARY KEY contraints as ALTER TABLE (Rod)
455 Have SHOW output a query result (Joe)
456 Generate failure on short COPY lines rather than pad NULLs (Neil)
457 Fix CLUSTER to preserve all table attributes (Alvaro Herrera)
458 New pg_settings table to view/modify GUC settings (Joe)
459 Add smart quoting, portability improvements to pg_dump output (Peter)
460 Dump serial columns out as SERIAL (Tom)
461 Enable large file support, >2G for pg_dump (Peter, Philip Warner,
463 Disallow TRUNCATE on tables that are involved in referential
465 Have TRUNCATE also auto-truncate the toast table of the relation (Tom)
466 Add clusterdb utility that will auto-cluster an entire database
467 based on previous CLUSTER operations (Alvaro Herrera)
468 Overhaul pg_dumpall (Peter)
469 Allow REINDEX of TOAST tables (Tom)
470 Implemented START TRANSACTION, per SQL99 (Neil)
471 Fix rare index corruption when a page split affects bulk delete (Tom)
472 Fix ALTER TABLE ... ADD COLUMN for inheritance (Alvaro Herrera)
477 <title>Data Types and Functions</title>
479 Fix factorial(0) to return 1 (Bruce)
480 Date/time/timezone improvements (Thomas)
481 Fix for array slice extraction (Tom)
482 Fix extract/date_part to report proper microseconds for timestamp
484 Allow text_substr() and bytea_substr() to read TOAST values more
485 efficiently (John Gray)
486 Add domain support (Rod)
487 Make WITHOUT TIME ZONE the default for TIMESTAMP and TIME data types
489 Allow alternate storage scheme of 64-bit integers for date/time types
490 using --enable-integer-datetimes in configure (Thomas)
491 Make timezone(timestamptz) return timestamp rather than a string
493 Allow fractional seconds in date/time types for dates prior to 1BC
495 Limit timestamp data types to 6 decimal places of precision (Thomas)
496 Change timezone conversion functions from timetz() to timezone()
498 Add configuration variables datestyle and timezone (Tom)
499 Add OVERLAY(), which allows substitution of a substring in a string
501 Add SIMILAR TO (Thomas, Tom)
502 Add regular expression SUBSTRING(string FROM pat FOR escape) (Thomas)
503 Add LOCALTIME and LOCALTIMESTAMP functions (Thomas)
504 Add named composite types using CREATE TYPE typename AS (column)
506 Allow composite type definition in the table alias clause (Joe)
507 Add new API to simplify creation of C language table functions (Joe)
508 Remove ODBC-compatible empty parentheses from calls to SQL99
509 functions for which these parentheses do not match the standard
511 Allow macaddr data type to accept 12 hex digits with no separators
513 Add CREATE/DROP CAST (Peter)
514 Add IS DISTINCT FROM operator (Thomas)
515 Add SQL99 TREAT() function, synonym for CAST() (Thomas)
516 Add pg_backend_pid() to output backend pid (Bruce)
517 Add IS OF / IS NOT OF type predicate (Thomas)
518 Allow bit string constants without fully-specified length (Thomas)
519 Allow conversion between 8-byte integers and bit strings (Thomas)
520 Implement hex literal conversion to bit string literal (Thomas)
521 Allow table functions to appear in the FROM clause (Joe)
522 Increase maximum number of function parameters to 32 (Bruce)
523 No longer automatically create index for SERIAL column (Tom)
524 Add current_database() (Rod)
525 Fix cash_words() to not overflow buffer (Tom)
526 Add functions replace(), split_part(), to_hex() (Joe)
527 Fix LIKE for bytea as a right-hand argument (Joe)
528 Prevent crashes caused by SELECT cash_out(2) (Tom)
529 Fix to_char(1,'FM999.99') to return a period (Karel)
530 Fix trigger/type/language functions returning OPAQUE to return
536 <title>Internationalization</title>
538 Add additional encodings: Korean (JOHAB), Thai (WIN874), Vietnamese
539 (TCVN), Arabic (WIN1256), Simplified Chinese (GBK), Korean (UHC)
541 Enable locale support by default (Peter)
542 Add locale variables (Peter)
543 Escape byes >= 0x7f for multibyte in PQescapeBytea/PQunescapeBytea
545 Add locale awareness to regular expression character classes
546 Enable multibyte support by default (Tatso)
547 Add GB18030 multibyte support (Bill Huang)
548 Add CREATE/DROP CONVERSION, allowing loadable encodings (Tatsuo,
550 Add pg_conversion table (Tatsuo)
551 Add SQL99 CONVERT() function (Tatsuo)
552 pg_dumpall, pg_controldata, and pg_resetxlog now national-language
554 New and updated translations
559 <title>Server-side Languages</title>
561 Allow recursive SQL function (Peter)
562 Change PL/Tcl build to use configured compiler and Makefile.shlib
564 Overhaul the PL/pgSQL FOUND variable to be more Oracle-compatible
566 Allow PL/pgSQL to handle quoted identifiers (Tom)
567 Allow set-returning PL/pgSQL functions (Neil)
568 Make PL/pgSQL schema-aware (Joe)
569 Remove some memory leaks (Nigel J. Andrews, Tom)
576 Don't lowercase psql \connect database name for 7.2.0 compatibility
578 Add psql \timing to time user queries (Greg Sabino Mullane)
579 Have psql \d show index information (Greg Sabino Mullane)
580 New psql \dD shows domains (Jonathan Eisler)
581 Allow psql to show rules on views (Paul ?)
582 Fix for psql variable substitution (Tom)
583 Allow psql \d to show temporary table structure (Tom)
584 Allow psql \d to show foreign keys (Rod)
585 Fix \? to honor \pset pager (Bruce)
586 Have psql reports its version number on startup (Tom)
587 Allow \copy to specify column names (Tom)
594 Add $HOME/.pgpass to store host/user password combinations (Alvaro
596 Add PQunescapeBytea() function to libpq (Patrick Welche)
597 Fix for sending large queries over non-blocking connections
599 Fix for libpq using timers on Win9X (David Ford)
600 Allow libpq notify to handle servers with different-length
602 Add libpq PQescapeString() and PQescapeBytea() to Win32 (Bruce)
603 Fix for SSL with non-blocking connections (Jack Bates)
604 Add libpq connection timeout parameter (Denis A Ustimenko)
611 Allow JDBC to compile with JDK 1.4 (Dave)
612 Add JDBC 3 support (Barry)
613 Allows JDBC to set loglevel by adding ?loglevel=X to the connection
615 Add Driver.info() message that prints out the version number (Barry)
616 Add updateable result sets (Raghu Nidagal, Dave)
617 Add support for callable statements (Paul Bethe)
618 Add query cancel capability
619 Add refresh row (Dave)
620 Fix MD5 encryption handling for multibyte servers (Jun Kawai)
621 Add support for prepared statements (Barry)
626 <title>Miscellaneous Interfaces</title>
628 Fixed ECPG bug concerning octal numbers in single quotes (Michael)
629 Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc,
631 Improve Python interface (Elliot Lee, Andrew Johnson, Greg Copeland)
632 Add libpgtcl connection close event (Gerhard Hintermayer)
633 Move src/interfaces/libpq++ to http://gborg.postgresql.org (Marc,
635 Move src/interfaces/odbc to http://gborg.postgresql.org (Marc)
636 Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc,
638 Move src/interfaces/perl5 to http://gborg.postgresql.org (Marc,
640 Remove src/bin/pgaccess from main tree, now at
641 http://www.pgaccess.org (Bruce)
642 Add pg_on_connection_loss command to libpgtcl (Gerhard Hintermayer,
648 <title>Source Code</title>
650 Fix for parallel make (Peter)
651 AIX fixes for linking Tcl (Andreas Zeugswetter)
652 Allow PL/Perl to build under Cygwin (Jason Tishler)
653 Improve MIPS compiles (Peter, Oliver Elphick)
654 Require Autoconf version 2.53 (Peter)
655 Require readline and zlib by default in configure (Peter)
656 Allow Solaris to use Intimate Shared Memory (ISM), for performance
657 (Scott Brunza, P.J. Josh Rovero)
658 Always enable syslog in compile, remove --enable-syslog option
660 Always enable multibyte in compile, remove --enable-multibyte option
662 Always enable locale in compile, remove --enable-locale option
664 Fix for Win9x DLL creation (Magnus Naeslund)
665 Fix for link() usage by WAL code on Win32, BeOS (Jason Tishler)
666 Add sys/types.h to c.h, remove from main files (Peter, Bruce)
667 Fix AIX hang on SMP machines (Tomoyuki Niijima)
668 AIX SMP hang fix (Tomoyuki Niijima)
669 Fix pre-1970 date handling on newer glibc libraries (Tom)
670 Fix PowerPC SMP locking (Tom)
671 Prevent gcc -ffast-math from being used (Peter, Tom)
672 Bison >= 1.50 now required for developer builds
673 Kerberos 5 support now builds with Heimdal (Peter)
674 Add appendix in the User's Guide which lists SQL features (Thomas)
675 Improve loadable module linking to use RTLD_NOW (Tom)
676 New error levels WARNING, INFO, LOG, DEBUG[1-5] (Bruce)
677 New src/port directory holds replaced libc functions (Peter, Bruce)
678 New pg_namespace system catalog for schemas (Tom)
679 Add pg_class.relnamespace for schemas (Tom)
680 Add pg_type.typnamespace for schemas (Tom)
681 Add pg_proc.pronamespace for schemas (Tom)
682 Restructure aggregates to have pg_proc entries (Tom)
683 System relations now have their own namespace, pg_* test not required
685 Rename TOAST index names to be *_index rather than *_idx (Neil)
686 Add namespaces for operators, opclasses (Tom)
687 Add additional checks to server control file (Thomas)
688 New Polish FAQ (Marcin Mazurek)
689 Add Posix semaphore support (Tom)
690 Document need for reindex (Bruce)
691 Rename some internal identifiers to simplify Win32 compile (Jan,
693 Add documentation on computing disk space (Bruce)
694 Remove KSQO from GUC (Bruce)
695 Fix memory leak in rtree (Kenneth Been)
696 Modify a few error messages for consistency (Bruce)
697 Remove unused system table columns (Peter)
698 Make system columns NOT NULL where appropriate (Tom)
699 Clean up use of sprintf in favor of snprintf() (Neil, Jukka Holappa)
700 Remove OPAQUE and create specific subtypes (Tom)
701 Cleanups in array internal handling (Joe, Tom)
702 Disallow pg_atoi('') (Bruce)
703 Remove parameter wal_files because WAL files are now recycled (Bruce)
704 Add version numbers to heap pages (Tom)
709 <title>Contrib</title>
711 Allow inet arrays in /contrib/array (Neil)
712 Gist fixes (Teodor Sigaev, Neil)
713 Upgrade /contrib/mysql
714 Add /contrib/dbsize which shows table sizes without vacuum (Peter)
715 Add /contrib/intagg, integer aggregator routines (mlw)
716 Improve /contrib/oid2name (Neil, Bruce)
717 Improve /contrib/tsearch (Oleg, Teodor Sigaev)
718 Cleanups of /contrib/rserver (Alexey V. Borzov)
719 Update /contrib/oracle conversion utility (Gilles Darold)
720 Update /contrib/dblink (Joe)
721 Improve options supported by /contrib/vacuumlo (Mario Weilguni)
722 Improvements to /contrib/intarray (Oleg, Teodor Sigaev, Andrey
724 Add /contrib/reindexdb utility (Shaun Thomas)
725 Add indexing to /contrib/isbn_issn (Dan Weston)
726 Add /contrib/dbmirror (Steven Singer)
727 Improve /contrib/pgbench (Neil)
728 Add /contrib/tablefunc table function examples (Joe)
729 Add /contrib/ltree data type for tree structures (Teodor Sigaev,
731 Move /contrib/pg_controldata, pg_resetxlog into main tree (Bruce)
732 Fixes to /contrib/cube (Bruno Wolff)
733 Improve /contrib/fulltextindex (Christopher)
741 <sect1 id="release-7-2-3">
742 <title>Release 7.2.3</title>
745 <title>Release date</title>
746 <simpara>2002-10-01</simpara>
750 This has a variety of fixes from 7.2.2, including fixes to prevent
756 <title>Migration to version 7.2.3</title>
759 A dump/restore is <emphasis>not</emphasis> required for those running
765 <title>Changes</title>
769 Prevent possible compressed transaction log loss (Tom)
770 Prevent non-superuser from increasing most recent vacuum info (Tom)
771 Handle pre-1970 date values in newer versions of glibc (Tom)
772 Fix possible hang during server shutdown
773 Prevent spinlock hangs on SMP PPC machines (Tomoyuki Niijima)
774 Fix pg_dump to properly dump FULL JOIN USING (Tom)
781 <sect1 id="release-7-2-2">
782 <title>Release 7.2.2</title>
785 <title>Release date</title>
786 <simpara>2002-08-23</simpara>
790 This has a variety of fixes from 7.2.1.
795 <title>Migration to version 7.2.2</title>
798 A dump/restore is <emphasis>not</emphasis> required for those running
804 <title>Changes</title>
808 Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)
809 Fix for compressed transaction log id wraparound (Tom)
810 Fix PQescapeBytea/PQunescapeBytea so that they handle bytes > 0x7f (Tatsuo)
811 Fix for psql and pg_dump crashing when invoked with non-existand long
813 Fix crash when invoking geometric operators (Tom)
814 Allow OPEN cursor(args) (Tom)
815 Fix for rtree_gist index build (Teodor)
816 Fix for dumping user-defined aggregates (Tom)
817 Contrib/intarray fixes (Oleg)
818 Fix for complex UNION/EXCEPT/INTERSECT queries using parens (Tom)
819 Fix to pg_convert (Tatsuo)
820 Fix for crash with long DATA strings (Thomes, Neil)
821 Fix for repeat(), lpad(), rpad() and long strings (Neil)
828 <sect1 id="release-7-2-1">
829 <title>Release 7.2.1</title>
832 <title>Release date</title>
833 <simpara>2002-03-21</simpara>
837 This has a variety of fixes from 7.2.
842 <title>Migration to version 7.2.1</title>
845 A dump/restore is <emphasis>not</emphasis> required for those running
851 <title>Changes</title>
855 Ensure that sequence counters do not go backwards after a crash (Tom)
856 Fix pgaccess kanji-coversion key binding (Tatsuo)
857 Optimizer improvements (Tom)
858 cash I/O improvements (Tom)
860 Compile fix for missing AuthBlockSig (Heiko)
861 Additional time zones and time zone fixes (Thomas)
862 Allow psql \connect to handle mixed case database and user names (Tom)
863 Return proper OID on command completion even with ON INSERT rules (Tom)
864 Allow COPY FROM to use 8-bit DELIMITERS (Tatsuo)
865 Fix bug in extract/date_part for milliseconds/microseconds (Tatsuo)
866 Improve handling of multiple UNIONs with different lengths (Tom)
867 contrib/btree_gist improvements (Teodor Sigaev)
868 contrib/tsearch dictionary improvements, see README.tsearch for
869 an additional installation step (Thomas T. Thai, Teodor Sigaev)
870 Fix for array subscripts handling (Tom)
871 Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)
878 <sect1 id="release-7-2">
879 <title>Release 7.2</title>
882 <title>Release date</title>
883 <simpara>2002-02-04</simpara>
887 <title>Overview</title>
890 This release improves <productname>PostgreSQL</> for use in
891 high-volume applications.
895 Major changes in this release:
902 Vacuuming no longer locks tables, thus allowing normal user
903 access during the vacuum. A new <command>VACUUM FULL</>
904 command does old-style vacuum by locking the table and
905 shrinking the on-disk copy of the table.
911 <term>Transactions</term>
914 There is no longer a problem with installations that exceed
915 four billion transactions.
924 OIDs are now optional. Users can now create tables without
925 OIDs for cases where OID usage is excessive.
931 <term>Optimizer</term>
934 The system now computes histogram column statistics during
935 <command>ANALYZE</>, allowing much better optimizer choices.
941 <term>Security</term>
944 A new MD5 encryption option allows more secure storage and
945 transfer of passwords. A new Unix-domain socket
946 authentication option is available on Linux and BSD systems.
952 <term>Statistics</term>
955 Administrators can use the new table access statistics module
956 to get fine-grained information about table and index usage.
962 <term>Internationalization</term>
965 Program and library messages can now be displayed in several
975 <title>Migration to version 7.2</title>
978 A dump/restore using <command>pg_dump</command> is required for
979 those wishing to migrate data from any previous release.
983 Observe the following incompatibilities:
988 The semantics of the <command>VACUUM</command> command have
989 changed in this release. You may wish to update your
990 maintenance procedures accordingly.
996 In this release, comparisons using <literal>= NULL</literal>
997 will always return false (or NULL, more precisely). Previous
998 releases automatically transformed this syntax to <literal>IS
999 NULL</literal>. The old behavior can be re-enabled using a
1000 <filename>postgresql.conf</filename> parameter.
1006 The <filename>pg_hba.conf</> and <filename>pg_ident.conf</>
1007 configuration is now only reloaded after receiving a
1008 <systemitem>SIGHUP</> signal, not with each connection.
1014 The function <filename>octet_length()</> now returns the uncompressed data length.
1020 The date/time value <literal>'current'</literal> is no longer
1021 available. You will need to rewrite your applications.
1027 The <literal>timestamp()</literal>, <literal>time()</literal>,
1028 and <literal>interval()</literal> functions are no longer
1029 available. Instead of <literal>timestamp()</literal>, use
1030 <literal>timestamp 'string'</literal> or <literal>CAST</literal>.
1040 The <literal>SELECT ... LIMIT #,#</literal> syntax will be removed
1041 in the next release. You should change your queries to use
1042 separate LIMIT and OFFSET clauses, e.g. <literal>LIMIT 10 OFFSET
1048 <title>Changes</title>
1051 <title>Server Operation</title>
1053 Create temporary files in a separate directory (Bruce)
1054 Delete orphaned temporary files on postmaster startup (Bruce)
1055 Added unique indexes to some system tables (Tom)
1056 System table operator reorganization (Oleg Bartunov, Teodor Sigaev, Tom)
1057 Renamed pg_log to pg_clog (Tom)
1058 Enable SIGTERM, SIGQUIT to kill backends (Jan)
1059 Removed compile-time limit on number of backends (Tom)
1060 Better cleanup for semaphore resource failure (Tatsuo, Tom)
1061 Allow safe transaction ID wraparound (Tom)
1062 Removed OIDs from some system tables (Tom)
1063 Removed "triggered data change violation" error check (Tom)
1064 SPI portal creation of prepared/saved plans (Jan)
1065 Allow SPI column functions to work for system columns (Tom)
1066 Long value compression improvement (Tom)
1067 Statistics collector for table, index access (Jan)
1068 Truncate extra-long sequence names to a reasonable value (Tom)
1069 Measure transaction times in milliseconds (Thomas)
1070 Fix TID sequential scans (Hiroshi)
1071 Superuser ID now fixed at 1 (Peter E)
1072 New pg_ctl "reload" option (Tom)
1077 <title>Performance</title>
1079 Optimizer improvements (Tom)
1080 New histogram column statistics for optimizer (Tom)
1081 Reuse write-ahead log files rather than discarding them (Tom)
1082 Cache improvements (Tom)
1083 IS NULL, IS NOT NULL optimizer improvement (Tom)
1084 Improve lock manager to reduce lock contention (Tom)
1085 Keep relcache entries for index access support functions (Tom)
1086 Allow better selectivity with NaN and infinities in NUMERIC (Tom)
1087 R-tree performance improvements (Kenneth Been)
1088 B-tree splits more efficient (Tom)
1093 <title>Privileges</title>
1095 Change UPDATE, DELETE permissions to be distinct (Peter E)
1096 New REFERENCES, TRIGGER privileges (Peter E)
1097 Allow GRANT/REVOKE to/from more than one user at a time (Peter E)
1098 New has_table_privilege() function (Joe Conway)
1099 Allow non-superuser to vacuum database (Tom)
1100 New SET SESSION AUTHORIZATION command (Peter E)
1101 Fix bug in privilege modifications on newly created tables (Tom)
1102 Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom)
1107 <title>Client Authentication</title>
1109 Fork postmaster before doing authentication to prevent hangs (Peter E)
1110 Add ident authentication over Unix domain sockets on Linux, *BSD (Helge Bahmann, Oliver Elphick, Teodor Sigaev, Bruce)
1111 Add a password authentication method that uses MD5 encryption (Bruce)
1112 Allow encryption of stored passwords using MD5 (Bruce)
1113 PAM authentication (Dominic J. Eidson)
1114 Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce)
1119 <title>Server Configuration</title>
1121 Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce)
1122 New parameter to set default transaction isolation level (Peter E)
1123 New parameter to enable conversion of "expr = NULL" into "expr IS NULL", off by default (Peter E)
1124 New parameter to control memory usage by VACUUM (Tom)
1125 New parameter to set client authentication timeout (Tom)
1126 New parameter to set maximum number of open files (Tom)
1131 <title>Queries</title>
1133 Statements added by INSERT rules now execute after the INSERT (Jan)
1134 Prevent unadorned relation names in target list (Bruce)
1135 NULLs now sort after all normal values in ORDER BY (Tom)
1136 New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom)
1137 New SHARE UPDATE EXCLUSIVE lock mode (Tom)
1138 New EXPLAIN ANALYZE command that shows run times and row counts (Martijn van Oosterhout)
1139 Fix problem with LIMIT and subqueries (Tom)
1140 Fix for LIMIT, DISTINCT ON pushed into subqueries (Tom)
1141 Fix nested EXCEPT/INTERSECT (Tom)
1146 <title>Schema Manipulation</title>
1148 Fix SERIAL in temporary tables (Bruce)
1149 Allow temporary sequences (Bruce)
1150 Sequences now use int8 internally (Tom)
1151 New SERIAL8 creates int8 columns with sequences, default still SERIAL4 (Tom)
1152 Make OIDs optional using WITHOUT OIDS (Tom)
1153 Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor)
1154 Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher Kings-Lynne)
1155 New CREATE OR REPLACE FUNCTION to alter existing function (preserving the function OID) (Gavin Sherry)
1156 Add ALTER TABLE / ADD [ UNIQUE | PRIMARY ] (Christopher Kings-Lynne)
1157 Allow column renaming in views
1158 Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent Verner)
1159 Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (Stephan Szabo)
1160 ALTER TABLE RENAME update foreign-key trigger arguments correctly (Brent Verner)
1161 DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom)
1162 Add automatic return type data casting for SQL functions (Tom)
1163 Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom)
1164 Enable partial indexes (Martijn van Oosterhout)
1169 <title>Utility Commands</title>
1171 Add RESET ALL, SHOW ALL (Marko Kreen)
1172 CREATE/ALTER USER/GROUP now allow options in any order (Vince)
1173 Add LOCK A, B, C functionality (Neil Padgett)
1174 New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce)
1175 New light-weight VACUUM does not lock table; old semantics are available as VACUUM FULL (Tom)
1176 Disable COPY TO/FROM on views (Bruce)
1177 COPY DELIMITERS string must be exactly one character (Tom)
1178 VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout)
1179 Fix permission checks for CREATE INDEX (Tom)
1180 Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom)
1185 <title>Data Types and Functions</title>
1187 SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom)
1188 Add convert(), convert2() (Tatsuo)
1189 New function bit_length() (Peter E)
1190 Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tatsuo)
1191 CHAR(), VARCHAR() now reject strings that are too long (Peter E)
1192 BIT VARYING now rejects bit strings that are too long (Peter E)
1193 BIT now rejects bit strings that do not match declared size (Peter E)
1194 INET, CIDR text conversion functions (Alex Pilosov)
1195 INET, CIDR operators << and <<= indexable (Alex Pilosov)
1196 Bytea \### now requires valid three digit octal number
1197 Bytea comparison improvements, now supports =, <>, >, >=, <, and <=
1198 Bytea now supports B-tree indexes
1199 Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE
1200 Bytea now supports concatenation
1201 New bytea functions: position, substring, trim, btrim, and length
1202 New encode() function mode, "escaped", converts minimally escaped bytea to/from text
1203 Add pg_database_encoding_max_length() (Tatsuo)
1204 Add pg_client_encoding() function (Tatsuo)
1205 now() returns time with millisecond precision (Thomas)
1206 New TIMESTAMP WITHOUT TIMEZONE data type (Thomas)
1207 Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas)
1208 New xid/int comparison functions (Hiroshi)
1209 Add precision to TIME, TIMESTAMP, and INVERVAL data types (Thomas)
1210 Modify type coercion logic to attempt binary-compatible functions first (Tom)
1211 New encode() function installed by default (Marko Kreen)
1212 Improved to_*() conversion functions (Karel Zak)
1213 Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo)
1214 New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_salt() (Marko Kreen)
1215 Correct description of translate() function (Bruce)
1216 Add INTERVAL argument for SET TIME ZONE (Thomas)
1217 Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas)
1218 Optimize length functions when using single-byte encodings (Tatsuo)
1219 Fix path_inter, path_distance, path_length, dist_ppath to handle closed paths (Curtis Barrett, Tom)
1220 octet_length(text) now returns non-compressed length (Tatsuo, Bruce)
1221 Handle "July" full name in date/time literals (Greg Sabino Mullane)
1222 Some datatype() function calls now evaluated differently
1223 Add support for Julian and ISO time specifications (Thomas)
1228 <title>Internationalization</title>
1230 National language support in psql, pg_dump, libpq, and server (Peter E)
1231 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)
1232 Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware (Tatsuo)
1233 Add LATIN5,6,7,8,9,10 support (Tatsuo)
1234 Add ISO 8859-5,6,7,8 support (Tatsuo)
1235 Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo)
1236 Make mic2ascii() non-ASCII aware (Tatsuo)
1237 Reject invalid multibyte character sequences (Tatsuo)
1242 <title><application>PL/pgSQL</></title>
1244 Now uses portals for SELECT loops, allowing huge result sets (Jan)
1245 CURSOR and REFCURSOR support (Jan)
1246 Can now return open cursors (Jan)
1247 Add ELSEIF (Klaus Reger)
1248 Improve PL/pgSQL error reporting, including location of error (Tom)
1249 Allow IS or FOR key words in cursor declaration, for compatibility (Bruce)
1250 Fix for SELECT ... FOR UPDATE (Tom)
1251 Fix for PERFORM returning multiple rows (Tom)
1252 Make PL/pgSQL use the server's type coercion code (Tom)
1253 Memory leak fix (Jan, Tom)
1254 Make trailing semicolon optional (Tom)
1259 <title>PL/Perl</title>
1261 New untrusted PL/Perl (Alex Pilosov)
1262 PL/Perl is now built on some platforms even if libperl is not shared (Peter E)
1267 <title>PL/Tcl</title>
1269 Now reports errorInfo (Vsevolod Lobko)
1270 Add spi_lastoid function (bob@redivi.com)
1275 <title>PL/Python</title>
1277 ...is new (Andrew Bosma)
1282 <title><application>Psql</></title>
1284 \d displays indexes in unique, primary groupings (Christopher Kings-Lynne)
1285 Allow trailing semicolons in backslash commands (Greg Sabino Mullane)
1286 Read password from /dev/tty if possible
1287 Force new password prompt when changing user and database (Tatsuo, Tom)
1288 Format the correct number of columns for Unicode (Patrice)
1293 <title><application>Libpq</></title>
1295 New function PQescapeString() to escape quotes in command strings (Florian Weimer)
1296 New function PQescapeBytea() escapes binary strings for use as SQL string literals
1303 Return OID of INSERT (Ken K)
1304 Handle more data types (Ken K)
1305 Handle single quotes and newlines in strings (Ken K)
1306 Handle NULL variables (Ken K)
1307 Fix for time zone handling (Barry Lind)
1308 Improved Druid support
1309 Allow eight-bit characters with non-multibyte server (Barry Lind)
1310 Support BIT, BINARY types (Ned Wolpert)
1311 Reduce memory usage (Michael Stephens, Dave Cramer)
1312 Update DatabaseMetaData (Peter E)
1313 Add DatabaseMetaData.getCatalogs() (Peter E)
1314 Encoding fixes (Anders Bengtsson)
1315 Get/setCatalog methods (Jason Davies)
1316 DatabaseMetaData.getColumns() now returns column defaults (Jason Davies)
1317 DatabaseMetaData.getColumns() performance improvement (Jeroen van Vianen)
1318 Some JDBC1 and JDBC2 merging (Anders Bengtsson)
1319 Transaction performance improvements (Barry Lind)
1320 Array fixes (Greg Zoller)
1322 Fix batch processing (Rene Pijlman)
1323 ExecSQL method reorganization (Anders Bengtsson)
1324 GetColumn() fixes (Jeroen van Vianen)
1325 Fix isWriteable() function (Rene Pijlman)
1326 Improved passage of JDBC2 conformance tests (Rene Pijlman)
1327 Add bytea type capability (Barry Lind)
1328 Add isNullable() (Rene Pijlman)
1329 JDBC date/time test suite fixes (Liam Stewart)
1330 Fix for SELECT 'id' AS xxx FROM table (Dave Cramer)
1331 Fix DatabaseMetaData to show precision properly (Mark Lillywhite)
1332 New getImported/getExported keys (Jason Davies)
1333 MD5 password encryption support (Jeremy Wohl)
1334 Fix to actually use type cache (Ned Wolpert)
1341 Remove query size limit (Hiroshi)
1342 Remove text field size limit (Hiroshi)
1343 Fix for SQLPrimaryKeys in multibyte mode (Hiroshi)
1344 Allow ODBC procedure calls (Hiroshi)
1345 Improve boolean handing (Aidan Mountford)
1346 Most configuration options on setable via DSN (Hiroshi)
1347 Multibyte, performance fixes (Hiroshi)
1348 Allow driver to be used with iODBC or unixODBC (Peter E)
1349 MD5 password encryption support (Bruce)
1350 Add more compatibility functions to odbc.sql (Peter E)
1355 <title><application>ECPG</></title>
1357 EXECUTE ... INTO implemented (Christof Petig)
1358 Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig)
1359 Fix for GRANT parameters (Lee Kindness)
1360 Fix INITIALLY DEFERRED bug
1361 Various bug fixes (Michael, Christof Petig)
1362 Auto allocation for indicator variable arrays (int *ind_p=NULL)
1363 Auto allocation for string arrays (char **foo_pp=NULL)
1364 ECPGfree_auto_mem fixed
1365 All function names with external linkage are now prefixed by ECPG
1366 Fixes for arrays of structures (Michael)
1371 <title>Misc. Interfaces</title>
1373 Python fix fetchone() (Gerhard Haring)
1374 Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Max)
1375 Add Tcl COPY TO/FROM (ljb)
1376 Prevent output of default index op class in pg_dump (Tom)
1377 Fix libpgeasy memory leak (Bruce)
1382 <title>Build and Install</title>
1384 Configure, dynamic loader, and shared library fixes (Peter E)
1385 Fixes in QNX 4 port (Bernd Tegge)
1386 Fixes in Cygwin and Win32 ports (Jason Tishler, Gerhard Haring, Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov)
1387 Fix for Win32 socket communication failures (Magnus, Mikhail Terekhov)
1388 Hurd compile fix (Oliver Elphick)
1389 BeOS fixes (Cyril Velter)
1390 Remove configure --enable-unicode-conversion, now enabled by multibyte (Tatsuo)
1391 AIX fixes (Tatsuo, Andreas)
1392 Fix parallel make (Peter E)
1393 Install SQL language manual pages into OS-specific directories (Peter E)
1394 Rename config.h to pg_config.h (Peter E)
1395 Reorganize installation layout of header files (Peter E)
1400 <title>Source Code</title>
1402 Remove SEP_CHAR (Bruce)
1404 Merge GUC and command line handling (Marko Kreen)
1405 Remove EXTEND INDEX (Martijn van Oosterhout, Tom)
1406 New pgjindent utility to indent java code (Bruce)
1407 Remove define of true/false when compiling under C++ (Leandro Fanzone, Tom)
1408 pgindent fixes (Bruce, Tom)
1409 Replace strcasecmp() with strcmp() where appropriate (Peter E)
1410 Dynahash portability improvements (Tom)
1411 Add 'volatile' usage in spinlock structures
1412 Improve signal handling logic (Tom)
1417 <title>Contrib</title>
1419 New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev)
1420 New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev)
1421 Add contrib/dblink for remote database access (Joe Conway)
1422 contrib/ora2pg Oracle conversion utility (Gilles Darold)
1423 contrib/xml XML conversion utility (John Gray)
1424 contrib/fulltextindex fixes (Christopher Kings-Lynne)
1425 New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merged (Joe Conway)
1426 Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartunov)
1427 New pg_upgrade utility (Bruce)
1428 Add new pg_resetxlog options (Bruce, Tom)
1435 <sect1 id="release-7-1-3">
1436 <title>Release 7.1.3</title>
1439 <title>Release date</title>
1440 <simpara>2001-08-15</simpara>
1444 <title>Migration to version 7.1.3</title>
1447 A dump/restore is <emphasis>not</emphasis> required for those running
1453 <title>Changes</title>
1457 Remove unused WAL segements of large transactions (Tom)
1458 Multiaction rule fix (Tom)
1459 PL/pgSQL memory allocation fix (Jan)
1460 VACUUM buffer fix (Tom)
1461 Regression test fixes (Tom)
1462 pg_dump fixes for GRANT/REVOKE/comments on views, user-defined types (Tom)
1463 Fix subselects with DISTINCT ON or LIMIT (Tom)
1465 Disable COPY TO/FROM a view (Tom)
1466 Cygwin build (Jason Tishler)
1473 <sect1 id="release-7-1-2">
1474 <title>Release 7.1.2</title>
1477 <title>Release date</title>
1478 <simpara>2001-05-11</simpara>
1482 This has one fix from 7.1.1.
1487 <title>Migration to version 7.1.2</title>
1490 A dump/restore is <emphasis>not</emphasis> required for those running
1496 <title>Changes</title>
1500 Fix PL/pgSQL SELECTs when returning no rows
1501 Fix for psql backslash core dump
1502 Referential integrity permission fix
1511 <sect1 id="release-7-1-1">
1512 <title>Release 7.1.1</title>
1515 <title>Release date</title>
1516 <simpara>2001-05-05</simpara>
1520 This has a variety of fixes from 7.1.
1525 <title>Migration to version 7.1.1</title>
1528 A dump/restore is <emphasis>not</emphasis> required for those running
1534 <title>Changes</title>
1538 Fix for numeric MODULO operator (Tom)
1539 pg_dump fixes (Philip)
1540 pg_dump can dump 7.0 databases (Philip)
1541 readline 4.2 fixes (Peter E)
1543 AIX, MSWIN, VAX, N32K fixes (Tom)
1544 Multibytes fixes (Tom)
1545 Unicode fixes (Tatsuo)
1546 Optimizer improvements (Tom)
1547 Fix for whole tuples in functions (Tom)
1548 Fix for pg_ctl and option strings with spaces (Peter E)
1549 ODBC fixes (Hiroshi)
1550 EXTRACT can now take string argument (Thomas)
1551 Python fixes (Darcy)
1558 <sect1 id="release-7-1">
1559 <title>Release 7.1</title>
1562 <title>Release date</title>
1563 <simpara>2001-04-13</simpara>
1567 This release focuses on removing limitations that have existed in the
1568 PostgreSQL code for many years.
1572 Major changes in this release:
1577 Write-ahead Log (WAL)
1581 To maintain database consistency in case
1582 of an operating system crash, previous releases of PostgreSQL have
1583 forced all data modifications to disk before each transaction commit.
1584 With WAL, only one log file must be flushed to disk, greatly improving
1585 performance. If you have been using -F in previous releases to disable
1586 disk flushes, you may want to consider discontinuing its use.
1597 TOAST - Previous releases had a compiled-in row length limit,
1598 typically 8k - 32k. This limit made storage of long text fields
1599 difficult. With TOAST, long rows of any length can be stored with good
1611 We now support outer joins. The UNION/NOT IN
1612 workaround for outer joins is no longer required. We use the SQL92
1624 The previous C function manager did not
1625 handle null values properly, nor did it support 64-bit <acronym>CPU</acronym>'s (Alpha). The new
1626 function manager does. You can continue using your old custom
1627 functions, but you may want to rewrite them in the future to use the new
1628 function manager call interface.
1639 A large number of complex queries that were
1640 unsupported in previous releases now work. Many combinations of views,
1641 aggregates, UNION, LIMIT, cursors, subqueries, and inherited tables
1642 now work properly. Inherited tables are now accessed by default.
1643 Subqueries in FROM are now supported.
1652 <title>Migration to version 7.1</title>
1655 A dump/restore using pg_dump is required for those wishing to migrate
1656 data from any previous release.
1661 <title>Changes</title>
1667 Many multibyte/Unicode/locale fixes (Tatsuo and others)
1668 More reliable ALTER TABLE RENAME (Tom)
1669 Kerberos V fixes (David Wragg)
1670 Fix for INSERT INTO...SELECT where targetlist has subqueries (Tom)
1671 Prompt username/password on standard error (Bruce)
1672 Large objects inv_read/inv_write fixes (Tom)
1673 Fixes for to_char(), to_date(), to_ascii(), and to_timestamp() (Karel,
1675 Prevent query expressions from leaking memory (Tom)
1676 Allow UPDATE of arrays elements (Tom)
1677 Wake up lock waiters during cancel (Hiroshi)
1678 Fix rare cursor crash when using hash join (Tom)
1679 Fix for DROP TABLE/INDEX in rolled-back transaction (Hiroshi)
1680 Fix psql crash from \l+ if MULTIBYTE enabled (Peter E)
1681 Fix truncation of rule names during CREATE VIEW (Ross Reedstrom)
1682 Fix PL/perl (Alex Kapranoff)
1683 Disallow LOCK on views (Mark Hollomon)
1684 Disallow INSERT/UPDATE/DELETE on views (Mark Hollomon)
1685 Disallow DROP RULE, CREATE INDEX, TRUNCATE on views (Mark Hollomon)
1686 Allow PL/pgSQL accept non-ASCII identifiers (Tatsuo)
1687 Allow views to proper handle GROUP BY, aggregates, DISTINCT (Tom)
1688 Fix rare failure with TRUNCATE command (Tom)
1689 Allow UNION/INTERSECT/EXCEPT to be used with ALL, subqueries, views,
1690 DISTINCT, ORDER BY, SELECT...INTO (Tom)
1691 Fix parser failures during aborted transactions (Tom)
1692 Allow temporary relations to properly clean up indexes (Bruce)
1693 Fix VACUUM problem with moving rows in same page (Tom)
1694 Modify pg_dump to better handle user-defined items in template1 (Philip)
1695 Allow LIMIT in VIEW (Tom)
1696 Require cursor FETCH to honor LIMIT (Tom)
1697 Allow PRIMARY/FOREIGN Key definitions on inherited columns (Stephan)
1698 Allow ORDER BY, LIMIT in sub-selects (Tom)
1699 Allow UNION in CREATE RULE (Tom)
1700 Make ALTER/DROP TABLE rollback-able (Vadim, Tom)
1701 Store initdb collation in pg_control so collation cannot be changed (Tom)
1702 Fix INSERT...SELECT with rules (Tom)
1703 Fix FOR UPDATE inside views and subselects (Tom)
1704 Fix OVERLAPS operators conform to SQL92 spec regarding NULLs (Tom)
1705 Fix lpad() and rpad() to handle length less than input string (Tom)
1706 Fix use of NOTIFY in some rules (Tom)
1707 Overhaul btree code (Tom)
1708 Fix NOT NULL use in Pl/pgSQL variables (Tom)
1709 Overhaul GIST code (Oleg)
1710 Fix CLUSTER to preserve constraints and column default (Tom)
1711 Improved deadlock detection handling (Tom)
1712 Allow multiple SERIAL columns in a table (Tom)
1713 Prevent occasional index corruption (Vadim)
1717 Add OUTER JOINs (Tom)
1718 Function manager overhaul (Tom)
1719 Allow ALTER TABLE RENAME on indexes (Tom)
1720 Improve CLUSTER (Tom)
1721 Improve ps status display for more platforms (Peter E, Marc)
1722 Improve CREATE FUNCTION failure message (Ross)
1723 JDBC improvements (Peter, Travis Bauer, Christopher Cain, William Webber,
1725 Grand Unified Configuration scheme/GUC. Many options can now be set in
1726 data/postgresql.conf, postmaster/postgres flags, or SET commands (Peter E)
1727 Improved handling of file descriptor cache (Tom)
1728 New warning code about auto-created table alias entries (Bruce)
1729 Overhaul initdb process (Tom, Peter E)
1730 Overhaul of inherited tables; inherited tables now accessed by default;
1731 new ONLY keyword prevents it (Chris Bitmead, Tom)
1732 ODBC cleanups/improvements (Nick Gorham, Stephan Szabo, Zoltan Kovacs,
1734 Allow renaming of temp tables (Tom)
1735 Overhaul memory manager contexts (Tom)
1736 pg_dumpall uses CREATE USER or CREATE GROUP rather using COPY (Peter E)
1737 Overhaul pg_dump (Philip Warner)
1738 Allow pg_hba.conf secondary password file to specify only username (Peter E)
1739 Allow TEMPORARY or TEMP keyword when creating temporary tables (Bruce)
1740 New memory leak checker (Karel)
1741 New SET SESSION CHARACTERISTICS (Thomas)
1742 Allow nested block comments (Thomas)
1743 Add WITHOUT TIME ZONE type qualifier (Thomas)
1744 New ALTER TABLE ADD CONSTRAINT (Stephan)
1745 Use NUMERIC accumulators for INTEGER aggregates (Tom)
1746 Overhaul aggregate code (Tom)
1747 New VARIANCE and STDDEV() aggregates
1748 Improve dependency ordering of pg_dump (Philip)
1749 New pg_restore command (Philip)
1750 New pg_dump tar output option (Philip)
1751 New pg_dump of large objects (Philip)
1752 New ESCAPE option to LIKE (Thomas)
1753 New case-insensitive LIKE - ILIKE (Thomas)
1754 Allow functional indexes to use binary-compatible type (Tom)
1755 Allow SQL functions to be used in more contexts (Tom)
1756 New pg_config utility (Peter E)
1757 New PL/pgSQL EXECUTE command which allows dynamic SQL and utility statements
1759 New PL/pgSQL GET DIAGNOSTICS statement for SPI value access (Jan)
1760 New quote_identifiers() and quote_literal() functions (Jan)
1761 New ALTER TABLE table OWNER TO user command (Mark Hollomon)
1762 Allow subselects in FROM, i.e. FROM (SELECT ...) [AS] alias (Tom)
1763 Update PyGreSQL to version 3.1 (D'Arcy)
1764 Store tables as files named by OID (Vadim)
1765 New SQL function setval(seq,val,bool) for use in pg_dump (Philip)
1766 Require DROP VIEW to remove views, no DROP TABLE (Mark)
1767 Allow DROP VIEW view1, view2 (Mark)
1768 Allow multiple objects in DROP INDEX, DROP RULE, and DROP TYPE (Tom)
1769 Allow automatic conversion to/from Unicode (Tatsuo, Eiji)
1770 New /contrib/pgcrypto hashing functions (Marko Kreen)
1771 New pg_dumpall --globals-only option (Peter E)
1772 New CHECKPOINT command for WAL which creates new WAL log file (Vadim)
1773 New AT TIME ZONE syntax (Thomas)
1774 Allow location of Unix domain socket to be configurable (David J. MacKenzie)
1775 Allow postmaster to listen on a specific IP address (David J. MacKenzie)
1776 Allow socket path name to be specified in hostname by using leading slash
1777 (David J. MacKenzie)
1778 Allow CREATE DATABASE to specify template database (Tom)
1779 New utility to convert MySQL schema dumps to SQL92 and PostgreSQL (Thomas)
1780 New /contrib/rserv replication toolkit (Vadim)
1781 New file format for COPY BINARY (Tom)
1782 New /contrib/oid2name to map numeric files to table names (B Palmer)
1783 New "idle in transaction" ps status message (Marc)
1784 Update to pgaccess 0.98.7 (Constantin Teodorescu)
1785 pg_ctl now defaults to -w (wait) on shutdown, new -l (log) option
1786 Add rudimentary dependency checking to pg_dump (Philip)
1790 Fix INET/CIDR type ordering and add new functions (Tom)
1791 Make OID behave as an unsigned type (Tom)
1792 Allow BIGINT as synonym for INT8 (Peter E)
1793 New int2 and int8 comparison operators (Tom)
1794 New BIT and BIT VARYING types (Adriaan Joubert, Tom, Peter E)
1795 CHAR() no longer faster than VARCHAR() because of TOAST (Tom)
1796 New GIST seg/cube examples (Gene Selkov)
1797 Improved round(numeric) handling (Tom)
1798 Fix CIDR output formatting (Tom)
1799 New CIDR abbrev() function (Tom)
1803 Write-Ahead Log (WAL) to provide crash recovery with less performance
1805 ANALYZE stage of VACUUM no longer exclusively locks table (Bruce)
1806 Reduced file seeks (Denis Perchine)
1807 Improve BTREE code for duplicate keys (Tom)
1808 Store all large objects in a single table (Denis Perchine, Tom)
1809 Improve memory allocation performance (Karel, Tom)
1813 New function manager call conventions (Tom)
1814 SGI portability fixes (David Kaelbling)
1815 New configure --enable-syslog option (Peter E)
1816 New BSDI README (Bruce)
1817 configure script moved to top level, not /src (Peter E)
1818 Makefile/configuration/compilation overhaul (Peter E)
1819 New configure --with-python option (Peter E)
1820 Solaris cleanups (Peter E)
1821 Overhaul /contrib Makefiles (Karel)
1822 New OpenSSL configuration option (Magnus, Peter E)
1824 QNX fixes (Maurizio)
1825 New heap_open(), heap_openr() API (Tom)
1826 Remove colon and semi-colon operators (Thomas)
1827 New pg_class.relkind value for views (Mark Hollomon)
1828 Rename ichar() to chr() (Karel)
1829 New documentation for btrim(), ascii(), chr(), repeat() (Karel)
1830 Fixes for NT/Cygwin (Pete Forman)
1831 AIX port fixes (Andreas)
1832 New BeOS port (David Reid, Cyril Velter)
1833 Add proofreader's changes to docs (Addison-Wesley, Bruce)
1834 New Alpha spinlock code (Adriaan Joubert, Compaq)
1835 UnixWare port overhaul (Peter E)
1836 New Darwin/MacOS X port (Peter Bierman, Bruce Hartzler)
1837 New FreeBSD Alpha port (Alfred)
1838 Overhaul shared memory segments (Tom)
1839 Add IBM S/390 support (Neale Ferguson)
1840 Moved macmanuf to /contrib (Larry Rosenman)
1841 Syslog improvements (Larry Rosenman)
1842 New template0 database that contains no user additions (Tom)
1843 New /contrib/cube and /contrib/seg GIST sample code (Gene Selkov)
1844 Allow NetBSD's libedit instead of readline (Peter)
1845 Improved assembly language source code format (Bruce)
1846 New contrib/pg_logger
1847 New --template option to createdb
1848 New contrib/pg_control utility (Oliver)
1849 New FreeBSD tools ipc_check, start-scripts/freebsd
1856 <sect1 id="release-7-0-3">
1857 <title>Release 7.0.3</title>
1860 <title>Release date</title>
1861 <simpara>2000-11-11</simpara>
1865 This has a variety of fixes from 7.0.2.
1870 <title>Migration to version 7.0.3</title>
1873 A dump/restore is <emphasis>not</emphasis> required for those running
1879 <title>Changes</title>
1884 Large object fix (Tom)
1885 Fix lean in COPY WITH OIDS leak (Tom)
1886 Fix backwards-index-scan (Tom)
1887 Fix SELECT ... FOR UPDATE so it checks for duplicate keys (Hiroshi)
1888 Add --enable-syslog to configure (Marc)
1889 Fix abort transaction at backend exit in rare cases (Tom)
1890 Fix for psql \l+ when multibyte enabled (Tatsuo)
1891 Allow PL/pgSQL to accept non ascii identifiers (Tatsuo)
1892 Make vacuum always flush buffers (Tom)
1893 Fix to allow cancel while waiting for a lock (Hiroshi)
1894 Fix for memory aloocation problem in user authentication code (Tom)
1895 Remove bogus use of int4out() (Tom)
1896 Fixes for multiple subqueries in COALESCE or BETWEEN (Tom)
1897 Fix for failure of triggers on heap open in certain cases (Jeroen van
1899 Fix for erroneous selectivity of not-equals (Tom)
1900 Fix for erroneous use of strcmp() (Tom)
1901 Fix for bug where storage manager accesses items beyond end of file
1903 Fix to include kernel errno message in all smgr elog messages (Tom)
1904 Fix for '.' not in PATH at build time (SL Baur)
1905 Fix for out-of-file-descriptors error (Tom)
1906 Fix to make pg_dump dump 'iscachable' flag for functions (Tom)
1907 Fix for subselect in targetlist of Append node (Tom)
1908 Fix for mergejoin plans (Tom)
1909 Fix TRUNCATE failure on relations with indexes (Tom)
1910 Avoid database-wide restart on write error (Hiroshi)
1911 Fix nodeMaterial to honor chgParam by recomputing its output (Tom)
1912 Fix VACUUM problem with moving chain of update tuples when source and
1913 destination of a tuple lie on the same page (Tom)
1914 Fix user.c CommandCounterIncrement (Tom)
1915 Fix for AM/PM boundary problem in to_char() (Karel Zak)
1916 Fix TIME aggregate handling (Tom)
1917 Fix to_char() to avoid coredump on NULL input (Tom)
1919 Fix for inserting/copying longer multibyte strings into char() data
1921 Fix for crash of backend, on abort (Tom)
1928 <sect1 id="release-7-0-2">
1929 <title>Release 7.0.2</title>
1932 <title>Release date</title>
1933 <simpara>2000-06-05</simpara>
1937 This is a repackaging of 7.0.1 with added documentation.
1942 <title>Migration to version 7.0.2</title>
1945 A dump/restore is <emphasis>not</emphasis> required for those running
1951 <title>Changes</title>
1955 Added documentation to tarball.
1962 <sect1 id="release-7-0-1">
1963 <title>Release 7.0.1</title>
1966 <title>Release date</title>
1967 <simpara>2000-06-01</simpara>
1971 This is a cleanup release for 7.0.
1975 <title>Migration to version 7.0.1</title>
1978 A dump/restore is <emphasis>not</emphasis> required for those running
1984 <title>Changes</title>
1988 Fix many CLUSTER failures (Tom)
1989 Allow ALTER TABLE RENAME works on indexes (Tom)
1990 Fix plpgsql to handle datetime->timestamp and timespan->interval (Bruce)
1991 New configure --with-setproctitle switch to use setproctitle() (Marc, Bruce)
1992 Fix the off by one errors in ResultSet from 6.5.3, and more.
1993 jdbc ResultSet fixes (Joseph Shraibman)
1994 optimizer tunings (Tom)
1995 Fix create user for pgaccess
1996 Fix for UNLISTEN failure
1997 IRIX fixes (David Kaelbling)
1998 QNX fixes (Andreas Kardos)
1999 Reduce COPY IN lock level (Tom)
2000 Change libpqeasy to use PQconnectdb() style parameters (Bruce)
2001 Fix pg_dump to handle OID indexes (Tom)
2002 Fix small memory leak (Tom)
2003 Solaris fix for createdb/dropdb (Tatsuo)
2004 Fix for non-blocking connections (Alfred Perlstein)
2005 Fix improper recovery after RENAME TABLE failures (Tom)
2006 Copy pg_ident.conf.sample into /lib directory in install (Bruce)
2007 Add SJIS UDC (NEC selection IBM kanji) support (Eiji Tokuya)
2008 Fix too long syslog message (Tatsuo)
2009 Fix problem with quoted indexes that are too long (Tom)
2010 JDBC ResultSet.getTimestamp() fix (Gregory Krasnow & Floyd Marinescu)
2011 ecpg changes (Michael)
2017 <sect1 id="release-7-0">
2018 <title>Release 7.0</title>
2021 <title>Release date</title>
2022 <simpara>2000-05-08</simpara>
2026 This release contains improvements in many areas, demonstrating
2027 the continued growth of <productname>PostgreSQL</productname>.
2028 There are more improvements and fixes in 7.0 than in any previous
2029 release. The developers have confidence that this is the best
2030 release yet; we do our best to put out only solid releases, and
2031 this one is no exception.
2035 Major changes in this release:
2044 Foreign keys are now implemented, with the exception of PARTIAL MATCH
2045 foreign keys. Many users have been asking for this feature, and we are
2046 pleased to offer it.
2057 Continuing on work started a year ago, the optimizer has been
2058 improved, allowing better query plan selection and faster performance
2059 with less memory usage.
2066 Updated <application>psql</application>
2070 <application>psql</application>, our interactive terminal monitor, has been
2071 updated with a variety of new features. See the <application>psql</application> manual page for details.
2082 SQL92 join syntax is now supported, though only as
2083 <literal>INNER JOIN</> for this release. <literal>JOIN</>,
2084 <literal>NATURAL JOIN</>, <literal>JOIN</>/<literal>USING</>,
2085 and <literal>JOIN</>/<literal>ON</> are available, as are
2086 column correlation names.
2098 In 7.1 or 7.2, we plan to have outer joins, storage for very long rows, and a
2099 write-ahead logging system.
2108 <title>Migration to version 7.0</title>
2111 A dump/restore using <application>pg_dump</application>
2112 is required for those wishing to migrate data from any
2113 previous release of <productname>PostgreSQL</productname>.
2114 For those upgrading from 6.5.*, you may instead use
2115 <application>pg_upgrade</application> to upgrade to this
2116 release; however, a full dump/reload installation is always the
2117 most robust method for upgrades.
2121 Interface and compatibility issues to consider for the new
2127 The date/time types <type>datetime</type> and
2128 <type>timespan</type> have been superseded by the
2129 SQL92-defined types <type>timestamp</type> and
2130 <type>interval</type>. Although there has been some effort to
2131 ease the transition by allowing
2132 <productname>PostgreSQL</productname> to recognize
2133 the deprecated type names and translate them to the new type
2134 names, this mechanism may not be completely transparent to
2135 your existing application.
2141 The optimizer has been substantially improved in the area of
2142 query cost estimation. In some cases, this will result in
2143 decreased query times as the optimizer makes a better choice
2144 for the preferred plan. However, in a small number of cases,
2145 usually involving pathological distributions of data, your
2146 query times may go up. If you are dealing with large amounts
2147 of data, you may want to check your queries to verify
2154 The <acronym>JDBC</acronym> and <acronym>ODBC</acronym>
2155 interfaces have been upgraded and extended.
2161 The string function <function>CHAR_LENGTH</function> is now a
2162 native function. Previous versions translated this into a call
2163 to <function>LENGTH</function>, which could result in
2164 ambiguity with other types implementing
2165 <function>LENGTH</function> such as the geometric types.
2174 <title>Changes</title>
2180 Prevent function calls exceeding maximum number of arguments (Tom)
2181 Improve CASE construct (Tom)
2182 Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
2183 Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
2184 Fix GROUP BY scan bug (Tom)
2185 Improvements in SQL grammar processing (Tom)
2186 Fix for views involved in INSERT ... SELECT ... (Tom)
2187 Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom)
2188 Fix for subselects in INSERT ... SELECT (Tom)
2189 Prevent INSERT ... SELECT ... ORDER BY (Tom)
2190 Fixes for relations greater than 2GB, including vacuum
2191 Improve propagating system table changes to other backends (Tom)
2192 Improve propagating user table changes to other backends (Tom)
2193 Fix handling of temp tables in complex situations (Bruce, Tom)
2194 Allow table locking at table open, improving concurrent reliability (Tom)
2195 Properly quote sequence names in pg_dump (Ross J. Reedstrom)
2196 Prevent DROP DATABASE while others accessing
2197 Prevent any rows from being returned by GROUP BY if no rows processed (Tom)
2198 Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom)
2199 Fix pg_upgrade so it works for MVCC (Tom)
2200 Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) > 1) (Tom)
2201 Fix for "f1 datetime DEFAULT 'now'" (Tom)
2202 Fix problems with CURRENT_DATE used in DEFAULT (Tom)
2203 Allow comment-only lines, and ;;; lines too. (Tom)
2204 Improve recovery after failed disk writes, disk full (Hiroshi)
2205 Fix cases where table is mentioned in FROM but not joined (Tom)
2206 Allow HAVING clause without aggregate functions (Tom)
2207 Fix for "--" comment and no trailing newline, as seen in perl interface
2208 Improve pg_dump failure error reports (Bruce)
2209 Allow sorts and hashes to exceed 2GB file sizes (Tom)
2210 Fix for pg_dump dumping of inherited rules (Tom)
2211 Fix for NULL handling comparisons (Tom)
2212 Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi)
2213 Fix for dbname with dash
2214 Prevent DROP INDEX from interfering with other backends (Tom)
2215 Fix file descriptor leak in verify_password()
2216 Fix for "Unable to identify an operator =$" problem
2217 Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann)
2218 Fix for recursive exit call (Massimo)
2219 Fix for extra-long timezones (Jeroen van Vianen)
2220 Make pg_dump preserve primary key information (Peter E)
2221 Prevent databases with single quotes (Peter E)
2222 Prevent DROP DATABASE inside transaction (Peter E)
2223 ecpg memory leak fixes (Stephen Birch)
2224 Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom)
2225 Y2K timestamp fix (Massimo)
2226 Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom)
2227 Fix for views with tables/columns containing spaces (Tom)
2228 Prevent permissions on indexes (Peter E)
2229 Fix for spinlock stuck problem when error is generated (Hiroshi)
2230 Fix ipcclean on Linux
2231 Fix handling of NULL constraint conditions (Tom)
2232 Fix memory leak in odbc driver (Nick Gorham)
2233 Fix for permission check on UNION tables (Tom)
2234 Fix to allow SELECT 'a' LIKE 'a' (Tom)
2235 Fix for SELECT 1 + NULL (Tom)
2237 Fix log() on numeric type (Tom)
2238 Deprecate ':' and ';' operators
2239 Allow vacuum of temporary tables
2240 Disallow inherited columns with the same name as new columns
2241 Recover or force failure when disk space is exhausted (Hiroshi)
2242 Fix INSERT INTO ... SELECT with AS columns matching result columns
2243 Fix INSERT ... SELECT ... GROUP BY groups by target columns not source columns (Tom)
2244 Fix CREATE TABLE test (a char(5) DEFAULT text '', b int4) with INSERT (Tom)
2245 Fix UNION with LIMIT
2246 Fix CREATE TABLE x AS SELECT 1 UNION SELECT 2
2247 Fix CREATE TABLE test(col char(2) DEFAULT user)
2248 Fix mismatched types in CREATE TABLE ... DEFAULT
2249 Fix SELECT * FROM pg_class where oid in (0,-1)
2250 Fix SELECT COUNT('asdf') FROM pg_class WHERE oid=12
2251 Prevent user who can create databases can modifying pg_database table (Peter E)
2252 Fix btree to give a useful elog when key > 1/2 (page - overhead) (Tom)
2253 Fix INSERT of 0.0 into DECIMAL(4,4) field (Tom)
2257 New CLI interface include file sqlcli.h, based on SQL3/SQL98
2258 Remove all limits on query length, row length limit still exists (Tom)
2259 Update jdbc protocol to 2.0 (Jens Glaser <email>jens@jens.de</email>)
2260 Add TRUNCATE command to quickly truncate relation (Mike Mascari)
2261 Fix to give super user and createdb user proper update catalog rights (Peter E)
2262 Allow ecpg bool variables to have NULL values (Christof)
2263 Issue ecpg error if NULL value for variable with no NULL indicator (Christof)
2264 Allow ^C to cancel COPY command (Massimo)
2265 Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo)
2266 Function name overloading for dynamically-loaded C functions (Frankpitt)
2267 Add CmdTuples() to libpq++(Vince)
2268 New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan)
2269 Allow CREATE FUNCTION/WITH clause to be used for all language types
2270 configure --enable-debug adds -g (Peter E)
2271 configure --disable-debug removes -g (Peter E)
2272 Allow more complex default expressions (Tom)
2273 First real FOREIGN KEY constraint trigger functionality (Jan)
2274 Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan)
2275 Add FOREIGN KEY ... MATCH <unspecified> referential actions (Don Baccus)
2276 Allow WHERE restriction on ctid (physical heap location) (Hiroshi)
2277 Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
2278 Change pgeasy connectdb() parameter ordering (Bruce)
2279 Require SELECT DISTINCT target list to have all ORDER BY columns (Tom)
2280 Add Oracle's COMMENT ON command (Mike Mascari <email>mascarim@yahoo.com</email>)
2281 libpq's PQsetNoticeProcessor function now returns previous hook(Peter E)
2282 Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
2283 Make USING in COPY optional (Bruce)
2284 Allow subselects in the target list (Tom)
2285 Allow subselects on the left side of comparison operators (Tom)
2286 New parallel regression test (Jan)
2287 Change backend-side COPY to write files with permissions 644 not 666 (Tom)
2288 Force permissions on PGDATA directory to be secure, even if it exists (Tom)
2289 Added psql LASTOID variable to return last inserted oid (Peter E)
2290 Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom)
2291 Add permissions check for vacuum (Peter E)
2292 New libpq functions to allow asynchronous connections: PQconnectStart(),
2293 PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(),
2294 PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
2295 New libpq PQsetenv() function (Ewan Mellor)
2296 create/alter user extension (Peter E)
2297 New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo)
2298 New scripts for create/drop user/db (Peter E)
2299 Major psql overhaul (Peter E)
2300 Add const to libpq interface (Peter E)
2301 New libpq function PQoidValue (Peter E)
2302 Show specific non-aggregate causing problem with GROUP BY (Tom)
2303 Make changes to pg_shadow recreate pg_pwd file (Peter E)
2304 Add aggregate(DISTINCT ...) (Tom)
2305 Allow flag to control COPY input/output of NULLs (Peter E)
2306 Make postgres user have a password by default (Peter E)
2307 Add CREATE/ALTER/DROP GROUP (Peter E)
2308 All administration scripts now support --long options (Peter E, Karel)
2309 Vacuumdb script now supports --all option (Peter E)
2310 ecpg new portable FETCH syntax
2311 Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF
2312 and EXEC SQL ENDIF directives
2313 Add pg_ctl script to control backend start-up (Tatsuo)
2314 Add postmaster.opts.default file to store start-up flags (Tatsuo)
2315 Allow --with-mb=SQL_ASCII
2316 Increase maximum number of index keys to 16 (Bruce)
2317 Increase maximum number of function arguments to 16 (Bruce)
2318 Allow configuration of maximum number of index keys and arguments (Bruce)
2319 Allow unprivileged users to change their passwords (Peter E)
2320 Password authentication enabled; required for new users (Peter E)
2321 Disallow dropping a user who owns a database (Peter E)
2322 Change initdb option --with-mb to --enable-multibyte
2323 Add option for initdb to prompts for superuser password (Peter E)
2324 Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom)
2325 Updated user interfaces on initdb, initlocation, pg_dump, ipcclean (Peter E)
2326 New pg_char_to_encoding() and pg_encoding_to_char() functions (Tatsuo)
2327 Libpq non-blocking mode (Alfred Perlstein)
2328 Improve conversion of types in casts that don't specify a length
2329 New plperl internal programming language (Mark Hollomon)
2330 Allow COPY IN to read file that do not end with a newline (Tom)
2331 Indicate when long identifiers are truncated (Tom)
2332 Allow aggregates to use type equivalency (Peter E)
2333 Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number()
2334 conversion functions (Karel Zak <zakkr@zf.jcu.cz>)
2335 Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
2336 Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
2337 Add NUMERIC and int8 types to ODBC
2338 Improve EXPLAIN results for Append, Group, Agg, Unique (Tom)
2339 Add ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo)
2340 Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi)
2341 Enable backward sequential scan even after reaching EOF (Hiroshi)
2342 Add btree indexing of boolean values, >= and <= (Don Baccus)
2343 Print current line number when COPY FROM fails (Massimo)
2344 Recognize POSIX time zone e.g. "PST+8" and "GMT-8" (Thomas)
2345 Add DEC as synonym for DECIMAL (Thomas)
2346 Add SESSION_USER as SQL92 keyword, same as CURRENT_USER (Thomas)
2347 Implement SQL92 column aliases (aka correlation names) (Thomas)
2348 Implement SQL92 join syntax (Thomas)
2349 Make INTERVAL reserved word allowed as a column identifier (Thomas)
2350 Implement REINDEX command (Hiroshi)
2351 Accept ALL in aggregate function SUM(ALL col) (Tom)
2352 Prevent GROUP BY from using column aliases (Tom)
2353 New psql \encoding option (Tatsuo)
2354 Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi)
2355 Allow negation of a negative number in all cases
2356 Add ecpg descriptors (Christof, Michael)
2357 Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl
2358 Allow casts with length, like foo::char(8)
2359 New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo)
2360 Add support for SJIS user defined characters (Tatsuo)
2361 Larger views/rules supported
2362 Make libpq's PQconndefaults() thread-safe (Tom)
2363 Disable // as comment to be ANSI conforming, should use -- (Tom)
2364 Allow column aliases on views CREATE VIEW name (collist)
2365 Fixes for views with subqueries (Tom)
2366 Allow UPDATE table SET fld = (SELECT ...) (Tom)
2367 SET command options no longer require quotes
2368 Update pgaccess to 0.98.6
2369 New SET SEED command
2370 New pg_options.sample file
2371 New SET FSYNC command (Massimo)
2372 Allow pg_descriptions when creating tables
2373 Allow pg_descriptions when creating types, columns, and functions
2374 Allow psql \copy to allow delimiters (Peter E)
2375 Allow psql to print nulls as distinct from "" [null] (Peter E)
2379 Many array fixes (Tom)
2380 Allow bare column names to be subscripted as arrays (Tom)
2381 Improve type casting of int and float constants (Tom)
2382 Cleanups for int8 inputs, range checking, and type conversion (Tom)
2383 Fix for SELECT timespan('21:11:26'::time) (Tom)
2384 netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0 (Oleg Sharoiko)
2385 Add btree index on NUMERIC (Jan)
2386 Perl fix for large objects containing NUL characters (Douglas Thomson)
2387 ODBC fix for for large objects (free)
2388 Fix indexing of cidr data type
2389 Fix for Ethernet MAC addresses (macaddr type) comparisons
2390 Fix for date/time types when overflows happened in computations (Tom)
2391 Allow array on int8 (Peter E)
2392 Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom)
2393 Allow NUMERIC arrays
2394 Fix bugs in NUMERIC ceil() and floor() functions (Tom)
2395 Make char_length()/octet_length including trailing blanks (Tom)
2396 Made abstime/reltime use int4 instead of time_t (Peter E)
2397 New lztext data type for compressed text fields
2398 Revise code to handle coercion of int and float constants (Tom)
2399 Start at new code to implement a BIT and BIT VARYING type (Adriaan Joubert)
2400 NUMERIC now accepts scientific notation (Tom)
2401 NUMERIC to int4 rounds (Tom)
2402 Convert float4/8 to NUMERIC properly (Tom)
2403 Allow type conversion with NUMERIC (Thomas)
2404 Make ISO date style (2000-02-16 09:33) the default (Thomas)
2405 Add NATIONAL CHAR [ VARYING ] (Thomas)
2406 Allow NUMERIC round and trunc to accept negative scales (Tom)
2407 New TIME WITH TIME ZONE type (Thomas)
2408 Add MAX()/MIN() on time type (Thomas)
2409 Add abs(), mod(), fac() for int8 (Thomas)
2410 Rename functions to round(), sqrt(), cbrt(), pow() for float8 (Thomas)
2411 Add transcendental math functions (e.g. sin(), acos()) for float8 (Thomas)
2412 Add exp() and ln() for NUMERIC type
2413 Rename NUMERIC power() to pow() (Thomas)
2414 Improved TRANSLATE() function (Edwin Ramirez, Tom)
2415 Allow X=-Y operators (Tom)
2416 Allow SELECT float8(COUNT(*))/(SELECT COUNT(*) FROM t) FROM t GROUP BY f1; (Tom)
2417 Allow LOCALE to use indexes in regular expression searches (Tom)
2418 Allow creation of functional indexes to use default types
2422 Prevent exponential space consumption with many AND's and OR's (Tom)
2423 Collect attribute selectivity values for system columns (Tom)
2424 Reduce memory usage of aggregates (Tom)
2425 Fix for LIKE optimization to use indexes with multibyte encodings (Tom)
2426 Fix r-tree index optimizer selectivity (Thomas)
2427 Improve optimizer selectivity computations and functions (Tom)
2428 Optimize btree searching for cases where many equal keys exist (Tom)
2429 Enable fast LIKE index processing only if index present (Tom)
2430 Re-use free space on index pages with duplicates (Tom)
2431 Improve hash join processing (Tom)
2432 Prevent descending sort if result is already sorted(Hiroshi)
2433 Allow commuting of index scan query qualifications (Tom)
2434 Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom)
2435 Allocate large memory requests in fix-sized chunks for performance (Tom)
2436 Fix vacuum's performance by reducing memory allocation requests (Tom)
2437 Implement constant-expression simplification (Bernard Frankpitt, Tom)
2438 Use secondary columns to be used to determine start of index scan (Hiroshi)
2439 Prevent quadruple use of disk space when doing internal sorting (Tom)
2440 Faster sorting by calling fewer functions (Tom)
2441 Create system indexes to match all system caches (Bruce, Hiroshi)
2442 Make system caches use system indexes (Bruce)
2443 Make all system indexes unique (Bruce)
2444 Improve pg_statistics management for VACUUM speed improvement (Tom)
2445 Flush backend cache less frequently (Tom, Hiroshi)
2446 COPY now reuses previous memory allocation, improving performance (Tom)
2447 Improve optimization cost estimation (Tom)
2448 Improve optimizer estimate of range queries x > lowbound AND x < highbound (Tom)
2449 Use DNF instead of CNF where appropriate (Tom, Taral)
2450 Further cleanup for OR-of-AND WHERE-clauses (Tom)
2451 Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom)
2452 Smarter optimizer computations for random index page access (Tom)
2453 New SET variable to control optimizer costs (Tom)
2454 Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
2455 Reduce optimizer internal housekeeping of join paths for speedup (Tom)
2456 Major subquery speedup (Tom)
2457 Fewer fsync writes when fsync is not disabled (Tom)
2458 Improved LIKE optimizer estimates (Tom)
2459 Prevent fsync in SELECT-only queries (Vadim)
2460 Make index creation use psort code, because it is now faster (Tom)
2461 Allow creation of sort temp tables > 1 Gig
2465 Fix for linux PPC compile
2466 New generic expression-tree-walker subroutine (Tom)
2467 Change form() to varargform() to prevent portability problems
2468 Improved range checking for large integers on Alphas
2469 Clean up #include in /include directory (Bruce)
2470 Add scripts for checking includes (Bruce)
2471 Remove un-needed #include's from *.c files (Bruce)
2472 Change #include's to use <> and "" as appropriate (Bruce)
2473 Enable WIN32 compilation of libpq
2474 Alpha spinlock fix from Uncle George <email>gatgul@voicenet.com</email>
2475 Overhaul of optimizer data structures (Tom)
2476 Fix to cygipc library (Yutaka Tanida)
2477 Allow pgsql to work on newer Cygwin snapshots (Dan)
2478 New catalog version number (Tom)
2480 Rename heap_replace to heap_update
2481 Update for QNX (Dr. Andreas Kardos)
2482 New platform-specific regression handling (Tom)
2483 Rename oid8 -> oidvector and int28 -> int2vector (Bruce)
2484 Included all yacc and lex files into the distribution (Peter E.)
2485 Remove lextest, no longer needed (Peter E)
2486 Fix for libpq and psql on Win32 (Magnus)
2487 Internally change datetime and timespan into timestamp and interval (Thomas)
2488 Fix for plpgsql on BSD/OS
2489 Add SQL_ASCII test case to the regression test (Tatsuo)
2490 configure --with-mb now deprecated (Tatsuo)
2492 NetBSD fixes (Johnny C. Lam <email>lamj@stat.cmu.edu</email>)
2493 Fixes for Alpha compiles
2494 New multibyte encodings
2500 <sect1 id="release-6-5-3">
2501 <title>Release 6.5.3</title>
2504 <title>Release date</title>
2505 <simpara>1999-10-13</simpara>
2509 This is basically a cleanup release for 6.5.2. We have added a new
2510 <application>PgAccess</> that was missing in 6.5.2, and installed an NT-specific fix.
2515 <title>Migration to version 6.5.3</title>
2518 A dump/restore is <emphasis>not</emphasis> required for those running
2523 <title>Changes</title>
2527 Updated version of pgaccess 0.98
2529 Fix dumping rules on inherited tables
2536 <sect1 id="release-6-5-2">
2537 <title>Release 6.5.2</title>
2540 <title>Release date</title>
2541 <simpara>1999-09-15</simpara>
2545 This is basically a cleanup release for 6.5.1. We have fixed a variety of
2546 problems reported by 6.5.1 users.
2551 <title>Migration to version 6.5.2</title>
2554 A dump/restore is <emphasis>not</emphasis> required for those running
2560 <title>Changes</title>
2564 subselect+CASE fixes(Tom)
2565 Add SHLIB_LINK setting for solaris_i386 and solaris_sparc ports(Daren Sefcik)
2566 Fixes for CASE in WHERE join clauses(Tom)
2567 Fix BTScan abort(Tom)
2568 Repair the check for redundant UNIQUE and PRIMARY KEY indexes(Thomas)
2569 Improve it so that it checks for multicolumn constraints(Thomas)
2570 Fix for Win32 making problem with MB enabled(Hiroki Kataoka)
2571 Allow BSD yacc and bison to compile pl code(Bruce)
2572 Fix SET NAMES working
2574 Fix vacuum's memory consumption(Hiroshi,Tatsuo)
2575 Reduce the total memory consumption of vacuum(Tom)
2576 Fix for timestamp(datetime)
2577 Rule deparsing bugfixes(Tom)
2578 Fix quoting problems in mkMakefile.tcldefs.sh.in and mkMakefile.tkdefs.sh.in(Tom)
2579 This is to re-use space on index pages freed by vacuum(Vadim)
2580 document -x for pg_dump(Bruce)
2581 Fix for unary operators in rule deparser(Tom)
2582 Comment out FileUnlink of excess segments during mdtruncate()(Tom)
2583 IRIX linking fix from Yu Cao >yucao@falcon.kla-tencor.com<
2584 Repair logic error in LIKE: should not return LIKE_ABORT
2585 when reach end of pattern before end of text(Tom)
2586 Repair incorrect cleanup of heap memory allocation during transaction abort(Tom)
2587 Updated version of pgaccess 0.98
2593 <sect1 id="release-6-5-1">
2594 <title>Release 6.5.1</title>
2597 <title>Release date</title>
2598 <simpara>1999-07-15</simpara>
2602 This is basically a cleanup release for 6.5. We have fixed a variety of
2603 problems reported by 6.5 users.
2607 <title>Migration to version 6.5.1</title>
2610 A dump/restore is <emphasis>not</emphasis> required for those running
2616 <title>Changes</title>
2621 Portability fixes for linux_ppc, IRIX, linux_alpha, OpenBSD, alpha
2622 Remove QUERY_LIMIT, use SELECT...LIMIT
2623 Fix for EXPLAIN on inheritance(Tom)
2624 Patch to allow vacuum on multisegment tables(Hiroshi)
2625 R-Tree optimizer selectivity fix(Tom)
2626 ACL file descriptor leak fix(Atsushi Ogawa)
2627 New expresssion subtree code(Tom)
2628 Avoid disk writes for read-only transactions(Vadim)
2629 Fix for removal of temp tables if last transaction was aborted(Bruce)
2630 Fix to prevent too large tuple from being created(Bruce)
2632 Allow port numbers 32k - 64k(Bruce)
2633 Add ^ precidence(Bruce)
2634 Rename sort files called pg_temp to pg_sorttemp(Bruce)
2635 Fix for microseconds in time values(Tom)
2636 Tutorial source cleanup
2638 Fix for sorting of NULL's in some cases(Tom)
2639 Shared library dependencies fixed (Tom)
2640 Fixed glitches affecting GROUP BY in subselects(Tom)
2641 Fix some compiler warnings (Tomoaki Nishiyama)
2642 Add Win1250 (Czech) support (Pavel Behal)
2648 <sect1 id="release-6-5">
2649 <title>Release 6.5</title>
2652 <title>Release date</title>
2653 <simpara>1999-06-09</simpara>
2657 This release marks a major step in the development team's mastery of the source
2658 code we inherited from Berkeley. You will see we are now easily adding
2659 major features, thanks to the increasing size and experience of our
2660 world-wide development team.
2664 Here is a brief summary of the more notable changes:
2669 Multiversion concurrency control(MVCC)
2673 This removes our old
2674 table-level locking, and replaces it with a locking system that is
2675 superior to most commercial database systems. In a traditional system,
2676 each row that is modified is locked until committed, preventing reads by
2677 other users. MVCC uses the natural multiversion nature of PostgreSQL
2678 to allow readers to continue reading consistent data during writer
2679 activity. Writers continue to use the compact pg_log transaction
2680 system. This is all performed without having to allocate a lock for
2681 every row like traditional database systems. So, basically, we no
2682 longer are restricted by simple table-level locking;
2683 we have something better than row-level locking.
2690 Hot backups from <application>pg_dump</application>
2694 <application>pg_dump</application> takes advantage of the new
2695 MVCC features to give a consistent database dump/backup while
2696 the database stays online and available for queries.
2707 We now have a true numeric data type, with
2708 user-specified precision.
2719 Temporary tables are guaranteed to have unique names
2720 within a database session, and are destroyed on session exit.
2731 We now have CASE, INTERSECT, and EXCEPT statement
2732 support. We have new LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL,
2733 SELECT ... FOR UPDATE, and an improved LOCK TABLE command.
2744 We continue to speed up PostgreSQL, thanks to the variety of
2745 talents within our team. We have sped up memory allocation,
2746 optimization, table joins, and row transfer routines.
2757 We continue to expand our port list, this time including
2758 <systemitem class="osname">Windows NT</>/<systemitem>ix86</> and <systemitem class="osname">NetBSD</>/<systemitem>arm32</>.
2769 Most interfaces have new versions, and existing functionality
2781 New and updated material is present throughout the
2782 documentation. New <acronym>FAQ</acronym>s have been
2783 contributed for <systemitem class="osname">SGI</> and <systemitem class="osname">AIX</> platforms.
2784 The <citetitle>Tutorial</citetitle> has introductory information
2785 on <acronym>SQL</acronym> from Stefan Simkovics.
2786 For the <citetitle>User's Guide</citetitle>, there are
2787 reference pages covering the postmaster and more utility
2788 programs, and a new appendix
2789 contains details on date/time behavior.
2790 The <citetitle>Administrator's Guide</citetitle> has a new
2791 chapter on troubleshooting from Tom Lane.
2792 And the <citetitle>Programmer's Guide</citetitle> has a
2793 description of query processing, also from Stefan, and details
2794 on obtaining the <productname>PostgreSQL</productname> source
2795 tree via anonymous <productname>CVS</productname> and
2796 <productname>CVSup</productname>.
2804 <title>Migration to version 6.5</title>
2807 A dump/restore using <application>pg_dump</application>
2808 is required for those wishing to migrate data from any
2809 previous release of <productname>PostgreSQL</productname>.
2810 <application>pg_upgrade</application> can <emphasis>not</emphasis>
2811 be used to upgrade to this release because the on-disk structure
2812 of the tables has changed compared to previous releases.
2816 The new Multiversion Concurrency Control (MVCC) features can
2817 give somewhat different behaviors in multiuser
2818 environments. <emphasis>Read and understand the following section
2819 to ensure that your existing applications will give you the
2820 behavior you need.</emphasis>
2824 <title>Multiversion Concurrency Control</title>
2827 Because readers in 6.5 don't lock data, regardless of transaction
2828 isolation level, data read by one transaction can be overwritten by
2829 another. In other words, if a row is returned by
2830 <command>SELECT</command> it doesn't mean that this row really exists
2831 at the time it is returned (i.e. sometime after the statement or
2832 transaction began) nor that the row is protected from being deleted or
2833 updated by concurrent transactions before the current transaction does
2834 a commit or rollback.
2838 To ensure the actual existence of a row and protect it against
2839 concurrent updates one must use <command>SELECT FOR UPDATE</command> or
2840 an appropriate <command>LOCK TABLE</command> statement. This should be
2841 taken into account when porting applications from previous releases of
2842 <productname>PostgreSQL</productname> and other environments.
2846 Keep the above in mind if you are using
2847 <filename>contrib/refint.*</filename> triggers for
2848 referential integrity. Additional techniques are required now. One way is
2849 to use <command>LOCK parent_table IN SHARE ROW EXCLUSIVE MODE</command>
2850 command if a transaction is going to update/delete a primary key and
2851 use <command>LOCK parent_table IN SHARE MODE</command> command if a
2852 transaction is going to update/insert a foreign key.
2856 Note that if you run a transaction in SERIALIZABLE mode then you must
2857 execute the <command>LOCK</command> commands above before execution of any
2858 <acronym>DML</acronym> statement
2859 (<command>SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO</command>) in the
2866 These inconveniences will disappear in the future
2867 when the ability to read dirty
2868 (uncommitted) data (regardless of isolation level) and true referential
2869 integrity will be implemented.
2875 <title>Changes</title>
2881 Fix text<->float8 and text<->float4 conversion functions(Thomas)
2882 Fix for creating tables with mixed-case constraints(Billy)
2883 Change exp()/pow() behavior to generate error on underflow/overflow(Jan)
2884 Fix bug in pg_dump -z
2885 Memory overrun cleanups(Tatsuo)
2886 Fix for lo_import crash(Tatsuo)
2887 Adjust handling of data type names to suppress double quotes(Thomas)
2888 Use type coercion for matching columns and DEFAULT(Thomas)
2889 Fix deadlock so it only checks once after one second of sleep(Bruce)
2890 Fixes for aggregates and PL/pgsql(Hiroshi)
2891 Fix for subquery crash(Vadim)
2892 Fix for libpq function PQfnumber and case-insensitive names(Bahman Rafatjoo)
2893 Fix for large object write-in-middle, no extra block, memory consumption(Tatsuo)
2894 Fix for pg_dump -d or -D and quote special characters in INSERT
2895 Repair serious problems with dynahash(Tom)
2896 Fix INET/CIDR portability problems
2897 Fix problem with selectivity error in ALTER TABLE ADD COLUMN(Bruce)
2898 Fix executor so mergejoin of different column types works(Tom)
2899 Fix for Alpha OR selectivity bug
2900 Fix OR index selectivity problem(Bruce)
2901 Fix so \d shows proper length for char()/varchar()(Ryan)
2902 Fix tutorial code(Clark)
2903 Improve destroyuser checking(Oliver)
2904 Fix for Kerberos(Rodney McDuff)
2905 Fix for dropping database while dirty buffers(Bruce)
2906 Fix so sequence nextval() can be case-sensitive(Bruce)
2908 Drop buffers before destroying database files(Bruce)
2909 Fix case where executor evaluates functions twice(Tatsuo)
2910 Allow sequence nextval actions to be case-sensitive(Bruce)
2911 Fix optimizer indexing not working for negative numbers(Bruce)
2912 Fix for memory leak in executor with fjIsNull
2913 Fix for aggregate memory leaks(Erik Riedel)
2914 Allow username containing a dash GRANT permissions
2915 Cleanup of NULL in inet types
2916 Clean up system table bugs(Tom)
2917 Fix problems of PAGER and \? command(Masaaki Sakaida)
2918 Reduce default multisegment file size limit to 1GB(Peter)
2919 Fix for dumping of CREATE OPERATOR(Tom)
2920 Fix for backward scanning of cursors(Hiroshi Inoue)
2921 Fix for COPY FROM STDIN when using \i(Tom)
2922 Fix for subselect is compared inside an expression(Jan)
2923 Fix handling of error reporting while returning rows(Tom)
2924 Fix problems with reference to array types(Tom,Jan)
2925 Prevent UPDATE SET oid(Jan)
2926 Fix pg_dump so -t option can handle case-sensitive tablenames
2927 Fixes for GROUP BY in special cases(Tom, Jan)
2928 Fix for memory leak in failed queries(Tom)
2929 DEFAULT now supports mixed-case identifiers(Tom)
2930 Fix for multisegment uses of DROP/RENAME table, indexes(Ole Gjerde)
2931 Disable use of pg_dump with both -o and -d options(Bruce)
2932 Allow pg_dump to properly dump GROUP permissions(Bruce)
2933 Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan)
2934 Fix for computations in views(Jan)
2935 Fix for aggregates on array indexes(Tom)
2936 Fix for DEFAULT handles single quotes in value requiring too many quotes
2937 Fix security problem with non-super users importing/exporting large objects(Tom)
2938 Rollback of transaction that creates table cleaned up properly(Tom)
2939 Fix to allow long table and column names to generate proper serial names(Tom)
2943 Add "vacuumdb" utility
2944 Speed up libpq by allocating memory better(Tom)
2945 EXPLAIN all indexes used(Tom)
2946 Implement CASE, COALESCE, NULLIF expression(Thomas)
2947 New pg_dump table output format(Constantin)
2948 Add string min()/max() functions(Thomas)
2949 Extend new type coercion techniques to aggregates(Thomas)
2950 New moddatetime contrib(Terry)
2951 Update to pgaccess 0.96(Constantin)
2952 Add routines for single-byte "char" type(Thomas)
2953 Improved substr() function(Thomas)
2954 Improved multibyte handling(Tatsuo)
2955 Multiversion concurrency control/MVCC(Vadim)
2956 New Serialized mode(Vadim)
2957 Fix for tables over 2gigs(Peter)
2958 New SET TRANSACTION ISOLATION LEVEL(Vadim)
2959 New LOCK TABLE IN ... MODE(Vadim)
2960 Update ODBC driver(Byron)
2961 New NUMERIC data type(Jan)
2962 New SELECT FOR UPDATE(Vadim)
2963 Handle "NaN" and "Infinity" for input values(Jan)
2964 Improved date/year handling(Thomas)
2965 Improved handling of backend connections(Magnus)
2966 New options ELOG_TIMESTAMPS and USE_SYSLOG options for log files(Massimo)
2967 New TCL_ARRAYS option(Massimo)
2968 New INTERSECT and EXCEPT(Stefan)
2969 New pg_index.indisprimary for primary key tracking(D'Arcy)
2970 New pg_dump option to allow dropping of tables before creation(Brook)
2971 Speedup of row output routines(Tom)
2972 New READ COMMITTED isolation level(Vadim)
2973 New TEMP tables/indexes(Bruce)
2974 Prevent sorting if result is already sorted(Jan)
2975 New memory allocation optimization(Jan)
2976 Allow psql to do \p\g(Bruce)
2977 Allow multiple rule actions(Jan)
2978 Added LIMIT/OFFSET functionality(Jan)
2979 Improve optimizer when joining a large number of tables(Bruce)
2980 New intro to SQL from S. Simkovics' Master's Thesis (Stefan, Thomas)
2981 New intro to backend processing from S. Simkovics' Master's Thesis (Stefan)
2982 Improved int8 support(Ryan Bradetich, Thomas, Tom)
2983 New routines to convert between int8 and text/varchar types(Thomas)
2984 New bushy plans, where meta-tables are joined(Bruce)
2985 Enable right-hand queries by default(Bruce)
2986 Allow reliable maximum number of backends to be set at configure time
2987 (--with-maxbackends and postmaster switch (-N backends))(Tom)
2988 GEQO default now 10 tables because of optimizer speedups(Tom)
2989 Allow NULL=Var for MS-SQL portability(Michael, Bruce)
2990 Modify contrib check_primary_key() so either "automatic" or "dependent"(Anand)
2991 Allow psql \d on a view show query(Ryan)
2992 Speedup for LIKE(Bruce)
2993 Ecpg fixes/features, see src/interfaces/ecpg/ChangeLog file(Michael)
2994 JDBC fixes/features, see src/interfaces/jdbc/CHANGELOG(Peter)
2995 Make % operator have precedence like /(Bruce)
2996 Add new postgres -O option to allow system table structure changes(Bruce)
2997 Update contrib/pginterface/findoidjoins script(Tom)
2998 Major speedup in vacuum of deleted rows with indexes(Vadim)
2999 Allow non-SQL functions to run different versions based on arguments(Tom)
3000 Add -E option that shows actual queries sent by \dt and friends(Masaaki Sakaida)
3001 Add version number in start-up banners for psql(Masaaki Sakaida)
3002 New contrib/vacuumlo removes large objects not referenced(Peter)
3003 New initialization for table sizes so non-vacuumed tables perform better(Tom)
3004 Improve error messages when a connection is rejected(Tom)
3005 Support for arrays of char() and varchar() fields(Massimo)
3006 Overhaul of hash code to increase reliability and performance(Tom)
3007 Update to PyGreSQL 2.4(D'Arcy)
3008 Changed debug options so -d4 and -d5 produce different node displays(Jan)
3009 New pg_options: pretty_plan, pretty_parse, pretty_rewritten(Jan)
3010 Better optimization statistics for system table access(Tom)
3011 Better handling of non-default block sizes(Massimo)
3012 Improve GEQO optimizer memory consumption(Tom)
3013 UNION now suppports ORDER BY of columns not in target list(Jan)
3014 Major libpq++ improvements(Vince Vielhaber)
3015 pg_dump now uses -z(ACL's) as default(Bruce)
3016 backend cache, memory speedups(Tom)
3017 have pg_dump do everything in one snapshot transaction(Vadim)
3018 fix for large object memory leakage, fix for pg_dumping(Tom)
3019 INET type now respects netmask for comparisons
3020 Make VACUUM ANALYZE only use a readlock(Vadim)
3021 Allow VIEWs on UNIONS(Jan)
3022 pg_dump now can generate consistent snapshots on active databases(Vadim)
3026 Improve port matching(Tom)
3027 Portability fixes for SunOS
3028 Add NT/Win32 backend port and enable dynamic loading(Magnus and Daniel Horak)
3029 New port to Cobalt Qube(Mips) running Linux(Tatsuo)
3030 Port to NetBSD/m68k(Mr. Mutsuki Nakajima)
3031 Port to NetBSD/sun3(Mr. Mutsuki Nakajima)
3032 Port to NetBSD/macppc(Toshimi Aoki)
3033 Fix for tcl/tk configuration(Vince)
3034 Removed CURRENT keyword for rule queries(Jan)
3035 NT dynamic loading now works(Daniel Horak)
3036 Add ARM32 support(Andrew McMurry)
3037 Better support for HP-UX 11 and UnixWare
3038 Improve file handling to be more uniform, prevent file descriptor leak(Tom)
3039 New install commands for plpgsql(Jan)
3046 <sect1 id="release-6-4-2">
3047 <title>Release 6.4.2</title>
3050 <title>Release date</title>
3051 <simpara>1998-12-20</simpara>
3055 The 6.4.1 release was improperly packaged. This also has one additional
3061 <title>Migration to version 6.4.2</title>
3064 A dump/restore is <emphasis>not</emphasis> required for those running
3069 <title>Changes</title>
3073 Fix for datetime constant problem on some platforms(Thomas)
3081 <sect1 id="release-6-4-1">
3082 <title>Release 6.4.1</title>
3085 <title>Release date</title>
3086 <simpara>1998-12-18</simpara>
3090 This is basically a cleanup release for 6.4. We have fixed a variety of
3091 problems reported by 6.4 users.
3096 <title>Migration to version 6.4.1</title>
3099 A dump/restore is <emphasis>not</emphasis> required for those running
3104 <title>Changes</title>
3108 Add pg_dump -N flag to force double quotes around identifiers. This is
3110 Fix for NOT in where clause causing crash(Bruce)
3111 EXPLAIN VERBOSE coredump fix(Vadim)
3112 Fix shared-library problems on Linux
3113 Fix test for table existance to allow mixed-case and whitespace in
3114 the table name(Thomas)
3115 Fix a couple of pg_dump bugs
3116 Configure matches template/.similar entries better(Tom)
3117 Change builtin function names from SPI_* to spi_*
3118 OR WHERE clause fix(Vadim)
3119 Fixes for mixed-case table names(Billy)
3120 contrib/linux/postgres.init.csh/sh fix(Thomas)
3121 libpq memory overrun fix
3123 Change exp() behavior to generate error on underflow(Thomas)
3124 pg_dump fixes for memory leak, inheritance constraints, layout change
3125 update pgaccess to 0.93
3126 Fix prototype for 64-bit platforms
3127 Multibyte fixes(Tatsuo)
3129 Fix memory overruns(Tatsuo)
3130 Fix for lo_import() crash(Bruce)
3131 Better search for install program(Tom)
3134 Use implicit type coercion for matching DEFAULT values(Thomas)
3135 Add routines to help with single-byte (internal) character type(Thomas)
3136 Compilation of libpq for Win32 fixes(Magnus)
3137 Upgrade to PyGreSQL 2.2(D'Arcy)
3145 <sect1 id="release-6-4">
3146 <title>Release 6.4</title>
3149 <title>Release date</title>
3150 <simpara>1998-10-30</simpara>
3154 There are <emphasis>many</emphasis> new features and improvements in this release.
3155 Thanks to our developers and maintainers, nearly every aspect of the system
3156 has received some attention since the previous release.
3157 Here is a brief, incomplete summary:
3162 Views and rules are now functional thanks to extensive new code in the
3163 rewrite rules system from Jan Wieck. He also wrote a chapter on it
3164 for the <citetitle>Programmer's Guide</citetitle>.
3169 Jan also contributed a second procedural language, <application>PL/pgSQL</application>, to go with the
3170 original <application>PL/pgTCL</application> procedural language he contributed last release.
3176 We have optional multiple-byte character set support from Tatsuo Ishii
3177 to complement our existing locale support.
3183 Client/server communications has been cleaned up, with better support for
3184 asynchronous messages and interrupts thanks to Tom Lane.
3190 The parser will now perform automatic type coercion to match arguments
3191 to available operators and functions, and to match columns and expressions
3192 with target columns. This uses a generic mechanism which supports
3193 the type extensibility features of <productname>PostgreSQL</productname>.
3194 There is a new chapter in the <citetitle>User's Guide</citetitle>
3195 which covers this topic.
3201 Three new data types have been added.
3202 Two types, <type>inet</type> and <type>cidr</type>, support various forms
3203 of IP network, subnet, and machine addressing. There is now an 8-byte integer
3204 type available on some platforms. See the chapter on data types
3205 in the <citetitle>User's Guide</citetitle> for details.
3206 A fourth type, <type>serial</type>, is now supported by the parser as an
3207 amalgam of the <type>int4</type> type, a sequence, and a unique index.
3213 Several more <acronym>SQL92</acronym>-compatible syntax features have been
3214 added, including <command>INSERT DEFAULT VALUES</command>
3220 The automatic configuration and installation system has received some
3221 attention, and should be more robust for more platforms than it has ever
3230 <title>Migration to version 6.4</title>
3233 A dump/restore using <application>pg_dump</application>
3234 or <application>pg_dumpall</application>
3235 is required for those wishing to migrate data from any
3236 previous release of <productname>PostgreSQL</productname>.
3241 <title>Changes</title>
3247 Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan)
3248 Remove char2-16 data types, use char/varchar(Darren)
3249 Pqfn not handles a NOTICE message(Anders)
3250 Reduced busywaiting overhead for spinlocks with many backends (dg)
3251 Stuck spinlock detection (dg)
3252 Fix up "ISO-style" timespan decoding and encoding(Thomas)
3253 Fix problem with table drop after rollback of transaction(Vadim)
3254 Change error message and remove non-functional update message(Vadim)
3255 Fix for COPY array checking
3256 Fix for SELECT 1 UNION SELECT NULL
3257 Fix for buffer leaks in large object calls(Pascal)
3258 Change owner from oid to int4 type(Bruce)
3259 Fix a bug in the oracle compatibility functions btrim() ltrim() and rtrim()
3260 Fix for shared invalidation cache overflow(Massimo)
3261 Prevent file descriptor leaks in failed COPY's(Bruce)
3262 Fix memory leak in libpgtcl's pg_select(Constantin)
3263 Fix problems with username/passwords over 8 characters(Tom)
3264 Fix problems with handling of asynchronous NOTIFY in backend(Tom)
3265 Fix of many bad system table entries(Tom)
3269 Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael)
3270 Show the index used in an EXPLAIN(Zeugswetter)
3271 EXPLAIN invokes rule system and shows plan(s) for rewritten queries(Jan)
3272 Multibyte awareness of many data types and functions, via configure(Tatsuo)
3273 New configure --with-mb option(Tatsuo)
3274 New initdb --pgencoding option(Tatsuo)
3275 New createdb -E multibyte option(Tatsuo)
3276 Select version(); now returns PostgreSQL version(Jeroen)
3277 Libpq now allows asynchronous clients(Tom)
3278 Allow cancel from client of backend query(Tom)
3279 Psql now cancels query with Control-C(Tom)
3280 Libpq users need not issue dummy queries to get NOTIFY messages(Tom)
3281 NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom)
3282 PGresult struct now includes associated error message, if any(Tom)
3283 Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas)
3284 Add routines to convert between varchar and bpchar(Thomas)
3285 Add routines to allow sizing of varchar and bpchar into target columns(Thomas)
3286 Add bit flags to support timezonehour and minute in data retrieval(Thomas)
3287 Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas)
3288 Fixes for unary minus parsing with leading spaces(Thomas)
3289 Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas)
3290 Check for and properly ignore FOREIGN KEY column constraints(Thomas)
3291 Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas)
3292 Enable HAVING clause but no fixes elsewhere yet.
3293 Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas)
3294 Save string type if specified for DEFAULT clause handling(Thomas)
3295 Coerce operations involving different data types(Thomas)
3296 Allow some index use for columns of different types(Thomas)
3297 Add capabilities for automatic type conversion(Thomas)
3298 Cleanups for large objects, so file is truncated on open(Peter)
3299 Readline cleanups(Tom)
3300 Allow psql \f \ to make spaces as delimiter(Bruce)
3301 Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce)
3302 Msql compatibility library in /contrib(Aldrin)
3303 Remove the requirement that ORDER/GROUP BY clause identifiers be
3304 included in the target list(David)
3305 Convert columns to match columns in UNION clauses(Thomas)
3306 Remove fork()/exec() and only do fork()(Bruce)
3307 Jdbc cleanups(Peter)
3308 Show backend status on ps command line(only works on some platforms)(Bruce)
3309 Pg_hba.conf now has a sameuser option in the database field
3310 Make lo_unlink take oid param, not int4
3311 New DISABLE_COMPLEX_MACRO for compilers that can't handle our macros(Bruce)
3312 Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom)
3313 libpgtcl cleanups(Tom)
3314 Add -error option to libpgtcl's pg_result command(Tom)
3315 New locale patch, see docs/README/locale(Oleg)
3316 Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb)
3317 New contrib/lo code for large object orphan removal(Peter)
3318 New psql command "SET CLIENT_ENCODING TO 'encoding'" for multibytes
3319 feature, see /doc/README.mb(Tatsuo)
3320 /contrib/noupdate code to revoke update permission on a column
3321 Libpq can now be compiled on win32(Magnus)
3322 Add PQsetdbLogin() in libpq
3323 New 8-byte integer type, checked by configure for OS support(Thomas)
3324 Better support for quoted table/column names(Thomas)
3325 Surround table and column names with double-quotes in pg_dump(Thomas)
3326 PQreset() now works with passwords(Tom)
3327 Handle case of GROUP BY target list column number out of range(David)
3328 Allow UNION in subselects
3329 Add auto-size to screen to \d? commands(Bruce)
3330 Use UNION to show all \d? results in one query(Bruce)
3331 Add \d? field search feature(Bruce)
3332 Pg_dump issues fewer \connect requests(Tom)
3333 Make pg_dump -z flag work better, document it in manual page(Tom)
3334 Add HAVING clause with full support for subselects and unions(Stephan)
3335 Full text indexing routines in contrib/fulltextindex(Maarten)
3336 Transaction ids now stored in shared memory(Vadim)
3337 New PGCLIENTENCODING when issuing COPY command(Tatsuo)
3338 Support for SQL92 syntax "SET NAMES"(Tatsuo)
3339 Support for LATIN2-5(Tatsuo)
3340 Add UNICODE regression test case(Tatsuo)
3341 Lock manager cleanup, new locking modes for LLL(Vadim)
3342 Allow index use with OR clauses(Bruce)
3343 Allows "SELECT NULL ORDER BY 1;"
3344 Explain VERBOSE prints the plan, and now pretty-prints the plan to
3345 the postmaster log file(Bruce)
3346 Add indexes display to \d command(Bruce)
3347 Allow GROUP BY on functions(David)
3348 New pg_class.relkind for large objects(Bruce)
3349 New way to send libpq NOTICE messages to a different location(Tom)
3350 New \w write command to psql(Bruce)
3351 New /contrib/findoidjoins scans oid columns to find join relationships(Bruce)
3352 Allow binary-compatible indexes to be considered when checking for valid
3353 Indexes for restriction clauses containing a constant(Thomas)
3354 New ISBN/ISSN code in /contrib/isbn_issn
3355 Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas)
3356 New rewrite system fixes many problems with rules and views(Jan)
3357 * Rules on relations work
3358 * Event qualifications on insert/update/delete work
3359 * New OLD variable to reference CURRENT, CURRENT will be remove in future
3360 * Update rules can reference NEW and OLD in rule qualifications/actions
3361 * Insert/update/delete rules on views work
3362 * Multiple rule actions are now supported, surrounded by parentheses
3363 * Regular users can create views/rules on tables they have RULE permits
3364 * Rules and views inherit the permissions on the creator
3365 * No rules at the column level
3366 * No UPDATE NEW/OLD rules
3367 * New pg_tables, pg_indexes, pg_rules and pg_views system views
3368 * Only a single action on SELECT rules
3369 * Total rewrite overhaul, perhaps for 6.5
3371 * handle aggregates on views
3372 * handle insert into select from view works
3373 System indexes are now multikey(Bruce)
3374 Oidint2, oidint4, and oidname types are removed(Bruce)
3375 Use system cache for more system table lookups(Bruce)
3376 New backend programming language PL/pgSQL in backend/pl(Jan)
3377 New SERIAL data type, auto-creates sequence/index(Thomas)
3378 Enable assert checking without a recompile(Massimo)
3379 User lock enhancements(Massimo)
3380 New setval() command to set sequence value(Massimo)
3381 Auto-remove unix socket file on start-up if no postmaster running(Massimo)
3382 Conditional trace package(Massimo)
3383 New UNLISTEN command(Massimo)
3384 Psql and libpq now compile under win32 using win32.mak(Magnus)
3385 Lo_read no longer stores trailing NULL(Bruce)
3386 Identifiers are now truncated to 31 characters internally(Bruce)
3387 Createuser options now availble on the command line
3388 Code for 64-bit integer supported added, configure tested, int8 type(Thomas)
3389 Prevent file descriptor leaf from failed COPY(Bruce)
3390 New pg_upgrade command(Bruce)
3391 Updated /contrib directories(Massimo)
3392 New CREATE TABLE DEFAULT VALUES statement available(Thomas)
3393 New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas)
3394 New DECLARE and FETCH feature(Thomas)
3395 libpq's internal structures now not exported(Tom)
3396 Allow up to 8 key indexes(Bruce)
3397 Remove ARCHIVE keyword, that is no longer used(Thomas)
3398 pg_dump -n flag to supress quotes around indentifiers
3399 disable system columns for views(Jan)
3400 new INET and CIDR types for network addresses(TomH, Paul)
3401 no more double quotes in psql output
3402 pg_dump now dumps views(Terry)
3403 new SET QUERY_LIMIT(Tatsuo,Jan)
3407 /contrib cleanup(Jun)
3408 Inline some small functions called for every row(Bruce)
3411 Multibyte regression tests(Soonmyung.)
3412 Remove --disabled options from configure
3413 Define PGDOC to use POSTGRESDIR by default
3414 Make regression optional
3415 Remove extra braces code to pgindent(Bruce)
3416 Add bsdi shared library support(Bruce)
3417 New --without-CXX support configure option(Brook)
3419 Update backend flowchart in tools/backend(Bruce)
3420 Change atttypmod from int16 to int32(Bruce, Tom)
3421 Getrusage() fix for platforms that do not have it(Tom)
3422 Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page
3423 NS32K platform fixes(Phil Nelson, John Buller)
3424 SCO 7/UnixWare 2.x fixes(Billy,others)
3425 Sparc/Solaris 2.5 fixes(Ryan)
3426 Pgbuiltin.3 is obsolete, move to doc files(Thomas)
3427 Even more documention(Thomas)
3428 Nextstep support(Jacek)
3430 pginterface manual page(Bruce)
3431 shared libraries all have version numbers
3432 merged all OS-specific shared library defines into one file
3433 smarter TCL/TK configuration checking(Billy)
3434 smarter perl configuration(Brook)
3435 configure uses supplied install-sh if no install script found(Tom)
3436 new Makefile.shlib for shared library configuration(Tom)
3442 <sect1 id="release-6-3-2">
3443 <title>Release 6.3.2</title>
3446 <title>Release date</title>
3447 <simpara>1998-04-07</simpara>
3451 This is a bug-fix release for 6.3.x.
3452 Refer to the release notes for version 6.3 for a more complete summary of new features.
3460 Repairs automatic configuration support for some platforms, including Linux,
3461 from breakage inadvertently introduced in version 6.3.1.
3467 Correctly handles function calls on the left side of BETWEEN and LIKE clauses.
3474 A dump/restore is NOT required for those running 6.3 or 6.3.1. A
3475 <literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required.
3476 This last step should be performed while the postmaster is not running.
3477 You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
3480 For upgrades from pre-6.3 installations,
3481 refer to the installation and migration instructions for version 6.3.
3485 <title>Changes</title>
3489 Configure detection improvements for tcl/tk(Brook Milligan, Alvin)
3490 Manual page improvements(Bruce)
3491 BETWEEN and LIKE fix(Thomas)
3492 fix for psql \connect used by pg_dump(Oliver Elphick)
3494 pgaccess, version 0.86
3495 qsort removed, now uses libc version, cleanups(Jeroen)
3496 fix for buffer over-runs detected(Maurice Gittens)
3497 fix for buffer overrun in libpgtcl(Randy Kunkee)
3498 fix for UNION with DISTINCT or ORDER BY(Bruce)
3499 gettimeofday configure check(Doug Winterburn)
3500 Fix "indexes not used" bug(Vadim)
3501 docs additions(Thomas)
3502 Fix for backend memory leak(Bruce)
3503 libreadline cleanup(Erwan MAS)
3504 Remove DISTDIR(Bruce)
3505 Makefile dependency cleanup(Jeroen van Vianen)
3512 <sect1 id="release-6-3-1">
3513 <title>Release 6.3.1</title>
3516 <title>Release date</title>
3517 <simpara>1998-03-23</simpara>
3526 Additional support for multibyte character sets.
3532 Repair byte ordering for mixed-endian clients and servers.
3538 Minor updates to allowed SQL syntax.
3544 Improvements to the configuration autodetection for installation.
3551 A dump/restore is NOT required for those running 6.3. A
3552 <literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required.
3553 This last step should be performed while the postmaster is not running.
3554 You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
3557 For upgrades from pre-6.3 installations,
3558 refer to the installation and migration instructions for version 6.3.
3562 <title>Changes</title>
3566 ecpg cleanup/fixes, now version 1.1(Michael Meskes)
3567 pg_user cleanup(Bruce)
3568 large object fix for pg_dump and tclsh (alvin)
3569 LIKE fix for multiple adjacent underscores
3570 fix for redefining builtin functions(Thomas)
3572 upgrade to pg_access 0.83
3573 updated CLUSTER manual page
3574 multibyte character set support, see doc/README.mb(Tatsuo)
3575 configure --with-pgport fix
3577 big-endian fix for backend communications(Kataoka)
3578 SUBSTR() and substring() fix(Jan)
3579 several jdbc fixes(Peter)
3580 libpgtcl improvements, see libptcl/README(Randy Kunkee)
3581 Fix for "Datasize = 0" error(Vadim)
3582 Prevent \do from wrapping(Bruce)
3583 Remove duplicate Russian character set entries
3585 Allow optional TABLE keyword in LOCK and SELECT INTO(Thomas)
3586 CREATE SEQUENCE options to allow a negative integer(Thomas)
3587 Add "PASSWORD" as an allowed column identifier(Thomas)
3588 Add checks for UNION target fields(Bruce)
3589 Fix Alpha port(Dwayne Bailey)
3590 Fix for text arrays containing quotes(Doug Gibson)
3591 Solaris compile fix(Albert Chin-A-Young)
3592 Better identify tcl and tk libs and includes(Bruce)
3598 <sect1 id="release-6-3">
3599 <title>Release 6.3</title>
3602 <title>Release date</title>
3603 <simpara>1998-03-01</simpara>
3607 There are <emphasis>many</emphasis> new features and improvements in this release.
3608 Here is a brief, incomplete summary:
3613 Many new SQL features, including
3614 full <acronym>SQL92</acronym> subselect capability
3615 (everything is here but target-list subselects).
3621 Support for client-side environment variables to specify time zone and date style.
3627 Socket interface for client/server connection. This is the default now
3628 so you may need to start <application>postmaster</application> with the
3629 <option>-i</option> flag.
3635 Better password authorization mechanisms. Default table permissions have changed.
3641 Old-style <firstterm>time travel</firstterm>
3642 has been removed. Performance has been improved.
3650 Bruce Momjian wrote the following notes to introduce the new release.
3655 There are some general 6.3 issues that I want to mention. These are
3656 only the big items that can not be described in one sentence. A review
3657 of the detailed changes list is still needed.
3660 First, we now have subselects. Now that we have them, I would like to
3661 mention that without subselects, SQL is a very limited language.
3662 Subselects are a major feature, and you should review your code for
3663 places where subselects provide a better solution for your queries. I
3664 think you will find that there are more uses for subselects than you may
3665 think. Vadim has put us on the big SQL map with subselects, and fully
3666 functional ones too. The only thing you can't do with subselects is to
3667 use them in the target list.
3670 Second, 6.3 uses Unix domain sockets rather than TCP/IP by default. To
3671 enable connections from other machines, you have to use the new
3672 postmaster -i option, and of course edit <filename>pg_hba.conf</filename>. Also, for this
3673 reason, the format of <filename>pg_hba.conf</filename> has changed.
3676 Third, <type>char()</type> fields will now allow faster access than <type>varchar()</type> or
3677 <type>text</type>. Specifically, the <type>text</> and <type>varchar()</type> have a penalty for access to
3678 any columns after the first column of this type. <type>char()</type> used to also
3679 have this access penalty, but it no longer does. This may suggest that
3680 you redesign some of your tables, especially if you have short character
3681 columns that you have defined as <type>varchar()</type> or <type>text</type>. This and other
3682 changes make 6.3 even faster than earlier releases.
3685 We now have passwords definable independent of any Unix file. There are
3686 new SQL USER commands.
3687 See the <citetitle>Administrator's Guide</citetitle> for more
3688 information. There is a new table, pg_shadow, which is used to store
3689 user information and user passwords, and it by default only SELECT-able
3690 by the <systemitem>postgres</systemitem> super-user. pg_user is now a view of pg_shadow, and is
3691 SELECT-able by PUBLIC. You should keep using pg_user in your
3692 application without changes.
3695 User-created tables now no longer have SELECT permission to PUBLIC by
3696 default. This was done because the ANSI standard requires it. You can
3697 of course GRANT any permissions you want after the table is created.
3698 System tables continue to be SELECT-able by PUBLIC.
3701 We also have real deadlock detection code. No more sixty-second
3702 timeouts. And the new locking code implements a <acronym>FIFO</acronym> better, so there
3703 should be less resource starvation during heavy use.
3706 Many complaints have been made about inadequate documentation in previous
3707 releases. Thomas has put much effort into many new manuals for this
3708 release. Check out the doc/ directory.
3711 For performance reasons, time travel is gone, but can be implemented
3712 using triggers (see <filename>pgsql/contrib/spi/README</filename>). Please check out the new
3713 \d command for types, operators, etc. Also, views have their own
3714 permissions now, not based on the underlying tables, so permissions on
3715 them have to be set separately. Check <filename>/pgsql/interfaces</filename> for some new
3716 ways to talk to <productname>PostgreSQL</productname>.
3719 This is the first release that really required an explanation for
3720 existing users. In many ways, this was necessary because the new
3721 release removes many limitations, and the work-arounds people were using
3722 are no longer needed.
3726 <title>Migration to version 6.3</title>
3729 A dump/restore using <application>pg_dump</application>
3730 or <application>pg_dumpall</application>
3731 is required for those wishing to migrate data from any
3732 previous release of <productname>PostgreSQL</productname>.
3737 <title>Changes</title>
3743 Fix binary cursors broken by MOVE implementation(Vadim)
3744 Fix for tcl library crash(Jan)
3745 Fix for array handling, from Gerhard Hintermayer
3746 Fix acl error, and remove duplicate pqtrace(Bruce)
3747 Fix psql \e for empty file(Bruce)
3748 Fix for textcat on varchar() fields(Bruce)
3749 Fix for DBT Sendproc (Zeugswetter Andres)
3750 Fix vacuum analyze syntax problem(Bruce)
3751 Fix for international identifiers(Tatsuo)
3752 Fix aggregates on inherited tables(Bruce)
3753 Fix substr() for out-of-bounds data
3754 Fix for select 1=1 or 2=2, select 1=1 and 2=2, and select sum(2+2)(Bruce)
3755 Fix notty output to show status result. -q option still turns it off(Bruce)
3756 Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce)
3758 Fix for PQtrace start/stop several times(Bruce)
3759 Fix a variety of locking problems like newer lock waiters getting
3760 lock before older waiters, and having readlock people not share
3761 locks if a writer is waiting for a lock, and waiting writers not
3762 getting priority over waiting readers(Bruce)
3763 Fix crashes in psql when executing queries from external files(James)
3764 Fix problem with multiple order by columns, with the first one having
3766 Use correct hash table support functions for float8 and int4(Thomas)
3767 Re-enable JOIN= option in CREATE OPERATOR statement (Thomas)
3768 Change precedence for boolean operators to match expected behavior(Thomas)
3769 Generate elog(ERROR) on over-large integer(Bruce)
3770 Allow multiple-argument functions in constraint clauses(Thomas)
3771 Check boolean input literals for 'true','false','yes','no','1','0'
3772 and throw elog(ERROR) if unrecognized(Thomas)
3773 Major large objects fix
3774 Fix for GROUP BY showing duplicates(Vadim)
3775 Fix for index scans in MergeJion(Vadim)
3779 Subselects with EXISTS, IN, ALL, ANY keywords (Vadim, Bruce, Thomas)
3780 New User Manual(Thomas, others)
3781 Speedup by inlining some frequently-called functions
3782 Real deadlock detection, no more timeouts(Bruce)
3783 Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
3784 CURRENT_USER(Thomas)
3785 Modify constraint syntax to be SQL92-compliant(Thomas)
3786 Implement SQL92 PRIMARY KEY and UNIQUE clauses using indexes(Thomas)
3787 Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas)
3788 Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas)
3789 Allow PostgreSQL-style casting ("::") of non-constants(Thomas)
3790 Add support for SQL3 TRUE and FALSE boolean constants(Thomas)
3791 Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas)
3792 Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas)
3793 Allow SQL92 delimited identifiers(Thomas)
3794 Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas)
3795 Support SQL92 syntax for type coercion of literal strings
3796 (e.g. "DATETIME 'now'")(Thomas)
3797 Add conversions for int2, int4, and OID types to and from text(Thomas)
3798 Use shared lock when building indexes(Vadim)
3799 Free memory allocated for an user query inside transaction block after
3800 this query is done, was turned off in <= 6.2.1(Vadim)
3801 New SQL statement CREATE PROCEDURAL LANGUAGE(Jan)
3802 New <productname>PostgreSQL</productname> Procedural Language (PL) backend interface(Jan)
3803 Rename pg_dump -H option to -h(Bruce)
3804 Add Java support for passwords, European dates(Peter)
3805 Use indexes for LIKE and ~, !~ operations(Bruce)
3806 Add hash functions for datetime and timespan(Thomas)
3807 Time Travel removed(Vadim, Bruce)
3808 Add paging for \d and \z, and fix \i(Bruce)
3809 Add Unix domain socket support to backend and to frontend library(Goran)
3810 Implement CREATE DATABASE/WITH LOCATION and initlocation utility(Thomas)
3811 Allow more SQL92 and/or <productname>PostgreSQL</productname> reserved words as column identifiers(Thomas)
3812 Augment support for SQL92 SET TIME ZONE...(Thomas)
3813 SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas)
3814 Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas)
3815 Enable SET TIME ZONE using TZ environment variable(Thomas)
3816 Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas)
3817 Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO
3818 frontend library initialization environment variables(Thomas)
3819 Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas)
3820 Add pg_description table for info on tables, columns, operators, types, and
3822 Increase 16 char limit on system table/index names to 32 characters(Bruce)
3823 Rename system indexes(Bruce)
3824 Add 'GERMAN' option to SET DATESTYLE(Thomas)
3825 Define an "ISO-style" timespan output format with "hh:mm:ss" fields(Thomas)
3826 Allow fractional values for delta times (e.g. '2.5 days')(Thomas)
3827 Validate numeric input more carefully for delta times(Thomas)
3828 Implement day of year as possible input to date_part()(Thomas)
3829 Define timespan_finite() and text_timespan() functions(Thomas)
3830 Remove archive stuff(Bruce)
3831 Allow for a pg_password authentication database that is separate from
3832 the system password file(Todd)
3833 Dump ACLs, GRANT, REVOKE permissions(Matt)
3834 Define text, varchar, and bpchar string length functions(Thomas)
3835 Fix Query handling for inheritance, and cost computations(Bruce)
3836 Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas)
3837 Allow NOT, IS NULL, IS NOT NULL in constraints(Thomas)
3838 Implement UNIONs for SELECT(Bruce)
3839 Add UNION, GROUP, DISTINCT to INSERT(Bruce)
3840 varchar() stores only necessary bytes on disk(Bruce)
3841 Fix for BLOBs(Peter)
3842 Mega-Patch for JDBC...see README_6.3 for list of changes(Peter)
3843 Remove unused "option" from PQconnectdb()
3844 New LOCK command and lock manual page describing deadlocks(Bruce)
3845 Add new psql \da, \dd, \df, \do, \dS, and \dT commands(Bruce)
3846 Enhance psql \z to show sequences(Bruce)
3847 Show NOT NULL and DEFAULT in psql \d table(Bruce)
3848 New psql .psqlrc file start-up(Andrew)
3849 Modify sample start-up script in contrib/linux to show syslog(Thomas)
3850 New types for IP and MAC addresses in contrib/ip_and_mac(TomH)
3851 Unix system time conversions with date/time types in contrib/unixdate(Thomas)
3852 Update of contrib stuff(Massimo)
3853 Add Unix socket support to DBD::Pg(Goran)
3854 New python interface (PyGreSQL 2.0)(D'Arcy)
3855 New frontend/backend protocol has a version number, network byte order(Phil)
3856 Security features in pg_hba.conf enhanced and documented, many cleanups(Phil)
3857 CHAR() now faster access than VARCHAR() or TEXT
3858 ecpg embedded SQL preprocessor
3859 Reduce system column overhead(Vadmin)
3860 Remove pg_time table(Vadim)
3861 Add pg_type attribute to identify types that need length (bpchar, varchar)
3862 Add report of offending line when COPY command fails
3863 Allow VIEW permissions to be set separately from the underlying tables.
3864 For security, use GRANT/REVOKE on views as appropriate(Jan)
3865 Tables now have no default GRANT SELECT TO PUBLIC. You must
3866 explicitly grant such permissions.
3867 Clean up tutorial examples(Darren)
3871 Add new html development tools, and flow chart in /tools/backend
3872 Fix for SCO compiles
3873 Stratus computer port Robert Gillies
3874 Added support for shlib for BSD44_derived & i386_solaris
3875 Make configure more automated(Brook)
3876 Add script to check regression test results
3877 Break parser functions into smaller files, group together(Bruce)
3878 Rename heap_create to heap_create_and_catalog, rename heap_creatr
3879 to heap_create()(Bruce)
3880 Sparc/Linux patch for locking(TomS)
3881 Remove PORTNAME and reorganize port-specific stuff(Marc)
3882 Add optimizer README file(Bruce)
3883 Remove some recursion in optimizer and clean up some code there(Bruce)
3884 Fix for NetBSD locking(Henry)
3885 Fix for libptcl make(Tatsuo)
3887 Change IS TRUE, IS FALSE, ... to expressions using "=" rather than
3888 function calls to istrue() or isfalse() to allow optimization(Thomas)
3889 Various fixes NetBSD/Sparc related(TomH)
3890 Alpha linux locking(Travis,Ryan)
3891 Change elog(WARN) to elog(ERROR)(Bruce)
3892 FAQ for FreeBSD(Marc)
3893 Bring in the PostODBC source tree as part of our standard distribution(Marc)
3894 A minor patch for HP/UX 10 vs 9(Stan)
3895 New pg_attribute.atttypmod for type-specific info like varchar length(Bruce)
3896 UnixWare patches(Billy)
3897 New i386 'lock' for spin lock asm(Billy)
3898 Support for multiplexed backends is removed
3899 Start an OpenBSD port
3902 Add string functions to regression suite(Thomas)
3903 Expand a few function names formerly truncated to 16 characters(Thomas)
3904 Remove un-needed malloc() calls and replace with palloc()(Bruce)
3910 <sect1 id="release-6-2-1">
3911 <title>Release 6.2.1</title>
3914 <title>Release date</title>
3915 <simpara>1997-10-17</simpara>
3919 6.2.1 is a bug-fix and usability release on 6.2.
3927 Allow strings to span lines, per <acronym>SQL92</acronym>.
3933 Include example trigger function for inserting user names on table updates.
3940 This is a minor bug-fix release on 6.2.
3941 For upgrades from pre-6.2 systems, a full dump/reload is required.
3942 Refer to the 6.2 release notes for instructions.
3946 <title>Migration from version 6.2 to version 6.2.1</title>
3949 This is a minor bug-fix release. A dump/reload is not required from version 6.2,
3950 but is required from any release prior to 6.2.
3953 In upgrading from version 6.2, if you choose to dump/reload you will find that
3954 avg(money) is now calculated correctly. All other bug fixes take effect
3955 upon updating the executables.
3958 Another way to avoid dump/reload is to use the following SQL command
3959 from <command>psql</command> to update the existing system table:
3962 update pg_aggregate set aggfinalfn = 'cash_div_flt8'
3963 where aggname = 'avg' and aggbasetype = 790;
3967 This will need to be done to every existing database, including template1.
3972 <title>Changes</title>
3976 Allow TIME and TYPE column names(Thomas)
3977 Allow larger range of true/false as boolean values(Thomas)
3978 Support output of "now" and "current"(Thomas)
3979 Handle DEFAULT with INSERT of NULL properly(Vadim)
3980 Fix for relation reference counts problem in buffer manager(Vadim)
3981 Allow strings to span lines, like ANSI(Thomas)
3982 Fix for backward cursor with ORDER BY(Vadim)
3983 Fix avg(cash) computation(Thomas)
3984 Fix for specifying a column twice in ORDER/GROUP BY(Vadim)
3985 Documented new libpq function to return affected rows, PQcmdTuples(Bruce)
3986 Trigger function for inserting user names for INSERT/UPDATE(Brook Milligan)
3992 <sect1 id="release-6-2">
3993 <title>Release 6.2</title>
3996 <title>Release date</title>
3997 <simpara>1997-10-02</simpara>
4001 A dump/restore is required for those wishing to migrate data from
4002 previous releases of <productname>PostgreSQL</productname>.
4006 <title>Migration from version 6.1 to version 6.2</title>
4009 This migration requires a complete dump of the 6.1 database and a
4010 restore of the database in 6.2.
4013 Note that the <command>pg_dump</command> and <command>pg_dumpall</command> utility from 6.2 should be used
4014 to dump the 6.1 database.
4019 <title>Migration from version 1.<replaceable>x</> to version 6.2</title>
4022 Those migrating from earlier 1.* releases should first upgrade to 1.09
4023 because the COPY output format was improved from the 1.02 release.
4028 <title>Changes</title>
4034 Fix problems with pg_dump for inheritance, sequences, archive tables(Bruce)
4035 Fix compile errors on overflow due to shifts, unsigned, and bad prototypes
4036 from Solaris(Diab Jerius)
4037 Fix bugs in geometric line arithmetic (bad intersection calculations)(Thomas)
4038 Check for geometric intersections at endpoints to avoid rounding ugliness(Thomas)
4039 Catch non-functional delete attempts(Vadim)
4040 Change time function names to be more consistent(Michael Reifenberg)
4041 Check for zero divides(Michael Reifenberg)
4042 Fix very old bug which made tuples changed/inserted by a commnd
4043 visible to the command itself (so we had multiple update of
4044 updated tuples, etc)(Vadim)
4045 Fix for SELECT null, 'fail' FROM pg_am (Patrick)
4046 SELECT NULL as EMPTY_FIELD now allowed(Patrick)
4047 Remove un-needed signal stuff from contrib/pginterface
4048 Fix OR (where x != 1 or x isnull didn't return tuples with x NULL) (Vadim)
4049 Fix time_cmp function (Vadim)
4050 Fix handling of functions with non-attribute first argument in
4051 WHERE clauses (Vadim)
4052 Fix GROUP BY when order of entries is different from order
4053 in target list (Vadim)
4054 Fix pg_dump for aggregates without sfunc1 (Vadim)
4058 Default genetic optimizer GEQO parameter is now 8(Bruce)
4059 Allow use parameters in target list having aggregates in functions(Vadim)
4060 Added JDBC driver as an interface(Adrian & Peter)
4062 Return number of tuples inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim)
4063 Triggers implemented with CREATE TRIGGER (SQL3)(Vadim)
4064 SPI (Server Programming Interface) allows execution of queries inside
4066 NOT NULL implemented (SQL92)(Robson Paniago de Miranda)
4067 Include reserved words for string handling, outer joins, and unions(Thomas)
4068 Implement extended comments ("/* ... */") using exclusive states(Thomas)
4069 Add "//" single-line comments(Bruce)
4070 Remove some restrictions on characters in operator names(Thomas)
4071 DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim & Thomas)
4072 Add text concatenation operator and function (SQL92)(Thomas)
4073 Support WITH TIME ZONE syntax (SQL92)(Thomas)
4074 Support INTERVAL unit TO unit syntax (SQL92)(Thomas)
4075 Define types DOUBLE PRECISION, INTERVAL, CHARACTER,
4076 and CHARACTER VARYING (SQL92)(Thomas)
4077 Define type FLOAT(p) and rudimentary DECIMAL(p,s), NUMERIC(p,s) (SQL92)(Thomas)
4078 Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM() (SQL92)(Thomas)
4079 Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP (SQL92)(Thomas)
4080 Add syntax and warnings for UNION, HAVING, INNER and OUTER JOIN (SQL92)(Thomas)
4081 Add more reserved words, mostly for SQL92 compliance(Thomas)
4082 Allow hh:mm:ss time entry for timespan/reltime types(Thomas)
4083 Add center() routines for lseg, path, polygon(Thomas)
4084 Add distance() routines for circle-polygon, polygon-polygon(Thomas)
4085 Check explicitly for points and polygons contained within polygons
4086 using an axis-crossing algorithm(Thomas)
4087 Add routine to convert circle-box(Thomas)
4088 Merge conflicting operators for different geometric data types(Thomas)
4089 Replace distance operator "<===>" with "<->"(Thomas)
4090 Replace "above" operator "!^" with ">^" and "below" operator "!|" with "<^"(Thomas)
4091 Add routines for text trimming on both ends, substring, and string position(Thomas)
4092 Added conversion routines circle(box) and poly(circle)(Thomas)
4093 Allow internal sorts to be stored in memory rather than in files(Bruce & Vadim)
4094 Allow functions and operators on internally-identical types to succeed(Bruce)
4095 Speed up backend start-up after profiling analysis(Bruce)
4096 Inline frequently called functions for performance(Bruce)
4097 Reduce open() calls(Bruce)
4098 psql: Add PAGER for \h and \?,\C fix
4099 Fix for psql pager when no tty(Bruce)
4100 New entab utility(Bruce)
4101 General trigger functions for referential integrity (Vadim)
4102 General trigger functions for time travel (Vadim)
4103 General trigger functions for AUTOINCREMENT/IDENTITY feature (Vadim)
4104 MOVE implementation (Vadim)
4108 HP-UX 10 patches (Vladimir Turin)
4109 Added SCO support, (Daniel Harris)
4110 MkLinux patches (Tatsuo Ishii)
4111 Change geometric box terminology from "length" to "width"(Thomas)
4112 Deprecate temporary unstored slope fields in geometric code(Thomas)
4113 Remove restart instructions from INSTALL(Bruce)
4114 Look in /usr/ucb first for install(Bruce)
4115 Fix c++ copy example code(Thomas)
4116 Add -o to psql manual page(Bruce)
4117 Prevent relname unallocated string length from being copied into database(Bruce)
4118 Cleanup for NAMEDATALEN use(Bruce)
4119 Fix pg_proc names over 15 chars in output(Bruce)
4120 Add strNcpy() function(Bruce)
4121 remove some (void) casts that are unnecessary(Bruce)
4122 new interfaces directory(Marc)
4123 Replace fopen() calls with calls to fd.c functions(Bruce)
4124 Make functions static where possible(Bruce)
4125 enclose unused functions in #ifdef NOT_USED(Bruce)
4126 Remove call to difftime() in timestamp support to fix SunOS(Bruce & Thomas)
4127 Changes for Digital Unix
4128 Portability fix for pg_dumpall(Bruce)
4129 Rename pg_attribute.attnvals to attdispersion(Bruce)
4130 "intro/unix" manual page now "pgintro"(Bruce)
4131 "built-in" manual page now "pgbuiltin"(Bruce)
4132 "drop" manual page now "drop_table"(Bruce)
4133 Add "create_trigger", "drop_trigger" manual pages(Thomas)
4134 Add constraints regression test(Vadim & Thomas)
4135 Add comments syntax regression test(Thomas)
4136 Add PGINDENT and support program(Bruce)
4137 Massive commit to run PGINDENT on all *.c and *.h files(Bruce)
4138 Files moved to /src/tools directory(Bruce)
4139 SPI and Trigger programming guides (Vadim & D'Arcy)
4145 <sect1 id="release-6-1-1">
4146 <title>Release 6.1.1</title>
4149 <title>Release date</title>
4150 <simpara>1997-07-22</simpara>
4154 <title>Migration from version 6.1 to version 6.1.1</title>
4157 This is a minor bug-fix release. A dump/reload is not required from version 6.1,
4158 but is required from any release prior to 6.1.
4159 Refer to the release notes for 6.1 for more details.
4164 <title>Changes</title>
4168 fix for SET with options (Thomas)
4169 allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce)
4170 new psql \connect option allows changing usernames without changing databases
4171 fix for initdb --debug option(Yoshihiko Ichikawa))
4172 lextest cleanup(Bruce)
4174 fix date/time month boundary arithmetic(Thomas)
4175 fix timezone daylight handling for some ports(Thomas, Bruce, Tatsuo)
4176 timestamp overhauled to use standard functions(Thomas)
4177 other code cleanup in date/time routines(Thomas)
4178 psql's \d now case-insensitive(Bruce)
4179 psql's backslash commands can now have trailing semicolon(Bruce)
4180 fix memory leak in psql when using \g(Bruce)
4181 major fix for endian handling of communication to server(Thomas, Tatsuo)
4182 Fix for Solaris assembler and include files(Yoshihiko Ichikawa)
4183 allow underscores in usernames(Bruce)
4184 pg_dumpall now returns proper status, portability fix(Bruce)
4190 <sect1 id="release-6-1">
4191 <title>Release 6.1</title>
4194 <title>Release date</title>
4195 <simpara>1997-06-08</simpara>
4199 The regression tests have been adapted and extensively modified for the
4200 6.1 release of <productname>PostgreSQL</productname>.
4204 Three new data types (<type>datetime</type>, <type>timespan</type>, and <type>circle</type>) have been added to
4205 the native set of <productname>PostgreSQL</productname> types. Points, boxes, paths, and polygons
4206 have had their output formats made consistent across the data types.
4207 The polygon output in misc.out has only been spot-checked for correctness
4208 relative to the original regression output.
4212 <productname>PostgreSQL</productname> 6.1 introduces a new, alternate
4213 optimizer which uses <firstterm>genetic</firstterm>
4214 algorithms. These algorithms introduce a random behavior in the ordering
4215 of query results when the query contains multiple qualifiers or multiple
4216 tables (giving the optimizer a choice on order of evaluation). Several
4217 regression tests have been modified to explicitly order the results, and
4218 hence are insensitive to optimizer choices. A few regression tests are
4219 for data types which are inherently unordered (e.g. points and time
4220 intervals) and tests involving those types are explicitly bracketed with
4221 <command>set geqo to 'off'</command> and <command>reset geqo</command>.
4225 The interpretation of array specifiers (the curly braces around atomic
4226 values) appears to have changed sometime after the original regression
4227 tests were generated. The current <filename>./expected/*.out</filename> files reflect this
4228 new interpretation, which may not be correct!
4232 The float8 regression test fails on at least some platforms. This is due
4233 to differences in implementations of <function>pow()</function> and <function>exp()</function> and the signaling
4234 mechanisms used for overflow and underflow conditions.
4238 The <quote>random</> results in the random test should cause the
4239 <quote>random</quote> test to be <quote>failed</quote>, since the
4240 regression tests are evaluated using a simple diff. However,
4241 <quote>random</> does not seem to produce random results on my test
4242 machine (Linux/<application>gcc</>/i686).
4246 <title>Migration to version 6.1</title>
4249 This migration requires a complete dump of the 6.0 database and a
4250 restore of the database in 6.1.
4253 Those migrating from earlier 1.* releases should first upgrade to 1.09
4254 because the COPY output format was improved from the 1.02 release.
4259 <title>Changes</title>
4265 packet length checking in library routines
4266 lock manager priority patch
4267 check for under/over flow of float8(Bruce)
4268 multitable join fix(Vadim)
4269 SIGPIPE crash fix(Darren)
4270 large object fixes(Sven)
4271 allow btree indexes to handle NULLs(Vadim)
4272 timezone fixes(D'Arcy)
4273 select SUM(x) can return NULL on no rows(Thomas)
4274 internal optimizer, executor bug fixes(Vadim)
4275 fix problem where inner loop in < or <= has no rows(Vadim)
4276 prevent re-commuting join index clauses(Vadim)
4277 fix join clauses for multiple tables(Vadim)
4278 fix hash, hashjoin for arrays(Vadim)
4279 fix btree for abstime type(Vadim)
4280 large object fixes(Raymond)
4281 fix buffer leak in hash indexes (Vadim)
4282 fix rtree for use in inner scan (Vadim)
4283 fix gist for use in inner scan, cleanups (Vadim, Andrea)
4284 avoid unnecessary local buffers allocation (Vadim, Massimo)
4285 fix local buffers leak in transaction aborts (Vadim)
4286 fix file manager memmory leaks, cleanups (Vadim, Massimo)
4287 fix storage manager memmory leaks (Vadim)
4288 fix btree duplicates handling (Vadim)
4289 fix deleted tuples re-incarnation caused by vacuum (Vadim)
4290 fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce)
4291 many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor)
4295 attribute optimization statistics(Bruce)
4296 much faster new btree bulk load code(Paul)
4297 BTREE UNIQUE added to bulk load code(Vadim)
4298 new lock debug code(Massimo)
4299 massive changes to libpg++(Leo)
4300 new GEQO optimizer speeds table multitable optimization(Martin)
4301 new WARN message for non-unique insert into unique key(Marc)
4302 update x=-3, no spaces, now valid(Bruce)
4303 remove case-sensitive identifier handling(Bruce,Thomas,Dan)
4304 debug backend now pretty-prints tree(Darren)
4305 new Oracle character functions(Edmund)
4306 new plaintext password functions(Dan)
4307 no such class or insufficient privilege changed to distinct messages(Dan)
4308 new ANSI timestamp function(Dan)
4309 new ANSI Time and Date types (Thomas)
4310 move large chunks of data in backend(Martin)
4311 multicolumn btree indexes(Vadim)
4312 new SET var TO value command(Martin)
4313 update transaction status on reads(Dan)
4314 new locale settings for character types(Oleg)
4315 new SEQUENCE serial number generator(Vadim)
4316 GROUP BY function now possible(Vadim)
4317 re-organize regression test(Thomas,Marc)
4318 new optimizer operation weights(Vadim)
4319 new psql \z grant/permit option(Marc)
4320 new MONEY data type(D'Arcy,Thomas)
4321 tcp socket communication speed improved(Vadim)
4322 new VACUUM option for attribute statistics, and for certain columns (Vadim)
4323 many geometric type improvements(Thomas,Keith)
4324 additional regression tests(Thomas)
4325 new datestyle variable(Thomas,Vadim,Martin)
4326 more comparison operators for sorting types(Thomas)
4327 new conversion functions(Thomas)
4328 new more compact btree format(Vadim)
4329 allow pg_dumpall to preserve database ownership(Bruce)
4330 new SET GEQO=# and R_PLANS variable(Vadim)
4331 old (!GEQO) optimizer can use right-sided plans (Vadim)
4332 typechecking improvement in SQL parser(Bruce)
4333 new SET, SHOW, RESET commands(Thomas,Vadim)
4334 new \connect database USER option
4335 new destroydb -i option (Igor)
4336 new \dt and \di psql commands (Darren)
4337 SELECT "\n" now escapes newline (A. Duursma)
4338 new geometry conversion functions from old format (Thomas)
4342 new configuration script(Marc)
4343 readline configuration option added(Marc)
4344 OS-specific configuration options removed(Marc)
4345 new OS-specific template files(Marc)
4346 no more need to edit Makefile.global(Marc)
4347 re-arrange include files(Marc)
4348 nextstep patches (Gregor Hoffleit)
4349 removed WIN32-specific code(Bruce)
4350 removed postmaster -e option, now only postgres -e option (Bruce)
4351 merge duplicate library code in front/backends(Martin)
4352 now works with eBones, international Kerberos(Jun)
4353 more shared library support
4354 c++ include file cleanup(Bruce)
4355 warn about buggy flex(Bruce)
4356 DG/UX, Ultrix, IRIX, AIX portability fixes
4362 <sect1 id="release-6-0">
4363 <title>Release 6.0</title>
4366 <title>Release date</title>
4367 <simpara>1997-01-29</simpara>
4371 A dump/restore is required for those wishing to migrate data from
4372 previous releases of <productname>PostgreSQL</productname>.
4376 <title>Migration from version 1.09 to version 6.0</title>
4379 This migration requires a complete dump of the 1.09 database and a
4380 restore of the database in 6.0.
4385 <title>Migration from pre-1.09 to version 6.0</title>
4388 Those migrating from earlier 1.* releases should first upgrade to 1.09
4389 because the COPY output format was improved from the 1.02 release.
4394 <title>Changes</title>
4400 ALTER TABLE bug - running postgress process needs to re-read table definition
4401 Allow vacuum to be run on one table or entire database(Bruce)
4403 Fix array over-runs of memory writes(Kurt)
4404 Fix elusive btree range/non-range bug(Dan)
4405 Fix for hash indexes on some types like time and date
4406 Fix for pg_log size explosion
4407 Fix permissions on lo_export()(Bruce)
4408 Fix unitialized reads of memory(Kurt)
4409 Fixed ALTER TABLE ... char(3) bug(Bruce)
4410 Fixed a few small memory leaks
4411 Fixed EXPLAIN handling of options and changed full_path option name
4412 Fixed output of group acl permissions
4413 Memory leaks (hunt and destroy with tools like Purify(Kurt)
4414 Minor improvements to rules system
4416 New asserts for run-checking
4417 Overhauled parser/analyze code to properly report errors and increase speed
4418 Pg_dump -d now handles NULL's properly(Bruce)
4419 Prevent SELECT NULL from crashing server (Bruce)
4420 Properly report errors when INSERT ... SELECT columns did not match
4421 Properly report errors when insert column names were not correct
4422 Psql \g filename now works(Bruce)
4423 Psql fixed problem with multiple statements on one line with multiple outputs
4424 Removed duplicate system OIDs
4425 SELECT * INTO TABLE . GROUP/ORDER BY gives unlink error if table exists(Bruce)
4426 Several fixes for queries that crashed the backend
4427 Starting quote in insert string errors(Bruce)
4428 Submitting an empty query now returns empty status, not just " " query(Bruce)
4432 Add EXPLAIN manual page(Bruce)
4433 Add UNIQUE index capability(Dan)
4434 Add hostname/user level access control rather than just hostname and user
4435 Add synonym of != for <>(Bruce)
4436 Allow "select oid,* from table"
4437 Allow BY,ORDER BY to specify columns by number, or by non-alias table.column(Bruce)
4438 Allow COPY from the frontend(Bryan)
4439 Allow GROUP BY to use alias column name(Bruce)
4440 Allow actual compression, not just reuse on the same page(Vadim)
4441 Allow installation-configuration option to auto-add all local users(Bryan)
4442 Allow libpq to distinguish between text value '' and null(Bruce)
4443 Allow non-postgres users with createdb privs to destroydb's
4444 Allow restriction on who can create C functions(Bryan)
4445 Allow restriction on who can do backend COPY(Bryan)
4446 Can shrink tables, pg_time and pg_log(Vadim & Erich)
4447 Change debug level 2 to print queries only, changed debug heading layout(Bruce)
4448 Change default decimal constant representation from float4 to float8(Bruce)
4449 European date format now set when postmaster is started
4450 Execute lowercase function names if not found with exact case
4451 Fixes for aggregate/GROUP processing, allow 'select sum(func(x),sum(x+y) from z'
4452 Gist now included in the distrubution(Marc)
4453 Idend authentication of local users(Bryan)
4454 Implement BETWEEN qualifier(Bruce)
4455 Implement IN qualifier(Bruce)
4456 Libpq has PQgetisnull()(Bruce)
4457 Libpq++ improvements
4458 New options to initdb(Bryan)
4459 Pg_dump allow dump of OIDs(Bruce)
4460 Pg_dump create indexes after tables are loaded for speed(Bruce)
4461 Pg_dumpall dumps all databases, and the user table
4462 Pginterface additions for NULL values(Bruce)
4463 Prevent postmaster from being run as root
4464 Psql \h and \? is now readable(Bruce)
4465 Psql allow backslashed, semicolons anywhere on the line(Bruce)
4466 Psql changed command prompt for lines in query or in quotes(Bruce)
4467 Psql char(3) now displays as (bp)char in \d output(Bruce)
4468 Psql return code now more accurate(Bryan?)
4469 Psql updated help syntax(Bruce)
4470 Re-visit and fix vacuum(Vadim)
4471 Reduce size of regression diffs, remove timezone name difference(Bruce)
4472 Remove compile-time parameters to enable binary distributions(Bryan)
4473 Reverse meaning of HBA masks(Bryan)
4474 Secure Authentication of local users(Bryan)
4475 Speed up vacuum(Vadim)
4476 Vacuum now had VERBOSE option(Bruce)
4480 All functions now have prototypes that are compared against the calls
4481 Allow asserts to be disabled easly from Makefile.global(Bruce)
4482 Change oid constants used in code to #define names
4483 Decoupled sparc and solaris defines(Kurt)
4484 Gcc -Wall compiles cleanly with warnings only from unfixable constructs
4485 Major include file reorganization/reduction(Marc)
4486 Make now stops on compile failure(Bryan)
4487 Makefile restructuring(Bryan, Marc)
4488 Merge bsdi_2_1 to bsdi(Bruce)
4489 Monitor program removed
4490 Name change from Postgres95 to PostgreSQL
4491 New config.h file(Marc, Bryan)
4492 PG_VERSION now set to 6.0 and used by postmaster
4493 Portability additions, including Ultrix, DG/UX, AIX, and Solaris
4494 Reduced the number of #define's, centeralized #define's
4495 Remove duplicate OIDS in system tables(Dan)
4496 Remove duplicate system catalog info or report mismatches(Dan)
4497 Removed many os-specific #define's
4498 Restructured object file generation/location(Bryan, Marc)
4499 Restructured port-specific file locations(Bryan, Marc)
4500 Unused/uninialized variables corrected
4506 <sect1 id="release-1-09">
4507 <title>Release 1.09</title>
4510 <title>Release date</title>
4511 <simpara>1996-11-04</simpara>
4515 Sorry, we didn't keep track of changes from 1.02 to 1.09. Some of
4516 the changes listed in 6.0 were actually included in the 1.02.1 to 1.09
4521 <sect1 id="release-1-02">
4522 <title>Release 1.02</title>
4525 <title>Release date</title>
4526 <simpara>1996-08-01</simpara>
4530 <title>Migration from version 1.02 to version 1.02.1</title>
4533 Here is a new migration file for 1.02.1. It includes the 'copy' change
4534 and a script to convert old <acronym>ASCII</acronym> files.
4538 The following notes are for the benefit of users who want to migrate
4539 databases from <productname>Postgres95</> 1.01 and 1.02 to <productname>Postgres95</> 1.02.1.
4542 If you are starting afresh with <productname>Postgres95</> 1.02.1 and do not need
4543 to migrate old databases, you do not need to read any further.
4548 In order to upgrade older <productname>Postgres95</> version 1.01 or 1.02 databases to
4549 version 1.02.1, the following steps are required:
4554 Start up a new 1.02.1 postmaster
4559 Add the new built-in functions and operators of 1.02.1 to 1.01 or 1.02
4560 databases. This is done by running the new 1.02.1 server against
4561 your own 1.01 or 1.02 database and applying the queries attached at
4562 the end of the file. This can be done easily through <command>psql</>. If your
4563 1.01 or 1.02 database is named <literal>testdb</literal> and you have cut the commands
4564 from the end of this file and saved them in <filename>addfunc.sql</filename>:
4566 % psql testdb -f addfunc.sql
4569 Those upgrading 1.02 databases will get a warning when executing the
4570 last two statements in the file because they are already present in 1.02. This is
4571 not a cause for concern.
4578 <title>Dump/Reload Procedure</title>
4581 If you are trying to reload a pg_dump or text-mode, <literal>copy tablename to
4582 stdout</literal> generated with a previous version, you will need to run the
4583 attached <command>sed</command> script on the ASCII file before loading it into the
4584 database. The old format used '.' as end-of-data, while '\.' is now the
4585 end-of-data marker. Also, empty strings are now loaded in as '' rather
4586 than NULL. See the copy manual page for full details.
4589 sed 's/^\.$/\\./g' <in_file >out_file
4593 If you are loading an older binary copy or non-<systemitem>stdout</> copy, there is no
4594 end-of-data character, and hence no conversion necessary.
4597 -- following lines added by agc to reflect the case-insensitive
4598 -- regexp searching for varchar (in 1.02), and bpchar (in 1.02.1)
4599 create operator ~* (leftarg = bpchar, rightarg = text, procedure = texticregexeq);
4600 create operator !~* (leftarg = bpchar, rightarg = text, procedure = texticregexne);
4601 create operator ~* (leftarg = varchar, rightarg = text, procedure = texticregexeq);
4602 create operator !~* (leftarg = varchar, rightarg = text, procedure = texticregexne);
4608 <title>Changes</title>
4612 Source code maintenance and development
4613 * worldwide team of volunteers
4614 * the source tree now in CVS at ftp.ki.net
4617 * psql (and underlying libpq library) now has many more options for
4618 formatting output, including HTML
4619 * pg_dump now output the schema and/or the data, with many fixes to
4620 enhance completeness.
4621 * psql used in place of monitor in administration shell scripts.
4622 monitor to be depreciated in next release.
4623 * date/time functions enhanced
4624 * NULL insert/update/comparison fixed/enhanced
4625 * TCL/TK lib and shell fixed to work with both tck7.4/tk4.0 and tcl7.5/tk4.1
4627 Bug Fixes (almost too numerous to mention)
4629 * storage management
4630 * check for NULL pointer before dereferencing
4634 * added SolarisX86 port
4635 * added BSD/OS 2.1 port
4640 Contributors (appologies to any missed)
4641 * Kurt J. Lidl <lidl@va.pubnix.com>
4642 (missed in first run, but no less important)
4643 * Erich Stamberger <eberger@gewi.kfunigraz.ac.at>
4644 * Jason Wright <jason@shiloh.vnet.net>
4645 * Cees de Groot <C.deGroot@inter.NL.net>
4646 * ernst.molitor@uni-bonn.de
4647 * michael.siebenborn@ae3.Hypo.DE (Michael Siebenborn (6929))
4648 * Brian E. Gallew <geek+@cmu.edu>
4649 * Vadim B. Mikheev <vadim@sable.krasnoyarsk.su>
4650 * Adam Sussman <myddryn@vidya.com>
4651 * Chris Dunlop <chris@onthe.net.au>
4652 * Marc G. Fournier <scrappy@ki.net>
4653 * Dan McGuirk <mcguirk@indirect.com>
4654 * Dr_George_D_Detlefsen <drgeorge@ilt.com>
4655 * Erich Stamberger <eberger@gewi.kfunigraz.ac.at>
4656 * Massimo Dal Zotto <dz@cs.unitn.it>
4657 * Randy Kunkee <kunkee@Starbase.NeoSoft.COM>
4658 * Rick Weldon <rick@wisetech.com>
4659 * Thomas van Reimersdahl <reimersd@dali.techinfo.rwth-aachen.de>
4660 * david bennett <dave@bensoft.com>
4661 * ernst.molitor@uni-bonn.de
4662 * Julian Assange <proff@suburbia.net>
4663 * Bruce Momjian <maillist@candle.pha.pa.us>
4664 * Paul "Shag" Walmsley <ccshag@cclabs.missouri.edu>
4665 * "Alistair G. Crooks" <azcb0@sde.uts.amdahl.com>
4670 <sect1 id="release-1-01">
4671 <title>Release 1.01</title>
4674 <title>Release date</title>
4675 <simpara>1996-02-23</simpara>
4680 <title>Migration from version 1.0 to version 1.01</title>
4683 The following notes are for the benefit of users who want to migrate
4684 databases from <productname>Postgres95</> 1.0 to <productname>Postgres95</> 1.01.
4687 If you are starting afresh with <productname>Postgres95</> 1.01 and do not need
4688 to migrate old databases, you do not need to read any further.
4691 In order to <productname>Postgres95</> version 1.01 with databases created with
4692 <productname>Postgres95</> version 1.0, the following steps are required:
4697 Set the definition of <symbol>NAMEDATALEN</symbol> in <filename>src/Makefile.global</filename> to 16
4698 and <symbol>OIDNAMELEN</symbol> to 20.
4703 Decide whether you want to use Host based authentication.
4708 If you do, you must create a file name <literal>pg_hba</literal> in your top-level data
4709 directory (typically the value of your <envar>$PGDATA</envar>). <filename>src/libpq/pg_hba</filename>
4710 shows an example syntax.
4715 If you do not want host-based authentication, you can comment out
4720 in <filename>src/Makefile.global</filename>
4723 Note that host-based authentication is turned on by default, and if
4724 you do not take steps A or B above, the out-of-the-box 1.01 will
4725 not allow you to connect to 1.0 databases.
4733 Compile and install 1.01, but DO NOT do the <command>initdb</command> step.
4738 Before doing anything else, terminate your 1.0 postmaster, and
4739 backup your existing <envar>$PGDATA</envar> directory.
4744 Set your <envar>PGDATA</envar> environment variable to your 1.0 databases, but set up
4745 path up so that 1.01 binaries are being used.
4750 Modify the file <filename><envar>$PGDATA</envar>/PG_VERSION</filename> from 5.0 to 5.1
4755 Start up a new 1.01 postmaster
4760 Add the new built-in functions and operators of 1.01 to 1.0
4761 databases. This is done by running the new 1.01 server against
4762 your own 1.0 database and applying the queries attached and saving
4763 in the file 1.0_to_1.01.sql. This can be done easily through <command>psql</command>.
4764 If your 1.0 database is name <literal>testdb</literal>:
4767 % psql testdb -f 1.0_to_1.01.sql
4770 and then execute the following commands (cut and paste from here):
4773 -- add builtin functions that are new to 1.01
4775 create function int4eqoid (int4, oid) returns bool as 'foo'
4776 language 'internal';
4777 create function oideqint4 (oid, int4) returns bool as 'foo'
4778 language 'internal';
4779 create function char2icregexeq (char2, text) returns bool as 'foo'
4780 language 'internal';
4781 create function char2icregexne (char2, text) returns bool as 'foo'
4782 language 'internal';
4783 create function char4icregexeq (char4, text) returns bool as 'foo'
4784 language 'internal';
4785 create function char4icregexne (char4, text) returns bool as 'foo'
4786 language 'internal';
4787 create function char8icregexeq (char8, text) returns bool as 'foo'
4788 language 'internal';
4789 create function char8icregexne (char8, text) returns bool as 'foo'
4790 language 'internal';
4791 create function char16icregexeq (char16, text) returns bool as 'foo'
4792 language 'internal';
4793 create function char16icregexne (char16, text) returns bool as 'foo'
4794 language 'internal';
4795 create function texticregexeq (text, text) returns bool as 'foo'
4796 language 'internal';
4797 create function texticregexne (text, text) returns bool as 'foo'
4798 language 'internal';
4800 -- add builtin functions that are new to 1.01
4802 create operator = (leftarg = int4, rightarg = oid, procedure = int4eqoid);
4803 create operator = (leftarg = oid, rightarg = int4, procedure = oideqint4);
4804 create operator ~* (leftarg = char2, rightarg = text, procedure = char2icregexeq);
4805 create operator !~* (leftarg = char2, rightarg = text, procedure = char2icregexne);
4806 create operator ~* (leftarg = char4, rightarg = text, procedure = char4icregexeq);
4807 create operator !~* (leftarg = char4, rightarg = text, procedure = char4icregexne);
4808 create operator ~* (leftarg = char8, rightarg = text, procedure = char8icregexeq);
4809 create operator !~* (leftarg = char8, rightarg = text, procedure = char8icregexne);
4810 create operator ~* (leftarg = char16, rightarg = text, procedure = char16icregexeq);
4811 create operator !~* (leftarg = char16, rightarg = text, procedure = char16icregexne);
4812 create operator ~* (leftarg = text, rightarg = text, procedure = texticregexeq);
4813 create operator !~* (leftarg = text, rightarg = text, procedure = texticregexne);
4821 <title>Changes</title>
4826 * 1.01 is backwards compatible with 1.0 database provided the user
4827 follow the steps outlined in the MIGRATION_from_1.0_to_1.01 file.
4828 If those steps are not taken, 1.01 is not compatible with 1.0 database.
4831 * added PQdisplayTuples() to libpq and changed monitor and psql to use it
4832 * added NeXT port (requires SysVIPC implementation)
4833 * added CAST .. AS ... syntax
4834 * added ASC and DESC keywords
4835 * added 'internal' as a possible language for CREATE FUNCTION
4836 internal functions are C functions which have been statically linked
4837 into the postgres backend.
4838 * a new type "name" has been added for system identifiers (table names,
4839 attribute names, etc.) This replaces the old char16 type. The
4840 of name is set by the NAMEDATALEN #define in src/Makefile.global
4841 * a readable reference manual that describes the query language.
4842 * added host-based access control. A configuration file ($PGDATA/pg_hba)
4843 is used to hold the configuration data. If host-based access control
4844 is not desired, comment out HBA=1 in src/Makefile.global.
4845 * changed regex handling to be uniform use of Henry Spencer's regex code
4846 regardless of platform. The regex code is included in the distribution
4847 * added functions and operators for case-insensitive regular expressions.
4848 The operators are ~* and !~*.
4849 * pg_dump uses COPY instead of SELECT loop for better performance
4852 * fixed an optimizer bug that was causing core dumps when
4853 functions calls were used in comparisons in the WHERE clause
4854 * changed all uses of getuid to geteuid so that effective uids are used
4855 * psql now returns non-zero status on errors when using -c
4856 * applied public patches 1-14
4862 <sect1 id="release-1-0">
4863 <title>Release 1.0</title>
4866 <title>Release date</title>
4867 <simpara>1995-09-05</simpara>
4871 <title>Changes</title>
4876 * The copyright of <productname>Postgres</productname> 1.0 has been loosened to be freely modifiable
4877 and modifiable for any purpose. Please read the COPYRIGHT file.
4878 Thanks to Professor Michael Stonebraker for making this possible.
4881 * date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using
4882 EUROPEAN STYLE). This follows SQL-92 specs.
4883 * "delimiters" is now a keyword
4886 * sql LIKE syntax has been added
4887 * copy command now takes an optional USING DELIMITER specification.
4888 delimiters can be any single-character string.
4889 * IRIX 5.3 port has been added.
4890 Thanks to Paul Walmsley and others.
4891 * updated pg_dump to work with new libpq
4892 * \d has been added psql
4893 Thanks to Keith Parks
4894 * regexp performance for architectures that use POSIX regex has been
4895 improved due to caching of precompiled patterns.
4896 Thanks to Alistair Crooks
4897 * a new version of libpq++
4898 Thanks to William Wanders
4901 * arbitrary userids can be specified in the createuser script
4902 * \c to connect to other databases in psql now works.
4903 * bad pg_proc entry for float4inc() is fixed
4904 * users with usecreatedb field set can now create databases without
4905 having to be usesuper
4906 * remove access control entries when the entry no longer has any
4908 * fixed non-portable datetimes implementation
4909 * added kerberos flags to the src/backend/Makefile
4910 * libpq now works with kerberos
4911 * typographic errors in the user manual have been corrected.
4912 * btrees with multiple index never worked, now we tell you they don't
4913 work when you try to use them
4919 <sect1 id="release-0-03">
4920 <title><productname>Postgres95</productname> Release 0.03</title>
4923 <title>Release date</title>
4924 <simpara>1995-07-21</simpara>
4928 <title>Changes</title>
4931 Incompatible changes:
4932 * BETA-0.3 IS INCOMPATIBLE WITH DATABASES CREATED WITH PREVIOUS VERSIONS
4933 (due to system catalog changes and indexing structure changes).
4934 * double-quote (") is deprecated as a quoting character for string literals;
4935 you need to convert them to single quotes ('). <!-- " -->
4936 * name of aggregates (eg. int4sum) are renamed in accordance with the
4937 SQL standard (eg. sum).
4938 * CHANGE ACL syntax is replaced by GRANT/REVOKE syntax.
4939 * float literals (eg. 3.14) are now of type float4 (instead of float8 in
4940 previous releases); you might have to do typecasting if you depend on it
4941 being of type float8. If you neglect to do the typecasting and you assign
4942 a float literal to a field of type float8, you may get incorrect values
4944 * LIBPQ has been totally revamped so that frontend applications
4945 can connect to multiple backends
4946 * the usesysid field in pg_user has been changed from int2 to int4 to
4947 allow wider range of Unix user ids.
4948 * the netbsd/freebsd/bsd o/s ports have been consolidated into a
4949 single BSD44_derived port. (thanks to Alistair Crooks)
4951 SQL standard-compliance (the following details changes that makes postgres95
4952 more compliant to the SQL-92 standard):
4953 * the following SQL types are now built-in: smallint, int(eger), float, real,
4954 char(N), varchar(N), date and time.
4956 The following are aliases to existing postgres types:
4958 integer, int -> int4
4959 float, real -> float4
4960 char(N) and varchar(N) are implemented as truncated text types. In
4961 addition, char(N) does blank-padding.
4962 * single-quote (') is used for quoting string literals; '' (in addition to
4963 \') is supported as means of inserting a single quote in a string
4964 * SQL standard aggregate names (MAX, MIN, AVG, SUM, COUNT) are used
4965 (Also, aggregates can now be overloaded, i.e. you can define your
4966 own MAX aggregate to take in a user-defined type.)
4967 * CHANGE ACL removed. GRANT/REVOKE syntax added.
4968 - Privileges can be given to a group using the "GROUP" keyword.
4970 GRANT SELECT ON foobar TO GROUP my_group;
4971 The keyword 'PUBLIC' is also supported to mean all users.
4973 Privileges can only be granted or revoked to one user or group
4976 "WITH GRANT OPTION" is not supported. Only class owners can change
4978 - The default access control is to to grant users readonly access.
4979 You must explicitly grant insert/update access to users. To change
4980 this, modify the line in
4981 src/backend/utils/acl.h
4982 that defines ACL_WORLD_DEFAULT
4985 * the bug where aggregates of empty tables were not run has been fixed. Now,
4986 aggregates run on empty tables will return the initial conditions of the
4987 aggregates. Thus, COUNT of an empty table will now properly return 0.
4988 MAX/MIN of an empty table will return a tuple of value NULL.
4989 * allow the use of \; inside the monitor
4990 * the LISTEN/NOTIFY asynchronous notification mechanism now work
4991 * NOTIFY in rule action bodies now work
4992 * hash indexes work, and access methods in general should perform better.
4993 creation of large btree indexes should be much faster. (thanks to Paul
4996 Other changes and enhancements:
4997 * addition of an EXPLAIN statement used for explaining the query execution
4998 plan (eg. "EXPLAIN SELECT * FROM EMP" prints out the execution plan for
5000 * WARN and NOTICE messages no longer have timestamps on them. To turn on
5001 timestamps of error messages, uncomment the line in
5002 src/backend/utils/elog.h:
5003 /* define ELOG_TIMESTAMPS */
5004 * On an access control violation, the message
5005 "Either no such class or insufficient privilege"
5006 will be given. This is the same message that is returned when
5007 a class is not found. This dissuades non-privileged users from
5008 guessing the existence of privileged classes.
5009 * some additional system catalog changes have been made that are not
5010 visible to the user.
5013 * The -oid option has been added to the "pg_result" tcl command.
5014 pg_result -oid returns oid of the last tuple inserted. If the
5015 last command was not an INSERT, then pg_result -oid returns "".
5016 * the large object interface is available as pg_lo* tcl commands:
5017 pg_lo_open, pg_lo_close, pg_lo_creat, etc.
5019 Portability enhancements and New Ports:
5020 * flex/lex problems have been cleared up. Now, you should be able to use
5021 flex instead of lex on any platforms. We no longer make assumptions of
5022 what lexer you use based on the platform you use.
5023 * The Linux-ELF port is now supported. Various configuration have been
5024 tested: The following configuration is known to work:
5025 kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24
5026 with everything in ELF format,
5029 * ipcclean added to the distribution
5030 ipcclean usually does not need to be run, but if your backend crashes
5031 and leaves shared memory segments hanging around, ipcclean will
5032 clean them up for you.
5035 * the user manual has been revised and libpq documentation added.
5041 <sect1 id="release-0-02">
5042 <title><productname>Postgres95</productname> Release 0.02</title>
5045 <title>Release date</title>
5046 <simpara>1995-05-25</simpara>
5050 <title>Changes</title>
5054 Incompatible changes:
5055 * The SQL statement for creating a database is 'CREATE DATABASE' instead
5056 of 'CREATEDB'. Similarly, dropping a database is 'DROP DATABASE' instead
5057 of 'DESTROYDB'. However, the names of the executables 'createdb' and
5058 'destroydb' remain the same.
5061 * pgperl - a Perl (4.036) interface to Postgres95
5062 * pg_dump - a utility for dumping out a postgres database into a
5063 script file containing query commands. The script files are in a ASCII
5064 format and can be used to reconstruct the database, even on other
5065 machines and other architectures. (Also good for converting
5066 a Postgres 4.2 database to Postgres95 database.)
5068 The following ports have been incorporated into postgres95-beta-0.02:
5069 * the NetBSD port by Alistair Crooks
5070 * the AIX port by Mike Tung
5071 * the Windows NT port by Jon Forrest (more stuff but not done yet)
5072 * the Linux ELF port by Brian Gallew
5074 The following bugs have been fixed in postgres95-beta-0.02:
5075 * new lines not escaped in COPY OUT and problem with COPY OUT when first
5077 * cannot type return to use the default user id in createuser
5078 * SELECT DISTINCT on big tables crashes
5079 * Linux installation problems
5080 * monitor doesn't allow use of 'localhost' as PGHOST
5081 * psql core dumps when doing \c or \l
5082 * the "pgtclsh" target missing from src/bin/pgtclsh/Makefile
5083 * libpgtcl has a hard-wired default port number
5084 * SELECT DISTINCT INTO TABLE hangs
5085 * CREATE TYPE doesn't accept 'variable' as the internallength
5086 * wrong result using more than 1 aggregate in a SELECT
5092 <sect1 id="release-0-01">
5093 <title><productname>Postgres95</productname> Release 0.01</title>
5096 <title>Release date</title>
5097 <simpara>1995-05-01</simpara>
5106 <sect1 id="timing-results">
5107 <title>Timing Results</title>
5110 These timing results are from running the regression test with the commands
5113 % cd src/test/regress
5119 Timing under Linux 2.0.27 seems to have a roughly 5% variation from run
5120 to run, presumably due to the scheduling vagaries of multitasking systems.
5124 <title>Version 6.5</title>
5127 As has been the case for previous releases, timing between
5128 releases is not directly comparable since new regression tests
5129 have been added. In general, 6.5 is faster than previous
5134 Timing with <function>fsync()</function> disabled:
5138 02:00 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
5139 04:38 Sparc Ultra 1 143MHz, 64MB, Solaris 2.6
5144 Timing with <function>fsync()</function> enabled:
5148 04:21 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
5151 For the <systemitem class="osname">Linux</systemitem> system above, using <acronym>UW-SCSI</acronym> disks rather than (older) <acronym>IDE</acronym>
5152 disks leads to a 50% improvement in speed on the regression test.
5157 <title>Version 6.4beta</title>
5160 The times for this release are not directly comparable to those for previous releases
5161 since some additional regression tests have been included.
5162 In general, however, 6.4 should be slightly faster than the previous release (thanks, Bruce!).
5167 02:26 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
5173 <title>Version 6.3</title>
5176 The times for this release are not directly comparable to those for previous releases
5177 since some additional regression tests have been included and some obsolete tests involving
5178 time travel have been removed.
5179 In general, however, 6.3 is substantially faster than previous releases (thanks, Bruce!).
5184 02:30 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
5185 04:12 Dual Pentium Pro 180, 96MB, EIDE, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
5191 <title>Version 6.1</title>
5196 06:12 Pentium Pro 180, 32MB, EIDE, Linux 2.0.30, gcc 2.7.2 -O2 -m486
5197 12:06 P-100, 48MB, Linux 2.0.29, gcc
5198 39:58 Sparc IPC 32MB, Solaris 2.5, gcc 2.7.2.1 -O -g
5206 <!-- Keep this comment at the end of the file
5211 sgml-minimize-attributes:nil
5212 sgml-always-quote-attributes:t
5215 sgml-parent-document:nil
5216 sgml-default-dtd-file:"./reference.ced"
5217 sgml-exposed-tags:nil
5218 sgml-local-catalogs:("/usr/lib/sgml/catalog")
5219 sgml-local-ecat-files:nil