E.230. Release 7.2
Release Date: 2002-02-04
E.230.1. Overview
This release improves PostgreSQL for use in high-volume applications.
Major changes in this release:
- VACUUM
-
Vacuuming no longer locks tables, thus allowing normal user access during the vacuum. A new VACUUM FULL command does old-style vacuum by locking the table and shrinking the on-disk copy of the table.
- Transactions
-
There is no longer a problem with installations that exceed four billion transactions.
- OIDs
-
OIDs are now optional. Users can now create tables without OIDs for cases where OID usage is excessive.
- Optimizer
-
The system now computes histogram column statistics during ANALYZE, allowing much better optimizer choices.
- Security
-
A new MD5 encryption option allows more secure storage and transfer of passwords. A new Unix-domain socket authentication option is available on Linux and BSD systems.
- Statistics
-
Administrators can use the new table access statistics module to get fine-grained information about table and index usage.
- Internationalization
-
Program and library messages can now be displayed in several languages.
E.230.2. Migration to Version 7.2
A dump/restore using pg_dump is required for those wishing to migrate data from any previous release.
Observe the following incompatibilities:
-
The semantics of the VACUUM command have changed in this release. You might wish to update your maintenance procedures accordingly.
-
In this release, comparisons using = NULL will always return false (or NULL, more precisely). Previous releases automatically transformed this syntax to IS NULL. The old behavior can be re-enabled using a postgresql.conf parameter.
-
The pg_hba.conf and pg_ident.conf configuration is now only reloaded after receiving a SIGHUP signal, not with each connection.
-
The function octet_length() now returns the uncompressed data length.
-
The date/time value 'current' is no longer available. You will need to rewrite your applications.
-
The timestamp(), time(), and interval() functions are no longer available. Instead of timestamp(), use timestamp 'string' or CAST.
The SELECT ... LIMIT #,# syntax will be removed in the next release. You should change your queries to use separate LIMIT and OFFSET clauses, e.g. LIMIT 10 OFFSET 20.
E.230.3. Changes
E.230.3.1. Server Operation
-
Create temporary files in a separate directory (Bruce)
-
Delete orphaned temporary files on postmaster startup (Bruce)
-
Added unique indexes to some system tables (Tom)
-
System table operator reorganization (Oleg Bartunov, Teodor Sigaev, Tom)
-
Renamed pg_log to pg_clog (Tom)
-
Enable SIGTERM, SIGQUIT to kill backends (Jan)
-
Removed compile-time limit on number of backends (Tom)
-
Better cleanup for semaphore resource failure (Tatsuo, Tom)
-
Allow safe transaction ID wraparound (Tom)
-
Removed OIDs from some system tables (Tom)
-
Removed "triggered data change violation" error check (Tom)
-
SPI portal creation of prepared/saved plans (Jan)
-
Allow SPI column functions to work for system columns (Tom)
-
Long value compression improvement (Tom)
-
Statistics collector for table, index access (Jan)
-
Truncate extra-long sequence names to a reasonable value (Tom)
-
Measure transaction times in milliseconds (Thomas)
-
Fix TID sequential scans (Hiroshi)
-
Superuser ID now fixed at 1 (Peter E)
-
New pg_ctl "reload" option (Tom)
E.230.3.2. Performance
-
Optimizer improvements (Tom)
-
New histogram column statistics for optimizer (Tom)
-
Reuse write-ahead log files rather than discarding them (Tom)
-
Cache improvements (Tom)
-
IS NULL, IS NOT NULL optimizer improvement (Tom)
-
Improve lock manager to reduce lock contention (Tom)
-
Keep relcache entries for index access support functions (Tom)
-
Allow better selectivity with NaN and infinities in NUMERIC (Tom)
-
R-tree performance improvements (Kenneth Been)
-
B-tree splits more efficient (Tom)
E.230.3.3. Privileges
-
Change UPDATE, DELETE privileges to be distinct (Peter E)
-
New REFERENCES, TRIGGER privileges (Peter E)
-
Allow GRANT/REVOKE to/from more than one user at a time (Peter E)
-
New has_table_privilege() function (Joe Conway)
-
Allow non-superuser to vacuum database (Tom)
-
New SET SESSION AUTHORIZATION command (Peter E)
-
Fix bug in privilege modifications on newly created tables (Tom)
-
Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom)
E.230.3.4. Client Authentication
-
Fork postmaster before doing authentication to prevent hangs (Peter E)
-
Add ident authentication over Unix domain sockets on Linux, *BSD (Helge Bahmann, Oliver Elphick, Teodor Sigaev, Bruce)
-
Add a password authentication method that uses MD5 encryption (Bruce)
-
Allow encryption of stored passwords using MD5 (Bruce)
-
PAM authentication (Dominic J. Eidson)
-
Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce)
E.230.3.5. Server Configuration
-
Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce)
-
New parameter to set default transaction isolation level (Peter E)
-
New parameter to enable conversion of "expr = NULL" into "expr IS NULL", off by default (Peter E)
-
New parameter to control memory usage by VACUUM (Tom)
-
New parameter to set client authentication timeout (Tom)
-
New parameter to set maximum number of open files (Tom)
E.230.3.6. Queries
-
Statements added by INSERT rules now execute after the INSERT (Jan)
-
Prevent unadorned relation names in target list (Bruce)
-
NULLs now sort after all normal values in ORDER BY (Tom)
-
New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom)
-
New SHARE UPDATE EXCLUSIVE lock mode (Tom)
-
New EXPLAIN ANALYZE command that shows run times and row counts (Martijn van Oosterhout)
-
Fix problem with LIMIT and subqueries (Tom)
-
Fix for LIMIT, DISTINCT ON pushed into subqueries (Tom)
-
Fix nested EXCEPT/INTERSECT (Tom)
E.230.3.7. Schema Manipulation
-
Fix SERIAL in temporary tables (Bruce)
-
Allow temporary sequences (Bruce)
-
Sequences now use int8 internally (Tom)
-
New SERIAL8 creates int8 columns with sequences, default still SERIAL4 (Tom)
-
Make OIDs optional using WITHOUT OIDS (Tom)
-
Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor)
-
Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher Kings-Lynne)
-
New CREATE OR REPLACE FUNCTION to alter existing function (preserving the function OID) (Gavin Sherry)
-
Add ALTER TABLE / ADD [ UNIQUE | PRIMARY ] (Christopher Kings-Lynne)
-
Allow column renaming in views
-
Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent Verner)
-
Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (Stephan Szabo)
-
ALTER TABLE RENAME update foreign-key trigger arguments correctly (Brent Verner)
-
DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom)
-
Add automatic return type data casting for SQL functions (Tom)
-
Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom)
-
Enable partial indexes (Martijn van Oosterhout)
E.230.3.8. Utility Commands
-
Add RESET ALL, SHOW ALL (Marko Kreen)
-
CREATE/ALTER USER/GROUP now allow options in any order (Vince)
-
Add LOCK A, B, C functionality (Neil Padgett)
-
New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce)
-
New light-weight VACUUM does not lock table; old semantics are available as VACUUM FULL (Tom)
-
Disable COPY TO/FROM on views (Bruce)
-
COPY DELIMITERS string must be exactly one character (Tom)
-
VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout)
-
Fix privilege checks for CREATE INDEX (Tom)
-
Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom)
E.230.3.9. Data Types and Functions
-
SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom)
-
Add convert(), convert2() (Tatsuo)
-
New function bit_length() (Peter E)
-
Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tatsuo)
-
CHAR(), VARCHAR() now reject strings that are too long (Peter E)
-
BIT VARYING now rejects bit strings that are too long (Peter E)
-
BIT now rejects bit strings that do not match declared size (Peter E)
-
INET, CIDR text conversion functions (Alex Pilosov)
-
INET, CIDR operators << and <<= indexable (Alex Pilosov)
-
Bytea \### now requires valid three digit octal number
-
Bytea comparison improvements, now supports =, <>, >, >=, <, and <=
-
Bytea now supports B-tree indexes
-
Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE
-
Bytea now supports concatenation
-
New bytea functions: position, substring, trim, btrim, and length
-
New encode() function mode, "escaped", converts minimally escaped bytea to/from text
-
Add pg_database_encoding_max_length() (Tatsuo)
-
Add pg_client_encoding() function (Tatsuo)
-
now() returns time with millisecond precision (Thomas)
-
New TIMESTAMP WITHOUT TIMEZONE data type (Thomas)
-
Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas)
-
New xid/int comparison functions (Hiroshi)
-
Add precision to TIME, TIMESTAMP, and INTERVAL data types (Thomas)
-
Modify type coercion logic to attempt binary-compatible functions first (Tom)
-
New encode() function installed by default (Marko Kreen)
-
Improved to_*() conversion functions (Karel Zak)
-
Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo)
-
New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_salt() (Marko Kreen)
-
Correct description of translate() function (Bruce)
-
Add INTERVAL argument for SET TIME ZONE (Thomas)
-
Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas)
-
Optimize length functions when using single-byte encodings (Tatsuo)
-
Fix path_inter, path_distance, path_length, dist_ppath to handle closed paths (Curtis Barrett, Tom)
-
octet_length(text) now returns non-compressed length (Tatsuo, Bruce)
-
Handle "July" full name in date/time literals (Greg Sabino Mullane)
-
Some datatype() function calls now evaluated differently
-
Add support for Julian and ISO time specifications (Thomas)
E.230.3.10. Internationalization
-
National language support in psql, pg_dump, libpq, and server (Peter E)
-
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)
-
Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware (Tatsuo)
-
Add LATIN5,6,7,8,9,10 support (Tatsuo)
-
Add ISO 8859-5,6,7,8 support (Tatsuo)
-
Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo)
-
Make mic2ascii() non-ASCII aware (Tatsuo)
-
Reject invalid multibyte character sequences (Tatsuo)
E.230.3.11. PL/pgSQL
-
Now uses portals for SELECT loops, allowing huge result sets (Jan)
-
CURSOR and REFCURSOR support (Jan)
-
Can now return open cursors (Jan)
-
Add ELSEIF (Klaus Reger)
-
Improve PL/pgSQL error reporting, including location of error (Tom)
-
Allow IS or FOR key words in cursor declaration, for compatibility (Bruce)
-
Fix for SELECT ... FOR UPDATE (Tom)
-
Fix for PERFORM returning multiple rows (Tom)
-
Make PL/pgSQL use the server's type coercion code (Tom)
-
Memory leak fix (Jan, Tom)
-
Make trailing semicolon optional (Tom)
E.230.3.12. PL/Perl
-
New untrusted PL/Perl (Alex Pilosov)
-
PL/Perl is now built on some platforms even if libperl is not shared (Peter E)
E.230.3.13. PL/Tcl
-
Now reports errorInfo (Vsevolod Lobko)
-
Add spi_lastoid function (bob@redivi.com)
E.230.3.14. PL/Python
-
...is new (Andrew Bosma)
E.230.3.15. psql
-
\d displays indexes in unique, primary groupings (Christopher Kings-Lynne)
-
Allow trailing semicolons in backslash commands (Greg Sabino Mullane)
-
Read password from /dev/tty if possible
-
Force new password prompt when changing user and database (Tatsuo, Tom)
-
Format the correct number of columns for Unicode (Patrice)
E.230.3.16. libpq
-
New function PQescapeString() to escape quotes in command strings (Florian Weimer)
-
New function PQescapeBytea() escapes binary strings for use as SQL string literals
E.230.3.17. JDBC
-
Return OID of INSERT (Ken K)
-
Handle more data types (Ken K)
-
Handle single quotes and newlines in strings (Ken K)
-
Handle NULL variables (Ken K)
-
Fix for time zone handling (Barry Lind)
-
Improved Druid support
-
Allow eight-bit characters with non-multibyte server (Barry Lind)
-
Support BIT, BINARY types (Ned Wolpert)
-
Reduce memory usage (Michael Stephens, Dave Cramer)
-
Update DatabaseMetaData (Peter E)
-
Add DatabaseMetaData.getCatalogs() (Peter E)
-
Encoding fixes (Anders Bengtsson)
-
Get/setCatalog methods (Jason Davies)
-
DatabaseMetaData.getColumns() now returns column defaults (Jason Davies)
-
DatabaseMetaData.getColumns() performance improvement (Jeroen van Vianen)
-
Some JDBC1 and JDBC2 merging (Anders Bengtsson)
-
Transaction performance improvements (Barry Lind)
-
Array fixes (Greg Zoller)
-
Serialize addition
-
Fix batch processing (Rene Pijlman)
-
ExecSQL method reorganization (Anders Bengtsson)
-
GetColumn() fixes (Jeroen van Vianen)
-
Fix isWriteable() function (Rene Pijlman)
-
Improved passage of JDBC2 conformance tests (Rene Pijlman)
-
Add bytea type capability (Barry Lind)
-
Add isNullable() (Rene Pijlman)
-
JDBC date/time test suite fixes (Liam Stewart)
-
Fix for SELECT 'id' AS xxx FROM table (Dave Cramer)
-
Fix DatabaseMetaData to show precision properly (Mark Lillywhite)
-
New getImported/getExported keys (Jason Davies)
-
MD5 password encryption support (Jeremy Wohl)
-
Fix to actually use type cache (Ned Wolpert)
E.230.3.18. ODBC
-
Remove query size limit (Hiroshi)
-
Remove text field size limit (Hiroshi)
-
Fix for SQLPrimaryKeys in multibyte mode (Hiroshi)
-
Allow ODBC procedure calls (Hiroshi)
-
Improve boolean handing (Aidan Mountford)
-
Most configuration options now settable via DSN (Hiroshi)
-
Multibyte, performance fixes (Hiroshi)
-
Allow driver to be used with iODBC or unixODBC (Peter E)
-
MD5 password encryption support (Bruce)
-
Add more compatibility functions to odbc.sql (Peter E)
E.230.3.19. ECPG
-
EXECUTE ... INTO implemented (Christof Petig)
-
Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig)
-
Fix for GRANT parameters (Lee Kindness)
-
Fix INITIALLY DEFERRED bug
-
Various bug fixes (Michael, Christof Petig)
-
Auto allocation for indicator variable arrays (int *ind_p=NULL)
-
Auto allocation for string arrays (char **foo_pp=NULL)
-
ECPGfree_auto_mem fixed
-
All function names with external linkage are now prefixed by ECPG
-
Fixes for arrays of structures (Michael)
E.230.3.20. Misc. Interfaces
-
Python fix fetchone() (Gerhard Haring)
-
Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Max)
-
Add Tcl COPY TO/FROM (ljb)
-
Prevent output of default index op class in pg_dump (Tom)
-
Fix libpgeasy memory leak (Bruce)
E.230.3.21. Build and Install
-
Configure, dynamic loader, and shared library fixes (Peter E)
-
Fixes in QNX 4 port (Bernd Tegge)
-
Fixes in Cygwin and Windows ports (Jason Tishler, Gerhard Haring, Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov)
-
Fix for Windows socket communication failures (Magnus, Mikhail Terekhov)
-
Hurd compile fix (Oliver Elphick)
-
BeOS fixes (Cyril Velter)
-
Remove configure --enable-unicode-conversion, now enabled by multibyte (Tatsuo)
-
AIX fixes (Tatsuo, Andreas)
-
Fix parallel make (Peter E)
-
Install SQL language manual pages into OS-specific directories (Peter E)
-
Rename config.h to pg_config.h (Peter E)
-
Reorganize installation layout of header files (Peter E)
E.230.3.22. Source Code
-
Remove SEP_CHAR (Bruce)
-
New GUC hooks (Tom)
-
Merge GUC and command line handling (Marko Kreen)
-
Remove EXTEND INDEX (Martijn van Oosterhout, Tom)
-
New pgjindent utility to indent java code (Bruce)
-
Remove define of true/false when compiling under C++ (Leandro Fanzone, Tom)
-
pgindent fixes (Bruce, Tom)
-
Replace strcasecmp() with strcmp() where appropriate (Peter E)
-
Dynahash portability improvements (Tom)
-
Add 'volatile' usage in spinlock structures
-
Improve signal handling logic (Tom)
E.230.3.23. Contrib
-
New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev)
-
New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev)
-
Add contrib/dblink for remote database access (Joe Conway)
-
contrib/ora2pg Oracle conversion utility (Gilles Darold)
-
contrib/xml XML conversion utility (John Gray)
-
contrib/fulltextindex fixes (Christopher Kings-Lynne)
-
New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merged (Joe Conway)
-
Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartunov)
-
New pg_upgrade utility (Bruce)
-
Add new pg_resetxlog options (Bruce, Tom)