| PostgreSQL 9.4.1 Documentation | |||
|---|---|---|---|
| Prev | Up | Appendix E. Release Notes | Next | 
E.240. Release 7.2
Release Date: 2002-02-04
E.240.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.240.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.240.3. Changes
E.240.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.240.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.240.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.240.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.240.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.240.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.240.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.240.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.240.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.240.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.240.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.240.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.240.3.13. PL/Tcl
- Now reports errorInfo (Vsevolod Lobko) 
- Add spi_lastoid function (bob@redivi.com) 
E.240.3.14. PL/Python
- ...is new (Andrew Bosma) 
E.240.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.240.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.240.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.240.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.240.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.240.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.240.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.240.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.240.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)