Commit 320a1387 authored by Bruce Momjian's avatar Bruce Momjian

Update HISTORY to match release.sgml.

parent f6554609
...@@ -7,72 +7,101 @@ ...@@ -7,72 +7,101 @@
Major changes in this release: Major changes in this release:
* IN/NOT IN subqueries are now much more efficient IN/NOT IN subqueries are now much more efficient
In previous releases, IN/NOT IN subqueries were joined to the In previous releases, IN/NOT IN subqueries were joined to the
upper query by sequentially scanning the subquery looking for a upper query by sequentially scanning the subquery looking for a
join. The 7.4 code uses the same sophisticated techniques used by match. The 7.4 code uses the same sophisticated techniques used
ordinary joins and so is much faster, and is now faster than by ordinary joins and so is much faster. An IN will now usually
EXISTS subqueries. be as fast as or faster than an equivalent EXISTS subquery;
* Improved GROUP BY processing by using hash buckets this reverses the conventional wisdom that applied to previous
In previous releases, GROUP BY totals were accumulated by releases.
sequentially scanning the list of groups looking for a match; the
7.4 code places GROUP BY values in hash buckets so the proper Improved GROUP BY processing by using hash buckets
match can be found much quicker. This is particularly significant In previous releases, rows to be grouped had to be sorted
in speeding up queries that have a large number of distinct GROUP first. The 7.4 code can do GROUP BY without sorting, by
BY values. accumulating results into a hash table with one entry per
* New multi-key hash join capability group. It will still use the sort technique, however, if the
In previous releases, hash joins could only occur on single-column hash table is estimated to be too large to fit in sort_mem.
joins. This release allows multi-column hash joins.
* ANSI joins are now better optimized New multikey hash join capability
Prior releases evaluated ANSI join syntax only in the order In previous releases, hash joins could only occur on single
specified by the query; 7.4 allows full optimization of queries keys. This release allows multicolumn hash joins.
using ANSI join syntax, meaning the optimizer considers all
possible join orderings and chooses the most efficient. Queries using the explicit JOIN syntax are now better optimized
* Faster and more powerful regular expression code Prior releases evaluated queries using the explicit JOIN syntax
The entire regular expression module has been replaced with a new only in the order implied by the syntax. 7.4 allows full
version by Henry Spencer, originally written for TCL. The code optimization of these queries, meaning the optimizer considers
greatly improves performance and supports several flavors of all possible join orderings and chooses the most efficient.
regular expressions. Outer joins, however, must still follow the declared ordering.
* Function-inlining for simple SQL functions
Simple SQL functions can now be inlined by including their SQL in Faster and more powerful regular expression code
the main query. This improves performance by preventing repeated The entire regular expression module has been replaced with a
calls to the SQL function --- this allows simple SQL functions to new version by Henry Spencer, originally written for Tcl. The
behave like macros. code greatly improves performance and supports several flavors
* Full support for IPv6 connections and IPv6 address data types of regular expressions.
Prior releases allowed only IPv6 connections and IP data types
only supported IPv4 addresses. This release adds full IPv6 support Function-inlining for simple SQL functions
in both of these areas. Simple SQL functions can now be inlined by including their SQL
* Major improvements in SSL performance and reliability in the main query. This improves performance by eliminating
Several people very familiar with the SSL API have overhauled our per-call overhead. That means, simple SQL functions now behave
SSL code to improve SSL key negotiation and error recovery. like macros.
* Allow free space map to efficiently reuse empty index pages, and
other free space management improvements. Full support for IPv6 connections and IPv6 address data types
In prior releases, index pages that were left empty because of Previous releases allowed only IPv4 connections, and the IP
deleted rows could only be reused by rows with index values data types only supported IPv4 addresses. This release adds
similar to the original rows indexed on that page. In 7.4, VACUUM full IPv6 support in both of these areas.
records empty index pages and allows them to be used for any
future index rows. Major improvements in SSL performance and reliability
* Implement information schema Several people very familiar with the SSL API have overhauled
* Support for read-only transactions our SSL code to improve SSL key negotiation and error recovery.
* Make cursors comply more closely with the SQL standard
* New protocol improves connection speed/reliability, and adds error Make free space map to efficiently reuse empty index pages, and other
codes, status information, a binary protocol, error reporting free space management improvements
verbosity, and cleaner startup packets. In previous releases, B-tree index pages that were left empty
* Allow cursors to exist outside transactions, also called holdable because of deleted rows could only be reused by rows with index
cursors values similar to the original rows indexed on that page. In
* libpq and ecpg are now fully thread-safe with 7.4, "VACUUM" records empty index pages and allows them to be
--enable-thread-safety reused for any future index rows.
While prior libpq releases already supported threads, this release
improves thread safety by fixing some non-thread-safe code that SQL-standard information schema
was used in the database connection routines. The information schema provides a standardized and stable way
* New version of full text indexing in /contrib/tsearch2 to access information about the schema objects defined in a
* New autovacuum tool in /contrib database.
This new tool monitors the database statistics tables for
INSERT/UPDATE/DELETE activity and automatically vacuums tables Cursors conform more closely with the SQL standard
when needed. The commands "FETCH" and "MOVE" have been overhauled to conform
* Array handling has been improved and moved into the main server more closely to the SQL standard.
Many array limitations have been removed and they behave more like
fully-supported data types. Cursors can exist outside transactions
These cursors are also called holdable cursors
New client-to-server protocol
The new protocol adds error codes, more status information,
faster startup, better support for binary data transmission,
parameter values separated from SQL commands, prepared
statements available at the protocol level, and cleaner
recovery from "COPY" failures. The older protocol is still
supported by both server and clients.
libpq and ECPG applications are now fully thread-safe
While previous libpq releases already supported threads, this
release improves thread safety by fixing some non-thread-safe
code that was used during database connection startup. The
"configure" option "--enable-thread-safety" must be used to
enable this feature.
New version of full-text indexing
A new full-text indexing suite is available in
"contrib/tsearch2".
New autovacuum tool
The new autovacuum tool in "contrib/autovacuum" monitors the
database statistics tables for "INSERT"/"UPDATE"/"DELETE"
activity and automatically vacuums tables when needed.
Array handling has been improved and moved into the server core
Many array limitations have been removed, and arrays behave
more like fully-supported data types.
_________________________________________________________________ _________________________________________________________________
Migration to version 7.4 Migration to version 7.4
...@@ -83,111 +112,121 @@ ...@@ -83,111 +112,121 @@
Observe the following incompatibilities: Observe the following incompatibilities:
* The server-side autocommit setting was removed and reimplemented * The server-side autocommit setting was removed and reimplemented
in client applications and languages. in client applications and languages. Server-side autocommit was
Server-side autocommit was causing too many problems with causing too many problems with languages and applications that
languages and applications that wanted to control their own wanted to control their own autocommit behavior, so autocommit was
autocommit behavior so autocommit was removed from the server and removed from the server and added to individual client APIs as
added to individual client API's as appropriate. appropriate.
* Error message wording has changed substantially in this release, * Error message wording has changed substantially in this release.
and error codes have been added. Significant effort was invested to make the messages more
* ANSI inner joins may behave differently because they are now consistent and user-oriented. If your applications try to detect
better optimized different error conditions by parsing the error message, you are
* A number of server variables have been renamed for clarity, strongly encourage to use the new error code facility.
primarily those related to logging * Inner joins using the explicit JOIN syntax may behave differently
* MOVE/FETCH 0 now does nothing because they are now better optimized.
In prior releases, FETCH 0 would fetch all remaining rows, and * A number of server configuration parameters have been renamed for
MOVE 0 would move to the end of the cursor. clarity, primarily those related to logging.
* MOVE/FETCH now returns the actual number of rows moved/fetched, or * FETCH 0 or MOVE 0 now does nothing. In prior releases, FETCH 0
zero if at the beginning/end of the cursor would fetch all remaining rows, and MOVE 0 would move to the end
Prior releases would return the tuple count passed to the command, of the cursor.
not the actual number of rows FETCHed or MOVEd. * "FETCH" and "MOVE" now return the actual number of rows
* COPY now can process carriage-return and carriage-return/line-feed fetched/moved, or zero if at the beginning/end of the cursor.
end-of-line terminated files. Prior releases would return the row count passed to the command,
* Literal carriage-returns and line-feeds are no longer accepted as not the number of rows actually fetched or moved.
data values; use \r and \n instead. * "COPY" now can process files that use carriage-return or
* Trailing spaces are now trimmed when converting from CHAR(n) to carriage-return/line-feed end-of-line sequences. Literal
VARCHAR(n) / TEXT carriage-returns and line-feeds are no longer accepted in data
* FLOAT(p) now measures 'p' in bits, not digits values; use \r and \n instead.
* Ambiguous date values now must match the ordering specified by * Trailing spaces are now trimmed when converting from type char(n)
DateStyle to varchar(n) or text. This is what most people always expected to
In prior releases, a date of 10/20/03 was interpreted as a date in happen anyway.
October even if the DateStyle specified the day should be first. * The data type float(p) now measures "p" in binary digits, not
In 7.4, DateStyle is honored when converting such values and will decimal digits. The new behavior follows the SQL standard.
throw an error if the date is invalid for the current DateStyle. * Ambiguous date values now must match the ordering specified by the
* The oidrand(), oidsrand(), and userfntest() functions have been datestyle setting. In prior releases, a date specification of
removed. 10/20/03 was interpreted as a date in October even if datestyle
specified that the day should be first. 7.4 will throw an error if
a date specification is invalid for the current setting of
datestyle.
* The functions oidrand, oidsrand, and userfntest have been removed.
These functions were determined to be no longer useful. These functions were determined to be no longer useful.
* 'now' will no longer work as a column default; now() or * String literals specifying time-varying date/time values, such as
CURRENT_TIMESTAMP should be used instead 'now' or 'today' will no longer work as expected in column default
In prior releases, there was special code so the string 'now' was expressions; they now cause the time of the table creation to be
interpreted at "INSERT" time and not at table creation time, but the default, not the time of the insertion. Functions such as
this work around didn't cover all cases. Release 7.4 now requires now(), current_timestamp, or current_date should be used instead.
that defaults be defined properly using the now() or the special In previous releases, there was special code so that strings such
value CURRENT_TIMESTAMP. These will work in all situations. as 'now' were interpreted at "INSERT" time and not at table
* 'today' will no longer work as a column default; CURRENT_DATE creation time, but this work around didn't cover all cases.
should be used instead Release 7.4 now requires that defaults be defined properly using
Same description as above. functions such as now() or current_timestamp. These will work in
* Dollar sign ($) is no longer allowed in operator names all situations.
* Dollar sign ($) can be a non-first character in identifiers * The dollar sign ($) is no longer allowed in operator names. It can
This was done to improve compatibility with other database instead be a non-first character in identifiers. This was done to
systems. improve compatibility with other database systems, and to avoid
_________________________________________________________________ syntax problems when parameter placeholders ($n) are written
adjacent to operators.
Server Operation Changes _________________________________________________________________
Changes
Below you will find a detailed account of the changes between release
7.4 and the previous major release.
_________________________________________________________________
Server Operation Changes
* Allow IPv6 server connections (Nigel Kukard, Johan Jordaan, Bruce, * Allow IPv6 server connections (Nigel Kukard, Johan Jordaan, Bruce,
Tom, Kurt Roeckx, Andrew Dunstan) Tom, Kurt Roeckx, Andrew Dunstan)
* Fix SSL to handle errors cleanly (Nathan Mueller) * Fix SSL to handle errors cleanly (Nathan Mueller)
In prior releases, certain rare SSL API error reports were not In prior releases, certain SSL API error reports were not handled
handled correctly. This release fixes those problems. gracefully. correctly. This release fixes those problems.
* SSL protocol security and performance improvements (Sean * SSL protocol security and performance improvements (Sean
Chittenden) Chittenden)
SSL key renegotiation was happening too frequently, causing poor SSL key renegotiation was happening too frequently, causing poor
SSL performance. Also, initial key handling was improved. SSL performance. Also, initial key handling was improved.
* Print lock information when a deadlock is detected (Tom) * Print lock information when a deadlock is detected (Tom)
This allows easier debugging of deadlock situations. This allows easier debugging of deadlock situations.
* Update "/tmp" socket mod. times regularly to avoid their removal * Update "/tmp" socket modification times regularly to avoid their
(Tom) removal (Tom)
This should help prevent "/tmp" directory cleaner administration This should help prevent "/tmp" directory cleaner administration
scripts from removing server socket files. scripts from removing server socket files.
* Enable PAM for MAC OS X (Aaron Hillegass) * Enable PAM for Mac OS X (Aaron Hillegass)
* Make btree indexes fully WAL-safe (Tom) * Make B-tree indexes fully WAL-safe (Tom)
In prior releases, under certain rare cases, a server crash could In prior releases, under certain rare cases, a server crash could
cause btree indexes to become corrupt. This release removes those cause B-tree indexes to become corrupt. This release removes those
last few rare cases. last few rare cases.
* Allow btree index compaction and empty page reuse (Tom) * Allow B-tree index compaction and empty page reuse (Tom)
* Fix inconsistent index lookups during split of first root page * Fix inconsistent index lookups during split of first root page
(Tom) (Tom)
In prior releases, when a single-page index split into two page, In prior releases, when a single-page index split into two pages,
there was a brief period when another database session would miss there was a brief period when another database session could miss
seeing an index entry. This failure was possible primarly on seeing an index entry. This release fixes that rare failure case.
multi-cpu machines. This release fixes that rare failure case.
* Improve free space map allocation logic (Tom) * Improve free space map allocation logic (Tom)
* Preserve free space information between postmaster restarts (Tom) * Preserve free space information between server restarts (Tom)
In prior releases, the free space map was not saved when the In prior releases, the free space map was not saved when the
postmaster was stopped, so newly started servers has no free space postmaster was stopped, so newly started servers had no free space
information. This release saves the free space map, which is information. This release saves the free space map, and reloads it
loaded when the server is restarted. when the server is restarted.
* Set proper schema permissions in initdb (Peter)
* Add start time to pg_stat_activity (Neil) * Add start time to pg_stat_activity (Neil)
* New code to detect corrupt disk pages; erase with * New code to detect corrupt disk pages; erase with
zero_damaged_pages (Tom) zero_damaged_pages (Tom)
* New client/server protocol: faster, no username length limit, * New client/server protocol: faster, no username length limit,
allow clean exit from COPY (Tom) allow clean exit from "COPY" (Tom)
* Add transaction status, tableid, columnid to backend protocol * Add transaction status, table ID, column ID to client/server
(Tom) protocol (Tom)
* Add new binary I/O protocol (Tom) * Add binary I/O to client/server protocol (Tom)
* Remove autocommit server setting; move to client applications * Remove autocommit server setting; move to client applications
(Tom) (Tom)
* New error message wording, error codes, and three levels of error * New error message wording, error codes, and three levels of error
detail (Tom) detail (Tom, Joe, Peter)
_________________________________________________________________ _________________________________________________________________
Performance Changes Performance Improvements
* Add hashing for GROUP BY aggregates (Tom) * Add hashing for GROUP BY aggregates (Tom)
* Allow nested loops to be smarter about multicolumn indexes (Tom) * Make nested-loop joins be smarter about multicolumn indexes (Tom)
* Allow multi-key hash joins (Tom) * Allow multikey hash joins (Tom)
* Improve constant folding (Tom) * Improve constant folding (Tom)
* Add ability to inline simple SQL functions (Tom) * Add ability to inline simple SQL functions (Tom)
* Reduce memory usage for queries using complex functions (Tom) * Reduce memory usage for queries using complex functions (Tom)
...@@ -201,27 +240,32 @@ ...@@ -201,27 +240,32 @@
* Allow IN/NOT IN to be handled via hash tables (Tom) * Allow IN/NOT IN to be handled via hash tables (Tom)
* Improve NOT IN (subquery) performance (Tom) * Improve NOT IN (subquery) performance (Tom)
* Allow most IN subqueries to be processed as joins (Tom) * Allow most IN subqueries to be processed as joins (Tom)
* Pattern matching operations can use indexes regardless of locale
(Peter)
There is no way for non-ASCII locales to use the standard indexes
for LIKE comparisons. This release adds a way to create a special
index for LIKE.
* Allow the postmaster to preload libraries using preload_libraries * Allow the postmaster to preload libraries using preload_libraries
(Joe) (Joe)
For shared libraries that require a long time to load, this option For shared libraries that require a long time to load, this option
is available so the library can be pre-loaded in the postmaster is available so the library can be preloaded in the postmaster and
and inherited by all database sessions. inherited by all database sessions.
* Improve optimizer cost computations, particularly for subqueries * Improve optimizer cost computations, particularly for subqueries
(Tom) (Tom)
* Avoid sort when subquery ORDER BY matches upper query (Tom) * Avoid sort when subquery ORDER BY matches upper query (Tom)
* Assume WHERE a.x = b.y and b.y = 42 also means a.x = 42 (Tom) * Deduce that WHERE a.x = b.y AND b.y = 42 also means a.x = 42 (Tom)
* Allow hash/merge joins on complex joins (Tom) * Allow hash/merge joins on complex joins (Tom)
* Allow hash joins for more data types (Tom) * Allow hash joins for more data types (Tom)
* Allow join optimization of ANSI inner joins, disable with * Allow join optimization of explicit inner joins, disable with
join_collapse_limit (Tom) join_collapse_limit (Tom)
* Add from_collapse_limit to control conversion of subqueries to * Add parameter from_collapse_limit to control conversion of
joins (Tom) subqueries to joins (Tom)
* Use faster and more powerful regular expression code from TCL * Use faster and more powerful regular expression code from Tcl
(Henry Spencer, Tom) (Henry Spencer, Tom)
* Use bit-mapped relation sets in the optimizer (Tom) * Use bit-mapped relation sets in the optimizer (Tom)
* Improve backend startup time (Tom) * Improve connection startup time (Tom)
The new network protocol requires fewer network packets to start a The new client/server protocol requires fewer network packets to
database session. start a database session.
* Improve trigger/constraint performance (Stephan) * Improve trigger/constraint performance (Stephan)
* Improve speed of col IN (const, const, const, ...) (Tom) * Improve speed of col IN (const, const, const, ...) (Tom)
* Fix hash indexes which were broken in rare cases (Tom) * Fix hash indexes which were broken in rare cases (Tom)
...@@ -229,23 +273,22 @@ ...@@ -229,23 +273,22 @@
Prior releases suffered from poor hash index performance, Prior releases suffered from poor hash index performance,
particularly for high concurrency situations. This release fixes particularly for high concurrency situations. This release fixes
that, and the development group is interested in reports comparing that, and the development group is interested in reports comparing
btree and hash index performance. B-tree and hash index performance.
* Align shared buffers on 32-byte boundary for copy speed * Align shared buffers on 32-byte boundary for copy speed
improvement (Manfred Spraul) improvement (Manfred Spraul)
Certain CPU's perform faster data copies when addresses are 32-bit Certain CPU's perform faster data copies when addresses are
aligned. 32-byte aligned.
* The NUMERIC datatype has been reimplemented for better performance * Data type numeric reimplemented for better performance (Tom)
(Tom) numeric used to be stored in base 100. The new code uses base
NUMERIC used to be stored in base-100. The new code uses 10000, for significantly better performance.
base-10000, for significantly better performance.
_________________________________________________________________ _________________________________________________________________
Server Configuration Changes Server Configuration Changes
* Rename server parameter server_min_messages to log_min_messages * Rename server parameter server_min_messages to log_min_messages
(Bruce) (Bruce)
This was done so most parameters that control the server logs This was done so most parameters that control the server logs
being with log_. begin with log_.
* Rename show_*_stats to log_*_stats (Bruce) * Rename show_*_stats to log_*_stats (Bruce)
* Rename show_source_port to log_source_port (Bruce) * Rename show_source_port to log_source_port (Bruce)
* Rename hostname_lookup to log_hostname (Bruce) * Rename hostname_lookup to log_hostname (Bruce)
...@@ -256,372 +299,370 @@ ...@@ -256,372 +299,370 @@
* New read-only server parameters for localization (Tom) * New read-only server parameters for localization (Tom)
* Change debug server log messages to output as DEBUG rather than * Change debug server log messages to output as DEBUG rather than
LOG (Bruce) LOG (Bruce)
* Prevent server log variables from being turned off by non-super * Prevent server log variables from being turned off by
users (Bruce) non-superusers (Bruce)
This is a security feature so non-super-users can't disable This is a security feature so non-superusers cannot disable
logging that was enabled by the administrator. logging that was enabled by the administrator.
* log_min_messages/client_min_messages now controls debug_* output * log_min_messages/client_min_messages now controls debug_* output
(Bruce) (Bruce)
This centralizes client debug information so all debug output can This centralizes client debug information so all debug output can
be sent to either the client or server logs. be sent to either the client or server logs.
* Add OS X Rendezvous server support (Chris Campbell) * Add Mac OS X Rendezvous server support (Chris Campbell)
This allows OS X machines to query the network for available This allows Mac OS X hosts to query the network for available
PostgreSQL servers. PostgreSQL servers.
* Add ability to print only slow statements using * Add ability to print only slow statements using
log_min_duration_statement (Christopher) log_min_duration_statement (Christopher)
This is an often requested debugging feature that allows This is an often requested debugging feature that allows
administrators to see only slow queries in their server logs. administrators to see only slow queries in their server logs.
* Allow pg_hba.conf to accept netmasks in CIDR format (Andrew * Allow "pg_hba.conf" to accept netmasks in CIDR format (Andrew
Dunstan) Dunstan)
This allows administrators to merge the host IP address and This allows administrators to merge the host IP address and
netmask fields into a single CIDR field in pg_hba.conf. netmask fields into a single CIDR field in "pg_hba.conf".
* New is_superuser read-only variable (Tom) * New read-only parameter is_superuser (Tom)
* New server-side parameter log_error_verbosity to control error * New parameter log_error_verbosity to control error detail (Tom)
detail (Tom)
This works with the new error reporting feature to supply This works with the new error reporting feature to supply
additional error information like hints, file names and line additional error information like hints, file names and line
numbers. numbers.
* postgres --describe-config now dumps server config variables * postgres --describe-config now dumps server config variables
(Aizaz Ahmed, Peter) (Aizaz Ahmed, Peter)
This option is useful for administration tools that need to know This option is useful for administration tools that need to know
the configuration variable names and their minimum, maximums, the configuration variable names and their minimums, maximums,
defaults, and descriptions. defaults, and descriptions.
* Add new columns in pg_settings: context, type, source, min_val,
max_val (Joe)
* Make default shared_buffers 1000 and max_connections 100, if * Make default shared_buffers 1000 and max_connections 100, if
possible (Tom) possible (Tom)
Prior versions defaulted to 64 shared buffers so PostgreSQL would Prior versions defaulted to 64 shared buffers so PostgreSQL would
start on even old computers. This release tests the amount of start on even very old systems. This release tests the amount of
shared memory supported by the hardware and sizes it accordingly. shared memory allowed by the platform and selects more reasonable
Of course, users are still encouraged to evaluate their resource default values if possible. Of course, users are still encouraged
load and size shared_buffers accordingly. to evaluate their resource load and size shared_buffers
* Add new columns in pg_settings: context, type, source, min_val, accordingly.
max_val (Joe) * New "pg_hba.conf" record type hostnossl to prevent SSL connections
* New pg_hba.conf 'hostnossl' to prevent SSL connections (Jon (Jon Jensen)
Jensen)
In prior releases, there was no way to prevent SSL connections if In prior releases, there was no way to prevent SSL connections if
both the client and server supported SSL. This option allows that both the client and server supported SSL. This option allows that
capability. capability.
* Remove geqo_random_seed server parameter (Tom) * Remove parameter geqo_random_seed (Tom)
* Add server parameter regex_flavor to control regular expression
processing (Tom)
* Make "pg_ctl" better handle nonstandard ports (Greg)
_________________________________________________________________ _________________________________________________________________
Query Changes Query Changes
* New SQL-standard information schema (Peter) * New SQL-standard information schema (Peter)
bjm
* Add read-only transactions (Peter) * Add read-only transactions (Peter)
* Add server variable regex_flavor to control regular expression
processing (Tom)
* Print key name and value in foreign-key violation messages (Dmitry * Print key name and value in foreign-key violation messages (Dmitry
Tkach) Tkach)
* Allow users to see their own queries in pg_stat_activity (Kevin * Allow users to see their own queries in pg_stat_activity (Kevin
Brown) Brown)
In prior releases, only the super-user could see query strings In prior releases, only the superuser could see query strings
using pg_stat_activity. Now ordinary users can see their own query using pg_stat_activity. Now ordinary users can see their own query
strings. strings.
* Fix subquery aggregates of upper query columns to match SQL spec. * Fix aggregates in subqueries to match SQL standard (Tom)
(Tom) The SQL standard says that an aggregate function appearing within
bjm a nested subquery belongs to the outer query if its argument
contains only outer-query variables. Prior PostgreSQL releases did
not handle this fine point correctly.
* Add option to prevent auto-addition of tables referenced in query * Add option to prevent auto-addition of tables referenced in query
(Nigel J. Andrews) (Nigel J. Andrews)
By default, tables mentioned in the query are automatically added By default, tables mentioned in the query are automatically added
to the FROM clause if they are not already there. This option to the FROM clause if they are not already there. This is
disabled that behavior. compatible with historic POSTGRES behavior but is contrary to the
SQL standard. This option allows selecting standard-compatible
behavior.
* Allow UPDATE ... SET col = DEFAULT (Rod) * Allow UPDATE ... SET col = DEFAULT (Rod)
This allows UPDATE to set a column to its default value. This allows "UPDATE" to set a column to its declared default
value.
* Allow expressions to be used in LIMIT/OFFSET (Tom) * Allow expressions to be used in LIMIT/OFFSET (Tom)
In prior releases, LIMIT/OFFSET could only use constants, not In prior releases, LIMIT/OFFSET could only use constants, not
expressions. expressions.
* Change EXECUTE INTO to CREATE TABLE AS EXECUTE (Peter) * Implement CREATE TABLE AS EXECUTE (Neil, Peter)
bjm ?
_________________________________________________________________ _________________________________________________________________
Object Manipulation Changes Object Manipulation Changes
* Make CREATE SEQUENCE grammar more SQL1999 standards compliant * Make "CREATE SEQUENCE" grammar more conforming to SQL 2003 (Neil)
(Neil) * Add statement-level triggers (Neil)
bjm ?
* Add FOR EACH STATEMENT statement-level triggers (Neil)
While this allows a trigger to fire at the end of a statement, it While this allows a trigger to fire at the end of a statement, it
does not allow the trigger to access all rows modified by the does not allow the trigger to access all rows modified by the
query. This capability is planned for a future release. statement. This capability is planned for a future release.
* Add DOMAIN CHECK constraints (Rod) * Add check constraints for domains (Rod)
This greatly increases the usefulness of domains by allowing them This greatly increases the usefulness of domains by allowing them
to use CHECK constraints. to use check constraints.
* Add ALTER DOMAIN .. SET / DROP NOT NULL, SET / DROP DEFAULT, ADD / * Add "ALTER DOMAIN" (Rod)
DROP CONSTRAINT (Rod)
This allows manipulation of existing domains. This allows manipulation of existing domains.
* Fix several zero-column table bugs (Tom) * Fix several zero-column table bugs (Tom)
PostgreSQL supports zero-column tables. This fixes various bugs PostgreSQL supports zero-column tables. This fixes various bugs
that occur when using such tables. that occur when using such tables.
* Have ALTER TABLE ... ADD PRIMARY KEY add NOT NULL constraint (Rod) * Have ALTER TABLE ... ADD PRIMARY KEY add not-null constraint (Rod)
In prior releases, ALTER TABLE ADD PRIMARY would add a unique In prior releases, ALTER TABLE ... ADD PRIMARY would add a unique
index, but not a NOT NULL constraint. That is fixed in this index, but not a not-null constraint. That is fixed in this
release. release.
* Add ALTER DOMAIN OWNER (Rod)
* Add ALTER TABLE ... WITHOUT OIDS (Rod) * Add ALTER TABLE ... WITHOUT OIDS (Rod)
This allows control over whether new and updated rows will have an This allows control over whether new and updated rows will have an
oid column. This is most useful for saving storage space. OID column. This is most useful for saving storage space.
* Add ALTER SEQUENCE to modify min/max/increment/cache/cycle values * Add ALTER SEQUENCE to modify minimum, maximum, increment, cache,
(Rod) cycle values (Rod)
* Add ALTER TABLE ... CLUSTER ON (Alvaro Herrera) * Add ALTER TABLE ... CLUSTER ON (Alvaro Herrera)
This command is used by pg_dump to record the CLUSTER column for This command is used by "pg_dump" to record the cluster column for
each table previously clustered. This information is used by each table previously clustered. This information is used by
database-wide cluster to cluster all previously clustered tables. database-wide cluster to cluster all previously clustered tables.
* Improve DOMAIN automatic type casting (Rod, Tom) * Improve automatic type casting for domains (Rod, Tom)
* Allow dollar signs in identifiers, except as first character (Tom) * Allow dollar signs in identifiers, except as first character (Tom)
* Disallow dollar signs in operator names, so x=$1 works (Tom) * Disallow dollar signs in operator names, so x=$1 works (Tom)
* Allow SQL200X inheritance syntax LIKE *subtable*, INCLUDING * Allow copying table schema using LIKE subtable, also SQL 2003
DEFAULTS (Rod) feature INCLUDING DEFAULTS (Rod)
* Add WITH GRANT OPTION clause to GRANT, per SQL spec (Peter) * Add WITH GRANT OPTION clause to "GRANT" (Peter)
Allow GRANT to give other users the ability to grant permissions This enabled "GRANT" to give other users the ability to grant
on a object. privileges on a object.
_________________________________________________________________ _________________________________________________________________
Utility Command Changes Utility Command Changes
* Add ON COMMIT clause to CREATE TABLE for temp tables (Gavin) * Add ON COMMIT clause to "CREATE TABLE" for temporary tables
(Gavin)
This adds the ability for a table to be dropped or all rows This adds the ability for a table to be dropped or all rows
deleted on transaction commit. deleted on transaction commit.
* Allow cursors outside transactions using WITH HOLD (Neil) * Allow cursors outside transactions using WITH HOLD (Neil)
In previous releases, cursors were removed at the end of the In previous releases, cursors were removed at the end of the
transaction. Using WITH HOLD, the current release allows transaction. Using WITH HOLD, the current release allows cursors
transaction to remain outside their own transaction. to remain readable after the creating transaction.
* MOVE/FETCH 0 now does nothing (Bruce) * FETCH 0 and MOVE 0 now do nothing (Bruce)
In previous releases, MOVE 0 moved to the end of the cursor, and In previous releases, FETCH 0 fetched all remaining rows, and MOVE
FETCH 0 fetched all remaning rows. 0 moved to the end of the cursor.
* Cause MOVE/FETCH to return the number of rows moved/fetched, or * Cause "FETCH" and "MOVE" to return the number of rows
zero if at the beginning/end of cursor, per SQL spec (Bruce) fetched/moved, or zero if at the beginning/end of cursor, per SQL
In prior releases, the row count returned by MOVE and FETCH did standard (Bruce)
not accurately reflect the number of rows processed. In prior releases, the row count returned by "FETCH" and "MOVE"
did not accurately reflect the number of rows processed.
* Properly handle SCROLL with cursors, or report an error (Neil) * Properly handle SCROLL with cursors, or report an error (Neil)
Certain cursors can not be fetched backwards optimally. By Certain cursors can not be fetched backwards optimally. By
specifying SCROLL, extra work will be performed to guarantee that specifying SCROLL, extra work will be performed to guarantee that
the cursor can be fetched in reverse or random order. the cursor can be fetched in reverse or random order.
* Implement SQL92-compatible FIRST, LAST, ABSOLUTE n, RELATIVE n * Implement SQL-compatible option FIRST, LAST, ABSOLUTE n, RELATIVE
options for FETCH and MOVE (Tom) n for "FETCH" and "MOVE" (Tom)
* Allow EXPLAIN on DECLARE CURSOR (Tom) * Allow "EXPLAIN" on "DECLARE CURSOR" (Tom)
Prior versions would not allow EXPLAIN on a DECLARE statement. * Allow "CLUSTER" to use index marked as pre-clustered by default
* Allow CLUSTER to use index marked as pre-clustered by default
(Alvaro Herrera) (Alvaro Herrera)
* Allow CLUSTER to cluster all tables (Alvaro Herrera) * Allow "CLUSTER" to cluster all tables (Alvaro Herrera)
This allows all previously clustered tables in a database to be This allows all previously clustered tables in a database to be
reclustered with a single command. reclustered with a single command.
* Prevent CLUSTER on partial indexes (Tom) * Prevent "CLUSTER" on partial indexes (Tom)
* Allow \r and \r\n termination for COPY files (Bruce) * Allow DOS and Mac line-endings in "COPY" files (Bruce)
* Disallow literal carriage return as a data value, * Disallow literal carriage return as a data value,
backslash-carriage-return and \r are still allowed (Bruce) backslash-carriage-return and \r are still allowed (Bruce)
* COPY changes (binary, \.)? (Tom) * "COPY" changes (binary, \.) (Tom)
* Recover from COPY IN/OUT failure cleanly (Tom) * Recover from "COPY" failure cleanly (Tom)
* Prevent possible memory leaks in COPY (Tom) * Prevent possible memory leaks in "COPY" (Tom)
* Make TRUNCATE transaction-safe (Rod) * Make "TRUNCATE" transaction-safe (Rod)
Truncate can now be used inside a transaction, and rolled back if "TRUNCATE" can now be used inside a transaction, and rolled back
the transaction aborts. if the transaction aborts.
* Multiple pggla_dump fixes, including tar format and large objects * Allow prepare/bind of utility commands like "FETCH" and "EXPLAIN"
* Allow pg_dump to dump specific schemas (Neil)
* Allow pg_dump to preserve column storage characteristics
(Christopher)
This preserves ALTER TABLE ... SET STORAGE information.
* Allow pg_dump to preserve CLUSTER characteristics (Christopher)
* Have pg_dumpall use GRANT/REVOKE to dump database-level
permissions (Tom)
* Allow pg_dumpall to support the -a, -s, -x options of pg_dump
(Tom)
* Prevent pg_dump from lowercasing identifiers specified on the
command line (Tom)
* Allow PREPARE/bind of utility commands like FETCH and EXPLAIN
(Tom)
* Add EXPLAIN EXECUTE (Neil)
* Allow pg_get_constraintdef() to support UNIQUE, PRIMARY KEY and
CHECK constraints (Christopher)
* Improve VACUUM performance on indexes by reducing WAL traffic
(Tom) (Tom)
* Allow pg_ctl to better handle non-standard ports (Greg) * Add "EXPLAIN EXECUTE" (Neil)
* Functional indexes have been generalized into expressional indexes * Improve "VACUUM" performance on indexes by reducing WAL traffic
(Tom) (Tom)
In prior releases, only columns could be used in functional * Functional indexes have been generalized into indexes on
indexes. This release allows any type of expression. expressions (Tom)
* Syntax errors now reported as 'syntax error' rather than 'parse In prior releases, functional indexes only supported a simple
error' (Tom) function applied to one or more column names. This release allows
* Have SHOW TRANSACTION_ISOLATION match input to SET any type of scalar expression.
TRANSACTION_ISOLATION (Tom) * Have "SHOW TRANSACTION ISOLATION" match input to "SET TRANSACTION
* Have COMMENT ON DATABASE on non-local database generate a warning ISOLATION" (Tom)
* Have "COMMENT ON DATABASE" on nonlocal database generate a warning
(Rod) (Rod)
Database comments are stored in database-local tables so comments Database comments are stored in database-local tables so comments
on a database have to be stored in each database. on a database have to be stored in each database.
* Improve reliability of LISTEN/NOTIFY (Tom) * Improve reliability of "LISTEN"/"NOTIFY" (Tom)
* Allow REINDEX to reliably reindex non-shared system catalog * Allow "REINDEX" to reliably reindex nonshared system catalog
indexes (Tom) indexes (Tom)
This allows system tables to be reindexed without the requirement This allows system tables to be reindexed without the requirement
of a standalone backend, which was necessary in previous releases. of a standalone session, which was necessary in previous releases.
The only tables that now require a standalone backend for reindex The only tables that now require a standalone session for
are the global system tables pg_database, pg_shadow, and pg_group. reindexing are the global system tables pg_database, pg_shadow,
* pg_dump --use-set-session-authorization and --no-reconnect now do and pg_group.
nothing, all dumps use SET SESSION AUTHORIZATION
pg_dump now no longer reconnects to switch users, but instead uses
SET SESSION AUTHORIZATION. This should reduce password prompting
during restores.
* Long options for pg_dump are now available on all platforms
We now include our own long option processing routines.
_________________________________________________________________ _________________________________________________________________
Data Type and Function Changes Data Type and Function Changes
* New extra_float_digits server parameter to control float precision * New server parameter extra_float_digits to control precision
display (Pedro Ferreira, Tom) display of floating-point numbers (Pedro Ferreira, Tom)
This controls precision output which was causing regression This controls output precision which was causing regression
testing problems. testing problems.
* Allow +1300 as a numeric timezone specifier, for FJST (Tom) * Allow +1300 as a numeric time-zone specifier, for FJST (Tom)
* Remove rarely used oidrand(), oidsrand(), and userfntest() * Remove rarely used functions oidrand, oidsrand, and userfntest
functions (Neil) functions (Neil)
* Add md5() function to main server, already in /contrib/pgcrypto * Add md5() function to main server, already in "contrib/pgcrypto"
(Joe) (Joe)
An md5 function was frequently requested. For more complex An MD5 function was frequently requested. For more complex
encryption capabilities, use /contrib/pgcrypto. encryption capabilities, use "contrib/pgcrypto".
* Increase date range of timestamp (John Cochran) * Increase date range of timestamp (John Cochran)
bjm ??
* Change EXTRACT(EPOCH FROM timestamp) so timestamp without time * Change EXTRACT(EPOCH FROM timestamp) so timestamp without time
zone is assumed to be in local time, not GMT (Tom) zone is assumed to be in local time, not GMT (Tom)
* Trap division by zero in case the operating system doesn't prevent * Trap division by zero in case the operating system doesn't prevent
it (Tom) it (Tom)
* Change the NUMERIC data type internally to base 10000 (Tom) * Change the numeric data type internally to base 10000 (Tom)
* New hostmask() function (Greg Wickham) * New hostmask() function (Greg Wickham)
* Fixes for to_char() (Karel) * Fixes for to_char() and to_timestamp() (Karel)
* Allow functions that can take any argument data type and return * Allow functions that can take any argument data type and return
any data type, using ANYELEMENT and ANYARRAY (Joe) any data type, using anyelement and anyarray (Joe)
This allows the creation of functions that can work with any data This allows the creation of functions that can work with any data
type. type.
* Arrays may now be specified as ARRAY[1,2,3], * Arrays may now be specified as ARRAY[1,2,3],
ARRAY[['a','b'],['c','d']], or ARRAY[ARRAY[ARRAY[2]]] (Joe) ARRAY[['a','b'],['c','d']], or ARRAY[ARRAY[ARRAY[2]]] (Joe)
* Allow proper comparisons for arrays (Joe) * Allow proper comparisons for arrays, including ORDER BY and
* Allow array concatenation with '||' (Joe) DISTINCT support (Joe)
* Allow indexes on array columns, and used in ORDER BY and DISTINCT * Allow indexes on array columns (Joe)
(Joe) * Allow array concatenation with || (Joe)
* Allow WHERE qualification 'expr >oper< ANY/SOME/ALL (array-expr)' * Allow WHERE qualification expr op ANY/SOME/ALL (array_expr) (Joe)
(Joe) This allows arrays to behave like a list of values, for purposes
This allows arrays to behave like subqueries or a list of values: like SELECT * FROM tab WHERE col IN (array_val).
SELECT * FROM tab WHERE col IN array_val * New array functions array_append, array_cat, array_lower,
* Allow polymorphic SQL functions (Joe) array_prepend, array_to_string, array_upper, string_to_array (Joe)
bjm ??
* New array functions array_append(), array_cat(), array_lower(),
array_prepend(), array_to_string(), array_upper(),
string_to_array() (Joe)
* Allow user defined aggregates to use polymorphic functions (Joe) * Allow user defined aggregates to use polymorphic functions (Joe)
bjm ??
* Allow polymorphic user defined aggregates (Joe)
* Allow assignments to empty arrays (Joe) * Allow assignments to empty arrays (Joe)
* Allow 60 in seconds fields of timestamp, time, interval input * Allow 60 in seconds fields of time, timestamp, and interval input
values (Tom) values (Tom)
Sixty-second values are needed for leap seconds. Sixty-second values are needed for leap seconds.
* Allow CIDR data type to be cast to text (Tom) * Allow cidr data type to be cast to text (Tom)
* Allow the creation of special LIKE indexes for non-C locales * Disallow invalid time zone names (Tom)
(Peter) * Trim trailing spaces when char is cast to varchar or text (Tom)
There is no way for non-ASCII locales to use indexes for LIKE * Make float(p) measure the precision "p" in binary digits, not
comparisons. However, this release adds a way to create a special decimal digits (Tom)
index for LIKE. bjm ??
* Disallow invalid timezone names (Tom)
* Trim trailing spaces when CHAR() is cast to VARCHAR or TEXT (Tom)
* Make FLOAT(p) measure the precision p in bits, not decimal digits
(Tom)
* Add IPv6 support to the inet and cidr data types (Michael Graff) * Add IPv6 support to the inet and cidr data types (Michael Graff)
* Add family() function to report whether address is IPv4 or IPv6 * Add family() function to report whether address is IPv4 or IPv6
(Michael Graff) (Michael Graff)
* Have SHOW DATESTYLE generate output similar to that used by SET * Have SHOW datestyle generate output similar to that used by SET
DATESTYLE (Tom) datestyle (Tom)
* Make EXTRACT(TIMEZONE) and SET/SHOW TIMEZONE follow the SQL * Make EXTRACT(TIMEZONE) and SET/SHOW TIME ZONE follow the SQL
convention for the sign of timezone offsets, ie, positive is east convention for the sign of time zone offsets, i.e., positive is
from UTC (Tom) east from UTC (Tom)
* Fix date_trunc('quarter',...) (B?jthe Zolt?n) * Fix date_trunc('quarter', ...) (B?jthe Zolt?n)
Prior releases returned an incorrect value for this function call. Prior releases returned an incorrect value for this function call.
* Make initcap() more compatible with Oracle (Mike Nolan) * Make initcap() more compatible with Oracle (Mike Nolan)
bjm ?? initcap() now uppercases a letter appearing after any
* Allow only DateStyle field order for date values not in ISO format non-alphanumeric character, rather than only after whitespace.
(Greg) * Allow only datestyle field order for date values not in ISO-8601
* Add new DateStyle values MDY, DMY, and YMD; honor US and European format (Greg)
for backward compatibility (Tom) * Add new datestyle values MDY, DMY, and YMD to set input field
* 'now' will no longer work as a column default, use now() (change order; honor US and European for backward compatibility (Tom)
required for prepared statements) (Tom) * String literals like 'now' or 'today' will no longer work as a
* Assume NaN value to be larger than any other value in MIN()/MAX() column default. Use functions such as now(), current_timestamp
(Tom) instead. (change required for prepared statements) (Tom)
* Prevent interval from suppressing ':00' seconds display * Treat NaN as larger than any other value in min()/max() (Tom)
* New pg_get_triggerdef(prettyprint) and pg_constraint_is_visible() NaN was already sorted after ordinary numeric values for most
functions purposes, but min() and max() didn't get this right.
* Allow time to be specified as '040506' or '0405' (Tom) * Prevent interval from suppressing :00 seconds display
* New function pg_get_triggerdef(prettyprint) and
pg_constraint_is_visible()
* Allow time to be specified as 040506 or 0405 (Tom)
* Input date order must now be YYYY-MM-DD (with 4-digit year) or
match datestyle
* Make pg_get_constraintdef to support unique, primary-key, and
check constraints (Christopher)
_________________________________________________________________ _________________________________________________________________
Server-side Language Changes Server-Side Language Changes
* Prevent PL/pgSQL crash when RETURN NEXT is used on a zero-row * Prevent PL/pgSQL crash when RETURN NEXT is used on a zero-row
record variable (Tom) record variable (Tom)
* Make PL/python's spi_execute interface handle NULLs properly * Make PL/Python's spi_execute interface handle null values properly
(Andrew Bosma) (Andrew Bosma)
* Allow PL/pgSQL to declare variables of composite types without * Allow PL/pgSQL to declare variables of composite types without
%ROWTYPE (Tom) %ROWTYPE (Tom)
* Fix PL/python _quote() function to handle big integers (?) * Fix PL/Python's _quote() function to handle big integers
* Make PL/python an untrusted language, now called plpythonu (Kevin * Make PL/Python an untrusted language, now called plpythonu (Kevin
Jacobs, Tom) Jacobs, Tom)
The Python language no longer supports a restricted execution The Python language no longer supports a restricted execution
environment, so we removed the trusted version of PL/python. If environment, so the trusted version of PL/Python was removed. If
this situation changes, we will re-add a version of PL/python that this situation changes, a version of PL/python that can be used by
can be used by non-super users. non-superusers will be readded.
* Allow polymorphic PL/pgSQL functions (Tom, Joe) * Allow polymorphic PL/pgSQL functions (Tom, Joe)
* Allow polymorphic SQL functions (Joe)
* Improved compiled function caching mechanism in PL/pgSQL with full * Improved compiled function caching mechanism in PL/pgSQL with full
support for polymorphism (Joe) support for polymorphism (Joe)
* Add new $0 parameter in PL/pgSQL representing the function's * Add new parameter $0 in PL/pgSQL representing the function's
actual return type (Joe) actual return type (Joe)
* Allow pltcl and plpython use the same trigger on multiple tables * Allow PL/Tcl and PL/Python to use the same trigger on multiple
(Tom) tables (Tom)
* Fixed PL/Tcl's spi_prepare to accept full qualified type names in * Fixed PL/Tcl's spi_prepare to accept fully qualified type names in
the parameter type list (Jan) the parameter type list (Jan)
_________________________________________________________________ _________________________________________________________________
Psql Changes psql Changes
* Add "\pset pager always" to always use pager (Greg) * Add \pset pager always to always use pager (Greg)
This forces the pager to be used even if the number of rows is This forces the pager to be used even if the number of rows is
less than the screen height --- this is valuable for rows that less than the screen height. This is valuable for rows that wrap
wrap across several screen rows. across several screen rows.
* Improve tab completion (Rod, Ross Reedstrom, Ian Barwick) * Improve tab completion (Rod, Ross Reedstrom, Ian Barwick)
* Reorder \? help into groupings (Harald Armin Massa, Bruce) * Reorder \? help into groupings (Harald Armin Massa, Bruce)
* Add backslash commands for listing schemas, casts, and conversions * Add backslash commands for listing schemas, casts, and conversions
(Christopher) (Christopher)
* \encoding now changes based on the client_encoding server variable * "\encoding" now changes based on the server parameter
(Tom) client_encoding server (Tom)
In previous versions, \encoding was not aware of encoding changes In previous versions, "\encoding" was not aware of encoding
made using SET CLIENT_ENCODING. changes made using SET client_encoding.
* Save edit history into readline history (Ross) * Save editor buffer into readline history (Ross)
When \e is used to edit a query, the result is saved in the When "\e" is used to edit a query, the result is saved in the
readline history for retrieval using the up arrow. readline history for retrieval using the up arrow.
* Improve \d display (Christopher) * Improve "\d" display (Christopher)
* Enhance HTML mode to be more standards-compliant (Greg) * Enhance HTML mode to be more standards-conforming (Greg)
* New '\set AUTOCOMMIT off' capability (Tom) * New "\set AUTOCOMMIT off" capability (Tom)
This takes the place of the remove server variable 'autocommit'. This takes the place of the removed server parameter autocommit.
* New '\set VERBOSITY' to control error detail (Tom) * New "\set VERBOSITY" to control error detail (Tom)
This controls the new error reporting details. This controls the new error reporting details.
* New %T prompt string to show transaction status (Tom) * New prompt escape sequence %x to show transaction status (Tom)
* Long options for psql are now available on all platforms * Long options for psql are now available on all platforms
_________________________________________________________________ _________________________________________________________________
Libpq Changes pg_dump Changes
* Allow PQcmdTuples() to return row counts for MOVE and FETCH (Neil) * Multiple pg_dump fixes, including tar format and large objects
* Add PQfreemem() for freeing memory on Win32, suggest for NOTIFY * Allow pg_dump to dump specific schemas (Neil)
(Bruce) * Make pg_dump preserve column storage characteristics (Christopher)
Win32 requires that memory allocated in a library be freed by a This preserves ALTER TABLE ... SET STORAGE information.
* Make pg_dump preserve "CLUSTER" characteristics (Christopher)
* Have pg_dumpall use "GRANT"/"REVOKE" to dump database-level
privleges (Tom)
* Allow pg_dumpall to support the options "-a", "-s", "-x" of
pg_dump (Tom)
* Prevent pg_dump from lowercasing identifiers specified on the
command line (Tom)
* pg_dump options "--use-set-session-authorization" and
"--no-reconnect" now do nothing, all dumps use "SET SESSION
AUTHORIZATION"
pg_dump no longer reconnects to switch users, but instead always
uses "SET SESSION AUTHORIZATION". This will reduce password
prompting during restores.
* Long options for pg_dump are now available on all platforms
PostgreSQL now includes its own long-option processing routines.
_________________________________________________________________
libpq Changes
* Add function PQfreemem for freeing memory on Windows, suggested
for "NOTIFY" (Bruce)
Windows requires that memory allocated in a library be freed by a
function in the same library, hence free() doesn't work for function in the same library, hence free() doesn't work for
freeing memory allocated by libpq. PQfreemem() is the proper way freeing memory allocated by libpq. PQfreemem is the proper way to
to free libpq memory, especially on Win32, and is recommended for free libpq memory, especially on Windows, and is recommended for
other platforms as well. other platforms as well.
* Document service capability, and add sample file (Bruce) * Document service capability, and add sample file (Bruce)
This allows clients to look up connection information in a central This allows clients to look up connection information in a central
file on the client machine. file on the client machine.
* Make PQsetdbLogin() have the same defaults as PQconnectdb() (Tom) * Make PQsetdbLogin have the same defaults as PQconnectdb (Tom)
* Allow libpq to cleanly fail when result sets are too large (Tom) * Allow libpq to cleanly fail when result sets are too large (Tom)
* Improve performance of PGunescapeBytea() (Ben Lamb) * Improve performance of function PGunescapeBytea (Ben Lamb)
* Allow thread-safe libpq with --enable-thread-safety (Lee Kindness, * Allow thread-safe libpq with "configure" option
Philip Yarra) "--enable-thread-safety" (Lee Kindness, Philip Yarra)
* Allow pqInternalNotice() to accept a format string and args * Allow function pqInternalNotice to accept a format string and
instead of just a preformatted message (Tom, Sean Chittenden) arguments instead of just a preformatted message (Tom, Sean
* Allow control SSL negotiation with sslmode values "disable", Chittenden)
"allow", "prefer", and "require" (Jon Jensen) * Control SSL negotiation with sslmode values disable, allow,
prefer, and require (Jon Jensen)
* Allow new error codes and levels of text (Tom) * Allow new error codes and levels of text (Tom)
* Allow access to the underlying table and column of a query result * Allow access to the underlying table and column of a query result
(Tom) (Tom)
...@@ -629,42 +670,42 @@ ...@@ -629,42 +670,42 @@
the underlying table and column names associated with a specific the underlying table and column names associated with a specific
result set. result set.
* Allow access to the current transaction status (Tom) * Allow access to the current transaction status (Tom)
* Add ability to pass binary data directly to the backend (Tom) * Add ability to pass binary data directly to the server (Tom)
* Add PQexecPrepared() and PQsendQueryPrepared() functions which * Add function PQexecPrepared and PQsendQueryPrepared functions
perform Bind/Execute of previously prepared statements (Tom) which perform bind/execute of previously prepared statements (Tom)
_________________________________________________________________ _________________________________________________________________
JDBC Changes JDBC Changes
* Allow setNull on updateable resultsets * Allow setNull on updateable result sets
* Allow executeBatch on a prepared statement (Barry) * Allow executeBatch on a prepared statement (Barry)
* Support SSL connections (Barry) * Support SSL connections (Barry)
* Handle schema names in result sets (Paul Sorenson) * Handle schema names in result sets (Paul Sorenson)
* Add refcursor support (Nic Ferrier) * Add refcursor support (Nic Ferrier)
_________________________________________________________________ _________________________________________________________________
Miscellaneous Interface Changes Miscellaneous Interface Changes
* Prevent possible memory leak or core dump during libpgtcl shutdown * Prevent possible memory leak or core dump during libpgtcl shutdown
(Tom) (Tom)
* Add ecpg Informix compatibility (Michael) * Add Informix compatibility to ECPG (Michael)
This allows ecpg to process embedded C programs that were written This allows ECPG to process embedded C programs that were written
using certain Informix extensions. using certain Informix extensions.
* Add ecpg DECIMAL type that is fixed length, for Informix (Michael) * Add type decimal to ECPG that is fixed length, for Informix
* Allow thread-safe ecpg with --enable-thread-safety (Lee Kindness, (Michael)
Bruce) * Allow thread-safe embedded SQL programs with "configure" option
This allows multiple ecpg threads to access the database at the "--enable-thread-safety" (Lee Kindness, Bruce)
same time. This allows multiple threads to access the database at the same
* Move python client interface to http://www.pygresql.org (Marc) time.
* Moved Python client PyGreSQL to http://www.pygresql.org (Marc)
_________________________________________________________________ _________________________________________________________________
Source Code Changes Source Code Changes
* Prevent need for separate platform geometry regression result * Prevent need for separate platform geometry regression result
files (Tom) files (Tom)
* Improved PPC locking primitive (Reinhard Max) * Improved PPC locking primitive (Reinhard Max)
* Embed LD_LIBRARY_PATH used for build process into binaries (Billy) * New function palloc0 to allocate and clear memory (Bruce)
* New palloc0 function to allocate and clear memory (Bruce)
* Fix locking code for s390x CPU (64-bit) (Tom) * Fix locking code for s390x CPU (64-bit) (Tom)
* Allow OpenBSD to use local ident credentials (William Ahern) * Allow OpenBSD to use local ident credentials (William Ahern)
* Make query plan trees read-only to executor (Tom) * Make query plan trees read-only to executor (Tom)
...@@ -676,56 +717,47 @@ ...@@ -676,56 +717,47 @@
* Bison >= 1.85 is now required to build the PostgreSQL grammar, if * Bison >= 1.85 is now required to build the PostgreSQL grammar, if
building from CVS building from CVS
* Merge documentation into one book (Peter) * Merge documentation into one book (Peter)
* Add Win32 compatibility functions (Bruce) * Add Windows compatibility functions (Bruce)
* Allow client interfaces to compile under MinGW/Win32 (Bruce) * Allow client interfaces to compile under MinGW (Bruce)
* New ereport() function for error reporting (Tom) * New ereport() function for error reporting (Tom)
* Support Intel Linux compiler (Peter) * Support Intel compiler on Linux (Peter)
* Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil) * Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil)
* Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce) * Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce)
* Remove --enable-recode option to configure * Remove "--enable-recode" option from "configure"
This was no longer needed now that we have CREATE CONVERSION. This was no longer needed now that we have "CREATE CONVERSION".
* Generate a compile error if spinlock code is not found (Bruce) * Generate a compile error if spinlock code is not found (Bruce)
Platforms without spinlock code will now fail to compile, rather Platforms without spinlock code will now fail to compile, rather
than silently using semaphores. This failure can be disabled with than silently using semaphores. This failure can be disabled with
a new configure option. a new "configure" option.
_________________________________________________________________ _________________________________________________________________
Contrib Changes Contrib Changes
* Change dbmirror license to BSD * Change dbmirror license to BSD
* Improve earthdistance (Bruno Wolff III) * Improve earthdistance (Bruno Wolff III)
* Portability improvements to pgcrypto (Marko Kreen) * Portability improvements to pgcrypto (Marko Kreen)
* Prevent xml crash (John Gray, Michael Richards) * Prevent crash in xml (John Gray, Michael Richards)
* Update oracle * Update oracle
* Update mysql * Update mysql
* Update cube (Bruno Wolff III) * Update cube (Bruno Wolff III)
* Update earthdistance to use cube (Bruno Wolff III) * Update earthdistance to use cube (Bruno Wolff III)
* Update btree_gist (Oleg) * Update btree_gist (Oleg)
* New tsearch2 full-text search module (Oleg, Teodor) * New tsearch2 full-text search module (Oleg, Teodor)
* Add hashed based crosstab function to tablefuncs (Joe) * Add hash-based crosstab function to tablefuncs (Joe)
* Add serial column to order connectby() siblings in tablefuncs * Add serial column to order connectby() siblings in tablefuncs
(Nabil Sayegh,Joe) (Nabil Sayegh,Joe)
* Add named persistent connections to dblink (Shridhar Daithanka) * Add named persistent connections to dblink (Shridhar Daithanka)
* New pg_autovacuum allows automatic VACUUM (Matthew T. O'Connor) * New pg_autovacuum allows automatic "VACUUM" (Matthew T. O'Connor)
* Allow pgbench to honor PGHOST, PGPORT, PGUSER env. variables * Make pgbench honor environment variables PGHOST, PGPORT, PGUSER
(Tatsuo) (Tatsuo)
* Improve intarray (Teodor Sigaev) * Improve intarray (Teodor Sigaev)
* Improve pgstattuple (Rod) * Improve pgstattuple (Rod)
* Fix bug in metaphone() in fuzzystrmatch * Fix bug in metaphone() in fuzzystrmatch
* Improve adddepend (Rod) * Improve adddepend (Rod)
* Update spi/timetravel (B?jthe Zolt?n) * Update spi/timetravel (B?jthe Zolt?n)
* Fix dbase -s option and improve non-ASCII handling (Thomas * Fix dbase "-s" option and improve non-ASCII handling (Thomas
Behr,M?rcio Smiderle) Behr,M?rcio Smiderle)
* Remove array module because features now included by default (Joe) * Remove array module because features now included by default (Joe)
_________________________________________________________________
Other Uncategorized Changes
* "DATESTYLE" can now be set to DMY, YMD, or MDY to specify input
field order
* Input date order must now be YYYY-MM-DD (with 4-digit year) or
match DATESTYLE
* Pattern matching operations can use indexes regardless of locale?
_________________________________________________________________ _________________________________________________________________
Release 7.3.4 Release 7.3.4
...@@ -797,7 +829,7 @@ ...@@ -797,7 +829,7 @@
* HAVE_INT64_TIMESTAMP code for time with timezone overwrote its * HAVE_INT64_TIMESTAMP code for time with timezone overwrote its
input input
* Accept "GLOBAL TEMP/TEMPORARY" as a synonym for "TEMPORARY" * Accept "GLOBAL TEMP/TEMPORARY" as a synonym for "TEMPORARY"
* Avoid improper schema-permissions-check failure in foreign-key * Avoid improper schema-privilege-check failure in foreign-key
triggers triggers
* Fix bugs in foreign-key triggers for "SET DEFAULT" action * Fix bugs in foreign-key triggers for "SET DEFAULT" action
* Fix incorrect time-qual check in row fetch for "UPDATE" and * Fix incorrect time-qual check in row fetch for "UPDATE" and
...@@ -848,7 +880,7 @@ ...@@ -848,7 +880,7 @@
Async_NotifyHandler runs Async_NotifyHandler runs
* Fix SPI for case where rule contains multiple statements of the * Fix SPI for case where rule contains multiple statements of the
same type same type
* Fix problem with checking for wrong type of access permission in * Fix problem with checking for wrong type of access privilege in
rule query rule query
* Fix problem with "EXCEPT" in "CREATE RULE" * Fix problem with "EXCEPT" in "CREATE RULE"
* Prevent problem with dropping temp tables having serial columns * Prevent problem with dropping temp tables having serial columns
...@@ -985,7 +1017,7 @@ ...@@ -985,7 +1017,7 @@
Schemas allow users to create objects in separate namespaces, Schemas allow users to create objects in separate namespaces,
so two people or applications can have tables with the same so two people or applications can have tables with the same
name. There is also a public schema for shared tables. name. There is also a public schema for shared tables.
Table/index creation can be restricted by removing permissions Table/index creation can be restricted by removing privileges
on the public schema. on the public schema.
Drop Column Drop Column
...@@ -1112,7 +1144,7 @@ Privileges ...@@ -1112,7 +1144,7 @@ Privileges
* Add privileges on functions and procedural languages (Peter) * Add privileges on functions and procedural languages (Peter)
* Add OWNER to CREATE DATABASE so superusers can create databases on * Add OWNER to CREATE DATABASE so superusers can create databases on
behalf of unprivileged users (Gavin Sherry, Tom) behalf of unprivileged users (Gavin Sherry, Tom)
* Add new object permission bits EXECUTE and USAGE (Tom) * Add new object privilege bits EXECUTE and USAGE (Tom)
* Add SET SESSION AUTHORIZATION DEFAULT and RESET SESSION * Add SET SESSION AUTHORIZATION DEFAULT and RESET SESSION
AUTHORIZATION (Tom) AUTHORIZATION (Tom)
* Allow functions to be executed with the privilege of the function * Allow functions to be executed with the privilege of the function
...@@ -1157,7 +1189,7 @@ Queries ...@@ -1157,7 +1189,7 @@ Queries
(Bruce) (Bruce)
* Increase identifier length to 63 (Neil, Bruce) * Increase identifier length to 63 (Neil, Bruce)
* UNION fixes for merging >= 3 columns of different lengths (Tom) * UNION fixes for merging >= 3 columns of different lengths (Tom)
* Add DEFAULT keyword to INSERT, e.g., INSERT ... (..., DEFAULT, * Add DEFAULT key word to INSERT, e.g., INSERT ... (..., DEFAULT,
...) (Rod) ...) (Rod)
* Allow views to have default values using ALTER COLUMN ... SET * Allow views to have default values using ALTER COLUMN ... SET
DEFAULT (Neil) DEFAULT (Neil)
...@@ -1386,7 +1418,7 @@ libpq ...@@ -1386,7 +1418,7 @@ libpq
* Fix for libpq using timers on Win9X (David Ford) * Fix for libpq using timers on Win9X (David Ford)
* Allow libpq notify to handle servers with different-length * Allow libpq notify to handle servers with different-length
identifiers (Tom) identifiers (Tom)
* Add libpq PQescapeString() and PQescapeBytea() to Win32 (Bruce) * Add libpq PQescapeString() and PQescapeBytea() to Windows (Bruce)
* Fix for SSL with non-blocking connections (Jack Bates) * Fix for SSL with non-blocking connections (Jack Bates)
* Add libpq connection timeout parameter (Denis A Ustimenko) * Add libpq connection timeout parameter (Denis A Ustimenko)
_________________________________________________________________ _________________________________________________________________
...@@ -1445,7 +1477,7 @@ Source Code ...@@ -1445,7 +1477,7 @@ Source Code
* Always enable locale in compile, remove --enable-locale option * Always enable locale in compile, remove --enable-locale option
(Peter) (Peter)
* Fix for Win9x DLL creation (Magnus Naeslund) * Fix for Win9x DLL creation (Magnus Naeslund)
* Fix for link() usage by WAL code on Win32, BeOS (Jason Tishler) * Fix for link() usage by WAL code on Windows, BeOS (Jason Tishler)
* Add sys/types.h to c.h, remove from main files (Peter, Bruce) * Add sys/types.h to c.h, remove from main files (Peter, Bruce)
* Fix AIX hang on SMP machines (Tomoyuki Niijima) * Fix AIX hang on SMP machines (Tomoyuki Niijima)
* AIX SMP hang fix (Tomoyuki Niijima) * AIX SMP hang fix (Tomoyuki Niijima)
...@@ -1472,7 +1504,7 @@ Source Code ...@@ -1472,7 +1504,7 @@ Source Code
* New Polish FAQ (Marcin Mazurek) * New Polish FAQ (Marcin Mazurek)
* Add Posix semaphore support (Tom) * Add Posix semaphore support (Tom)
* Document need for reindex (Bruce) * Document need for reindex (Bruce)
* Rename some internal identifiers to simplify Win32 compile (Jan, * Rename some internal identifiers to simplify Windows compile (Jan,
Katherine Ward) Katherine Ward)
* Add documentation on computing disk space (Bruce) * Add documentation on computing disk space (Bruce)
* Remove KSQO from GUC (Bruce) * Remove KSQO from GUC (Bruce)
...@@ -1755,7 +1787,7 @@ Performance ...@@ -1755,7 +1787,7 @@ Performance
Privileges Privileges
* Change UPDATE, DELETE permissions to be distinct (Peter E) * Change UPDATE, DELETE privileges to be distinct (Peter E)
* New REFERENCES, TRIGGER privileges (Peter E) * New REFERENCES, TRIGGER privileges (Peter E)
* Allow GRANT/REVOKE to/from more than one user at a time (Peter E) * Allow GRANT/REVOKE to/from more than one user at a time (Peter E)
* New has_table_privilege() function (Joe Conway) * New has_table_privilege() function (Joe Conway)
...@@ -1849,7 +1881,7 @@ Utility Commands ...@@ -1849,7 +1881,7 @@ Utility Commands
* COPY DELIMITERS string must be exactly one character (Tom) * COPY DELIMITERS string must be exactly one character (Tom)
* VACUUM warning about index tuples fewer than heap now only appears * VACUUM warning about index tuples fewer than heap now only appears
when appropriate (Martijn van Oosterhout) when appropriate (Martijn van Oosterhout)
* Fix permission checks for CREATE INDEX (Tom) * Fix privilege checks for CREATE INDEX (Tom)
* Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom) * Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom)
_________________________________________________________________ _________________________________________________________________
...@@ -2058,9 +2090,9 @@ Build and Install ...@@ -2058,9 +2090,9 @@ Build and Install
* Configure, dynamic loader, and shared library fixes (Peter E) * Configure, dynamic loader, and shared library fixes (Peter E)
* Fixes in QNX 4 port (Bernd Tegge) * Fixes in QNX 4 port (Bernd Tegge)
* Fixes in Cygwin and Win32 ports (Jason Tishler, Gerhard Haring, * Fixes in Cygwin and Windows ports (Jason Tishler, Gerhard Haring,
Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov) Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov)
* Fix for Win32 socket communication failures (Magnus, Mikhail * Fix for Windows socket communication failures (Magnus, Mikhail
Terekhov) Terekhov)
* Hurd compile fix (Oliver Elphick) * Hurd compile fix (Oliver Elphick)
* BeOS fixes (Cyril Velter) * BeOS fixes (Cyril Velter)
...@@ -2147,7 +2179,7 @@ Cygwin build (Jason Tishler) ...@@ -2147,7 +2179,7 @@ Cygwin build (Jason Tishler)
Fix PL/pgSQL SELECTs when returning no rows Fix PL/pgSQL SELECTs when returning no rows
Fix for psql backslash core dump Fix for psql backslash core dump
Referential integrity permission fix Referential integrity privilege fix
Optimizer fixes Optimizer fixes
pg_dump cleanups pg_dump cleanups
...@@ -2176,7 +2208,7 @@ AIX, MSWIN, VAX, N32K fixes (Tom) ...@@ -2176,7 +2208,7 @@ AIX, MSWIN, VAX, N32K fixes (Tom)
Multibytes fixes (Tom) Multibytes fixes (Tom)
Unicode fixes (Tatsuo) Unicode fixes (Tatsuo)
Optimizer improvements (Tom) Optimizer improvements (Tom)
Fix for whole tuples in functions (Tom) Fix for whole rows in functions (Tom)
Fix for pg_ctl and option strings with spaces (Peter E) Fix for pg_ctl and option strings with spaces (Peter E)
ODBC fixes (Hiroshi) ODBC fixes (Hiroshi)
EXTRACT can now take string argument (Thomas) EXTRACT can now take string argument (Thomas)
...@@ -2269,7 +2301,7 @@ Modify pg_dump to better handle user-defined items in template1 (Philip) ...@@ -2269,7 +2301,7 @@ Modify pg_dump to better handle user-defined items in template1 (Philip)
Allow LIMIT in VIEW (Tom) Allow LIMIT in VIEW (Tom)
Require cursor FETCH to honor LIMIT (Tom) Require cursor FETCH to honor LIMIT (Tom)
Allow PRIMARY/FOREIGN Key definitions on inherited columns (Stephan) Allow PRIMARY/FOREIGN Key definitions on inherited columns (Stephan)
Allow ORDER BY, LIMIT in sub-selects (Tom) Allow ORDER BY, LIMIT in subqueries (Tom)
Allow UNION in CREATE RULE (Tom) Allow UNION in CREATE RULE (Tom)
Make ALTER/DROP TABLE rollback-able (Vadim, Tom) Make ALTER/DROP TABLE rollback-able (Vadim, Tom)
Store initdb collation in pg_control so collation cannot be changed (Tom) Store initdb collation in pg_control so collation cannot be changed (Tom)
...@@ -2302,7 +2334,7 @@ Improved handling of file descriptor cache (Tom) ...@@ -2302,7 +2334,7 @@ Improved handling of file descriptor cache (Tom)
New warning code about auto-created table alias entries (Bruce) New warning code about auto-created table alias entries (Bruce)
Overhaul initdb process (Tom, Peter E) Overhaul initdb process (Tom, Peter E)
Overhaul of inherited tables; inherited tables now accessed by default; Overhaul of inherited tables; inherited tables now accessed by default;
new ONLY keyword prevents it (Chris Bitmead, Tom) new ONLY key word prevents it (Chris Bitmead, Tom)
ODBC cleanups/improvements (Nick Gorham, Stephan Szabo, Zoltan Kovacs, ODBC cleanups/improvements (Nick Gorham, Stephan Szabo, Zoltan Kovacs,
Michael Fork) Michael Fork)
Allow renaming of temp tables (Tom) Allow renaming of temp tables (Tom)
...@@ -2310,7 +2342,7 @@ Overhaul memory manager contexts (Tom) ...@@ -2310,7 +2342,7 @@ Overhaul memory manager contexts (Tom)
pg_dumpall uses CREATE USER or CREATE GROUP rather using COPY (Peter E) pg_dumpall uses CREATE USER or CREATE GROUP rather using COPY (Peter E)
Overhaul pg_dump (Philip Warner) Overhaul pg_dump (Philip Warner)
Allow pg_hba.conf secondary password file to specify only username (Peter E) Allow pg_hba.conf secondary password file to specify only username (Peter E)
Allow TEMPORARY or TEMP keyword when creating temporary tables (Bruce) Allow TEMPORARY or TEMP key word when creating temporary tables (Bruce)
New memory leak checker (Karel) New memory leak checker (Karel)
New SET SESSION CHARACTERISTICS (Thomas) New SET SESSION CHARACTERISTICS (Thomas)
Allow nested block comments (Thomas) Allow nested block comments (Thomas)
...@@ -2467,8 +2499,8 @@ Fix for mergejoin plans (Tom) ...@@ -2467,8 +2499,8 @@ Fix for mergejoin plans (Tom)
Fix TRUNCATE failure on relations with indexes (Tom) Fix TRUNCATE failure on relations with indexes (Tom)
Avoid database-wide restart on write error (Hiroshi) Avoid database-wide restart on write error (Hiroshi)
Fix nodeMaterial to honor chgParam by recomputing its output (Tom) Fix nodeMaterial to honor chgParam by recomputing its output (Tom)
Fix VACUUM problem with moving chain of update tuples when source and Fix VACUUM problem with moving chain of update row versions when source
destination of a tuple lie on the same page (Tom) and destination of a row version lie on the same page (Tom)
Fix user.c CommandCounterIncrement (Tom) Fix user.c CommandCounterIncrement (Tom)
Fix for AM/PM boundary problem in to_char() (Karel Zak) Fix for AM/PM boundary problem in to_char() (Karel Zak)
Fix TIME aggregate handling (Tom) Fix TIME aggregate handling (Tom)
...@@ -2654,12 +2686,12 @@ Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom) ...@@ -2654,12 +2686,12 @@ Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom)
Y2K timestamp fix (Massimo) Y2K timestamp fix (Massimo)
Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom) Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom)
Fix for views with tables/columns containing spaces (Tom) Fix for views with tables/columns containing spaces (Tom)
Prevent permissions on indexes (Peter E) Prevent privileges on indexes (Peter E)
Fix for spinlock stuck problem when error is generated (Hiroshi) Fix for spinlock stuck problem when error is generated (Hiroshi)
Fix ipcclean on Linux Fix ipcclean on Linux
Fix handling of NULL constraint conditions (Tom) Fix handling of NULL constraint conditions (Tom)
Fix memory leak in odbc driver (Nick Gorham) Fix memory leak in odbc driver (Nick Gorham)
Fix for permission check on UNION tables (Tom) Fix for privilege check on UNION tables (Tom)
Fix to allow SELECT 'a' LIKE 'a' (Tom) Fix to allow SELECT 'a' LIKE 'a' (Tom)
Fix for SELECT 1 + NULL (Tom) Fix for SELECT 1 + NULL (Tom)
Fixes to CHAR Fixes to CHAR
...@@ -2718,7 +2750,7 @@ Change backend-side COPY to write files with permissions 644 not 666 (Tom) ...@@ -2718,7 +2750,7 @@ Change backend-side COPY to write files with permissions 644 not 666 (Tom)
Force permissions on PGDATA directory to be secure, even if it exists (Tom) Force permissions on PGDATA directory to be secure, even if it exists (Tom)
Added psql LASTOID variable to return last inserted oid (Peter E) Added psql LASTOID variable to return last inserted oid (Peter E)
Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom) Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom)
Add permissions check for vacuum (Peter E) Add privilege check for vacuum (Peter E)
New libpq functions to allow asynchronous connections: PQconnectStart(), New libpq functions to allow asynchronous connections: PQconnectStart(),
PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(), PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(),
PQsetenvPoll(), PQsetenvAbort (Ewan Mellor) PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
...@@ -2773,7 +2805,7 @@ Add btree indexing of boolean values, >= and <= (Don Baccus) ...@@ -2773,7 +2805,7 @@ Add btree indexing of boolean values, >= and <= (Don Baccus)
Print current line number when COPY FROM fails (Massimo) Print current line number when COPY FROM fails (Massimo)
Recognize POSIX time zone e.g. "PST+8" and "GMT-8" (Thomas) Recognize POSIX time zone e.g. "PST+8" and "GMT-8" (Thomas)
Add DEC as synonym for DECIMAL (Thomas) Add DEC as synonym for DECIMAL (Thomas)
Add SESSION_USER as SQL92 keyword, same as CURRENT_USER (Thomas) Add SESSION_USER as SQL92 key word, same as CURRENT_USER (Thomas)
Implement SQL92 column aliases (aka correlation names) (Thomas) Implement SQL92 column aliases (aka correlation names) (Thomas)
Implement SQL92 join syntax (Thomas) Implement SQL92 join syntax (Thomas)
Make INTERVAL reserved word allowed as a column identifier (Thomas) Make INTERVAL reserved word allowed as a column identifier (Thomas)
...@@ -2902,7 +2934,7 @@ Clean up #include in /include directory (Bruce) ...@@ -2902,7 +2934,7 @@ Clean up #include in /include directory (Bruce)
Add scripts for checking includes (Bruce) Add scripts for checking includes (Bruce)
Remove un-needed #include's from *.c files (Bruce) Remove un-needed #include's from *.c files (Bruce)
Change #include's to use <> and "" as appropriate (Bruce) Change #include's to use <> and "" as appropriate (Bruce)
Enable WIN32 compilation of libpq Enable Windows compilation of libpq
Alpha spinlock fix from Uncle George <gatgul@voicenet.com> Alpha spinlock fix from Uncle George <gatgul@voicenet.com>
Overhaul of optimizer data structures (Tom) Overhaul of optimizer data structures (Tom)
Fix to cygipc library (Yutaka Tanida) Fix to cygipc library (Yutaka Tanida)
...@@ -2915,7 +2947,7 @@ New platform-specific regression handling (Tom) ...@@ -2915,7 +2947,7 @@ New platform-specific regression handling (Tom)
Rename oid8 -> oidvector and int28 -> int2vector (Bruce) Rename oid8 -> oidvector and int28 -> int2vector (Bruce)
Included all yacc and lex files into the distribution (Peter E.) Included all yacc and lex files into the distribution (Peter E.)
Remove lextest, no longer needed (Peter E) Remove lextest, no longer needed (Peter E)
Fix for libpq and psql on Win32 (Magnus) Fix for libpq and psql on Windows (Magnus)
Internally change datetime and timespan into timestamp and interval (Thomas) Internally change datetime and timespan into timestamp and interval (Thomas)
Fix for plpgsql on BSD/OS Fix for plpgsql on BSD/OS
Add SQL_ASCII test case to the regression test (Tatsuo) Add SQL_ASCII test case to the regression test (Tatsuo)
...@@ -2969,7 +3001,7 @@ Fixes for CASE in WHERE join clauses(Tom) ...@@ -2969,7 +3001,7 @@ Fixes for CASE in WHERE join clauses(Tom)
Fix BTScan abort(Tom) Fix BTScan abort(Tom)
Repair the check for redundant UNIQUE and PRIMARY KEY indexes(Thomas) Repair the check for redundant UNIQUE and PRIMARY KEY indexes(Thomas)
Improve it so that it checks for multicolumn constraints(Thomas) Improve it so that it checks for multicolumn constraints(Thomas)
Fix for Win32 making problem with MB enabled(Hiroki Kataoka) Fix for Windows making problem with MB enabled(Hiroki Kataoka)
Allow BSD yacc and bison to compile pl code(Bruce) Allow BSD yacc and bison to compile pl code(Bruce)
Fix SET NAMES working Fix SET NAMES working
int8 fixes(Thomas) int8 fixes(Thomas)
...@@ -3017,7 +3049,7 @@ ACL file descriptor leak fix(Atsushi Ogawa) ...@@ -3017,7 +3049,7 @@ ACL file descriptor leak fix(Atsushi Ogawa)
New expresssion subtree code(Tom) New expresssion subtree code(Tom)
Avoid disk writes for read-only transactions(Vadim) Avoid disk writes for read-only transactions(Vadim)
Fix for removal of temp tables if last transaction was aborted(Bruce) Fix for removal of temp tables if last transaction was aborted(Bruce)
Fix to prevent too large tuple from being created(Bruce) Fix to prevent too large row from being created(Bruce)
plpgsql fixes plpgsql fixes
Allow port numbers 32k - 64k(Bruce) Allow port numbers 32k - 64k(Bruce)
Add ^ precidence(Bruce) Add ^ precidence(Bruce)
...@@ -3187,7 +3219,7 @@ Allow sequence nextval actions to be case-sensitive(Bruce) ...@@ -3187,7 +3219,7 @@ Allow sequence nextval actions to be case-sensitive(Bruce)
Fix optimizer indexing not working for negative numbers(Bruce) Fix optimizer indexing not working for negative numbers(Bruce)
Fix for memory leak in executor with fjIsNull Fix for memory leak in executor with fjIsNull
Fix for aggregate memory leaks(Erik Riedel) Fix for aggregate memory leaks(Erik Riedel)
Allow username containing a dash GRANT permissions Allow user name containing a dash to grant privileges
Cleanup of NULL in inet types Cleanup of NULL in inet types
Clean up system table bugs(Tom) Clean up system table bugs(Tom)
Fix problems of PAGER and \? command(Masaaki Sakaida) Fix problems of PAGER and \? command(Masaaki Sakaida)
...@@ -3205,7 +3237,7 @@ Fix for memory leak in failed queries(Tom) ...@@ -3205,7 +3237,7 @@ Fix for memory leak in failed queries(Tom)
DEFAULT now supports mixed-case identifiers(Tom) DEFAULT now supports mixed-case identifiers(Tom)
Fix for multisegment uses of DROP/RENAME table, indexes(Ole Gjerde) Fix for multisegment uses of DROP/RENAME table, indexes(Ole Gjerde)
Disable use of pg_dump with both -o and -d options(Bruce) Disable use of pg_dump with both -o and -d options(Bruce)
Allow pg_dump to properly dump GROUP permissions(Bruce) Allow pg_dump to properly dump group privileges(Bruce)
Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan) Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan)
Fix for computations in views(Jan) Fix for computations in views(Jan)
Fix for aggregates on array indexes(Tom) Fix for aggregates on array indexes(Tom)
...@@ -3303,13 +3335,13 @@ Source Tree Changes ...@@ -3303,13 +3335,13 @@ Source Tree Changes
------------------- -------------------
Improve port matching(Tom) Improve port matching(Tom)
Portability fixes for SunOS Portability fixes for SunOS
Add NT/Win32 backend port and enable dynamic loading(Magnus and Daniel Horak) Add Windows NT backend port and enable dynamic loading(Magnus and Daniel Horak)
New port to Cobalt Qube(Mips) running Linux(Tatsuo) New port to Cobalt Qube(Mips) running Linux(Tatsuo)
Port to NetBSD/m68k(Mr. Mutsuki Nakajima) Port to NetBSD/m68k(Mr. Mutsuki Nakajima)
Port to NetBSD/sun3(Mr. Mutsuki Nakajima) Port to NetBSD/sun3(Mr. Mutsuki Nakajima)
Port to NetBSD/macppc(Toshimi Aoki) Port to NetBSD/macppc(Toshimi Aoki)
Fix for tcl/tk configuration(Vince) Fix for tcl/tk configuration(Vince)
Removed CURRENT keyword for rule queries(Jan) Removed CURRENT key word for rule queries(Jan)
NT dynamic loading now works(Daniel Horak) NT dynamic loading now works(Daniel Horak)
Add ARM32 support(Andrew McMurry) Add ARM32 support(Andrew McMurry)
Better support for HP-UX 11 and UnixWare Better support for HP-UX 11 and UnixWare
...@@ -3379,7 +3411,7 @@ Timezone fixes(Tom) ...@@ -3379,7 +3411,7 @@ Timezone fixes(Tom)
HP-UX fixes(Tom) HP-UX fixes(Tom)
Use implicit type coercion for matching DEFAULT values(Thomas) Use implicit type coercion for matching DEFAULT values(Thomas)
Add routines to help with single-byte (internal) character type(Thomas) Add routines to help with single-byte (internal) character type(Thomas)
Compilation of libpq for Win32 fixes(Magnus) Compilation of libpq for Windows fixes(Magnus)
Upgrade to PyGreSQL 2.2(D'Arcy) Upgrade to PyGreSQL 2.2(D'Arcy)
_________________________________________________________________ _________________________________________________________________
...@@ -3507,8 +3539,8 @@ Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb) ...@@ -3507,8 +3539,8 @@ Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb)
New contrib/lo code for large object orphan removal(Peter) New contrib/lo code for large object orphan removal(Peter)
New psql command "SET CLIENT_ENCODING TO 'encoding'" for multibytes New psql command "SET CLIENT_ENCODING TO 'encoding'" for multibytes
feature, see /doc/README.mb(Tatsuo) feature, see /doc/README.mb(Tatsuo)
/contrib/noupdate code to revoke update permission on a column contrib/noupdate code to revoke update permission on a column
libpq can now be compiled on win32(Magnus) libpq can now be compiled on Windows(Magnus)
Add PQsetdbLogin() in libpq Add PQsetdbLogin() in libpq
New 8-byte integer type, checked by configure for OS support(Thomas) New 8-byte integer type, checked by configure for OS support(Thomas)
Better support for quoted table/column names(Thomas) Better support for quoted table/column names(Thomas)
...@@ -3552,7 +3584,7 @@ re ...@@ -3552,7 +3584,7 @@ re
* Insert/update/delete rules on views work * Insert/update/delete rules on views work
* Multiple rule actions are now supported, surrounded by parentheses * Multiple rule actions are now supported, surrounded by parentheses
* Regular users can create views/rules on tables they have RULE permits * Regular users can create views/rules on tables they have RULE permits
* Rules and views inherit the permissions on the creator * Rules and views inherit the privileges of the creator
* No rules at the column level * No rules at the column level
* No UPDATE NEW/OLD rules * No UPDATE NEW/OLD rules
* New pg_tables, pg_indexes, pg_rules and pg_views system views * New pg_tables, pg_indexes, pg_rules and pg_views system views
...@@ -3572,7 +3604,7 @@ New setval() command to set sequence value(Massimo) ...@@ -3572,7 +3604,7 @@ New setval() command to set sequence value(Massimo)
Auto-remove unix socket file on start-up if no postmaster running(Massimo) Auto-remove unix socket file on start-up if no postmaster running(Massimo)
Conditional trace package(Massimo) Conditional trace package(Massimo)
New UNLISTEN command(Massimo) New UNLISTEN command(Massimo)
psql and libpq now compile under win32 using win32.mak(Magnus) psql and libpq now compile under Windows using win32.mak(Magnus)
Lo_read no longer stores trailing NULL(Bruce) Lo_read no longer stores trailing NULL(Bruce)
Identifiers are now truncated to 31 characters internally(Bruce) Identifiers are now truncated to 31 characters internally(Bruce)
Createuser options now availble on the command line Createuser options now availble on the command line
...@@ -3585,7 +3617,7 @@ New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas) ...@@ -3585,7 +3617,7 @@ New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas)
New DECLARE and FETCH feature(Thomas) New DECLARE and FETCH feature(Thomas)
libpq's internal structures now not exported(Tom) libpq's internal structures now not exported(Tom)
Allow up to 8 key indexes(Bruce) Allow up to 8 key indexes(Bruce)
Remove ARCHIVE keyword, that is no longer used(Thomas) Remove ARCHIVE key word, that is no longer used(Thomas)
pg_dump -n flag to supress quotes around indentifiers pg_dump -n flag to supress quotes around indentifiers
disable system columns for views(Jan) disable system columns for views(Jan)
new INET and CIDR types for network addresses(TomH, Paul) new INET and CIDR types for network addresses(TomH, Paul)
...@@ -3715,7 +3747,7 @@ Fix for "Datasize = 0" error(Vadim) ...@@ -3715,7 +3747,7 @@ Fix for "Datasize = 0" error(Vadim)
Prevent \do from wrapping(Bruce) Prevent \do from wrapping(Bruce)
Remove duplicate Russian character set entries Remove duplicate Russian character set entries
Sunos4 cleanup Sunos4 cleanup
Allow optional TABLE keyword in LOCK and SELECT INTO(Thomas) Allow optional TABLE key word in LOCK and SELECT INTO(Thomas)
CREATE SEQUENCE options to allow a negative integer(Thomas) CREATE SEQUENCE options to allow a negative integer(Thomas)
Add "PASSWORD" as an allowed column identifier(Thomas) Add "PASSWORD" as an allowed column identifier(Thomas)
Add checks for UNION target fields(Bruce) Add checks for UNION target fields(Bruce)
...@@ -3739,8 +3771,8 @@ Better identify tcl and tk libs and includes(Bruce) ...@@ -3739,8 +3771,8 @@ Better identify tcl and tk libs and includes(Bruce)
and date style. and date style.
* Socket interface for client/server connection. This is the default * Socket interface for client/server connection. This is the default
now so you may need to start postmaster with the "-i" flag. now so you may need to start postmaster with the "-i" flag.
* Better password authorization mechanisms. Default table * Better password authorization mechanisms. Default table privileges
permissions have changed. have changed.
* Old-style time travel has been removed. Performance has been * Old-style time travel has been removed. Performance has been
improved. improved.
...@@ -3781,9 +3813,9 @@ Better identify tcl and tk libs and includes(Bruce) ...@@ -3781,9 +3813,9 @@ Better identify tcl and tk libs and includes(Bruce)
pg_shadow, and is SELECT-able by PUBLIC. You should keep using pg_user pg_shadow, and is SELECT-able by PUBLIC. You should keep using pg_user
in your application without changes. in your application without changes.
User-created tables now no longer have SELECT permission to PUBLIC by User-created tables now no longer have SELECT privilege to PUBLIC by
default. This was done because the ANSI standard requires it. You can default. This was done because the ANSI standard requires it. You can
of course GRANT any permissions you want after the table is created. of course GRANT any privileges you want after the table is created.
System tables continue to be SELECT-able by PUBLIC. System tables continue to be SELECT-able by PUBLIC.
We also have real deadlock detection code. No more sixty-second We also have real deadlock detection code. No more sixty-second
...@@ -3797,7 +3829,7 @@ Better identify tcl and tk libs and includes(Bruce) ...@@ -3797,7 +3829,7 @@ Better identify tcl and tk libs and includes(Bruce)
For performance reasons, time travel is gone, but can be implemented For performance reasons, time travel is gone, but can be implemented
using triggers (see "pgsql/contrib/spi/README"). Please check out the using triggers (see "pgsql/contrib/spi/README"). Please check out the
new \d command for types, operators, etc. Also, views have their own new \d command for types, operators, etc. Also, views have their own
permissions now, not based on the underlying tables, so permissions on privileges now, not based on the underlying tables, so privileges on
them have to be set separately. Check "/pgsql/interfaces" for some new them have to be set separately. Check "/pgsql/interfaces" for some new
ways to talk to PostgreSQL. ways to talk to PostgreSQL.
...@@ -3853,7 +3885,7 @@ Fix for index scans in MergeJion(Vadim) ...@@ -3853,7 +3885,7 @@ Fix for index scans in MergeJion(Vadim)
Enhancements Enhancements
------------ ------------
Subselects with EXISTS, IN, ALL, ANY keywords (Vadim, Bruce, Thomas) Subselects with EXISTS, IN, ALL, ANY key words (Vadim, Bruce, Thomas)
New User Manual(Thomas, others) New User Manual(Thomas, others)
Speedup by inlining some frequently-called functions Speedup by inlining some frequently-called functions
Real deadlock detection, no more timeouts(Bruce) Real deadlock detection, no more timeouts(Bruce)
...@@ -3910,7 +3942,7 @@ Define timespan_finite() and text_timespan() functions(Thomas) ...@@ -3910,7 +3942,7 @@ Define timespan_finite() and text_timespan() functions(Thomas)
Remove archive stuff(Bruce) Remove archive stuff(Bruce)
Allow for a pg_password authentication database that is separate from Allow for a pg_password authentication database that is separate from
the system password file(Todd) the system password file(Todd)
Dump ACLs, GRANT, REVOKE permissions(Matt) Dump ACLs, GRANT, REVOKE privileges(Matt)
Define text, varchar, and bpchar string length functions(Thomas) Define text, varchar, and bpchar string length functions(Thomas)
Fix Query handling for inheritance, and cost computations(Bruce) Fix Query handling for inheritance, and cost computations(Bruce)
Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas) Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas)
...@@ -3940,10 +3972,10 @@ Reduce system column overhead(Vadmin) ...@@ -3940,10 +3972,10 @@ Reduce system column overhead(Vadmin)
Remove pg_time table(Vadim) Remove pg_time table(Vadim)
Add pg_type attribute to identify types that need length (bpchar, varchar) Add pg_type attribute to identify types that need length (bpchar, varchar)
Add report of offending line when COPY command fails Add report of offending line when COPY command fails
Allow VIEW permissions to be set separately from the underlying tables. Allow VIEW privileges to be set separately from the underlying tables.
For security, use GRANT/REVOKE on views as appropriate(Jan) For security, use GRANT/REVOKE on views as appropriate(Jan)
Tables now have no default GRANT SELECT TO PUBLIC. You must Tables now have no default GRANT SELECT TO PUBLIC. You must
explicitly grant such permissions. explicitly grant such privileges.
Clean up tutorial examples(Darren) Clean up tutorial examples(Darren)
Source Tree Changes Source Tree Changes
...@@ -3974,7 +4006,7 @@ Bring in the PostODBC source tree as part of our standard distribution(Marc) ...@@ -3974,7 +4006,7 @@ Bring in the PostODBC source tree as part of our standard distribution(Marc)
A minor patch for HP/UX 10 vs 9(Stan) A minor patch for HP/UX 10 vs 9(Stan)
New pg_attribute.atttypmod for type-specific info like varchar length(Bruce) New pg_attribute.atttypmod for type-specific info like varchar length(Bruce)
UnixWare patches(Billy) UnixWare patches(Billy)
New i386 'lock' for spin lock asm(Billy) New i386 'lock' for spinlock asm(Billy)
Support for multiplexed backends is removed Support for multiplexed backends is removed
Start an OpenBSD port Start an OpenBSD port
Start an AUX port Start an AUX port
...@@ -4071,13 +4103,13 @@ s) ...@@ -4071,13 +4103,13 @@ s)
Catch non-functional delete attempts(Vadim) Catch non-functional delete attempts(Vadim)
Change time function names to be more consistent(Michael Reifenberg) Change time function names to be more consistent(Michael Reifenberg)
Check for zero divides(Michael Reifenberg) Check for zero divides(Michael Reifenberg)
Fix very old bug which made tuples changed/inserted by a commnd Fix very old bug which made rows changed/inserted by a command
visible to the command itself (so we had multiple update of visible to the command itself (so we had multiple update of
updated tuples, etc)(Vadim) updated rows, etc.)(Vadim)
Fix for SELECT null, 'fail' FROM pg_am (Patrick) Fix for SELECT null, 'fail' FROM pg_am (Patrick)
SELECT NULL as EMPTY_FIELD now allowed(Patrick) SELECT NULL as EMPTY_FIELD now allowed(Patrick)
Remove un-needed signal stuff from contrib/pginterface Remove un-needed signal stuff from contrib/pginterface
Fix OR (where x != 1 or x isnull didn't return tuples with x NULL) (Vadim) Fix OR (where x != 1 or x isnull didn't return rows with x NULL) (Vadim)
Fix time_cmp function (Vadim) Fix time_cmp function (Vadim)
Fix handling of functions with non-attribute first argument in Fix handling of functions with non-attribute first argument in
WHERE clauses (Vadim) WHERE clauses (Vadim)
...@@ -4091,7 +4123,7 @@ Default genetic optimizer GEQO parameter is now 8(Bruce) ...@@ -4091,7 +4123,7 @@ Default genetic optimizer GEQO parameter is now 8(Bruce)
Allow use parameters in target list having aggregates in functions(Vadim) Allow use parameters in target list having aggregates in functions(Vadim)
Added JDBC driver as an interface(Adrian & Peter) Added JDBC driver as an interface(Adrian & Peter)
pg_password utility pg_password utility
Return number of tuples inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim) Return number of rows inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim)
Triggers implemented with CREATE TRIGGER (SQL3)(Vadim) Triggers implemented with CREATE TRIGGER (SQL3)(Vadim)
SPI (Server Programming Interface) allows execution of queries inside SPI (Server Programming Interface) allows execution of queries inside
C-functions (Vadim) C-functions (Vadim)
...@@ -4284,7 +4316,7 @@ fix local buffers leak in transaction aborts (Vadim) ...@@ -4284,7 +4316,7 @@ fix local buffers leak in transaction aborts (Vadim)
fix file manager memmory leaks, cleanups (Vadim, Massimo) fix file manager memmory leaks, cleanups (Vadim, Massimo)
fix storage manager memmory leaks (Vadim) fix storage manager memmory leaks (Vadim)
fix btree duplicates handling (Vadim) fix btree duplicates handling (Vadim)
fix deleted tuples re-incarnation caused by vacuum (Vadim) fix deleted rows reincarnation caused by vacuum (Vadim)
fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce) fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce)
many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor) many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor)
...@@ -4344,7 +4376,7 @@ new OS-specific template files(Marc) ...@@ -4344,7 +4376,7 @@ new OS-specific template files(Marc)
no more need to edit Makefile.global(Marc) no more need to edit Makefile.global(Marc)
re-arrange include files(Marc) re-arrange include files(Marc)
nextstep patches (Gregor Hoffleit) nextstep patches (Gregor Hoffleit)
removed WIN32-specific code(Bruce) removed Windows-specific code(Bruce)
removed postmaster -e option, now only postgres -e option (Bruce) removed postmaster -e option, now only postgres -e option (Bruce)
merge duplicate library code in front/backends(Martin) merge duplicate library code in front/backends(Martin)
now works with eBones, international Kerberos(Jun) now works with eBones, international Kerberos(Jun)
...@@ -4390,7 +4422,7 @@ Fix unitialized reads of memory(Kurt) ...@@ -4390,7 +4422,7 @@ Fix unitialized reads of memory(Kurt)
Fixed ALTER TABLE ... char(3) bug(Bruce) Fixed ALTER TABLE ... char(3) bug(Bruce)
Fixed a few small memory leaks Fixed a few small memory leaks
Fixed EXPLAIN handling of options and changed full_path option name Fixed EXPLAIN handling of options and changed full_path option name
Fixed output of group acl permissions Fixed output of group acl privileges
Memory leaks (hunt and destroy with tools like Purify(Kurt) Memory leaks (hunt and destroy with tools like Purify(Kurt)
Minor improvements to rules system Minor improvements to rules system
NOTIFY fixes NOTIFY fixes
...@@ -4684,7 +4716,7 @@ Enhancements: ...@@ -4684,7 +4716,7 @@ Enhancements:
* added PQdisplayTuples() to libpq and changed monitor and psql to use it * added PQdisplayTuples() to libpq and changed monitor and psql to use it
* added NeXT port (requires SysVIPC implementation) * added NeXT port (requires SysVIPC implementation)
* added CAST .. AS ... syntax * added CAST .. AS ... syntax
* added ASC and DESC keywords * added ASC and DESC key words
* added 'internal' as a possible language for CREATE FUNCTION * added 'internal' as a possible language for CREATE FUNCTION
internal functions are C functions which have been statically linked internal functions are C functions which have been statically linked
into the postgres backend. into the postgres backend.
...@@ -4724,7 +4756,7 @@ Copyright change: ...@@ -4724,7 +4756,7 @@ Copyright change:
Incompatibilities: Incompatibilities:
* date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using * date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using
EUROPEAN STYLE). This follows SQL-92 specs. EUROPEAN STYLE). This follows SQL-92 specs.
* "delimiters" is now a keyword * "delimiters" is now a key word
Enhancements: Enhancements:
* sql LIKE syntax has been added * sql LIKE syntax has been added
...@@ -4748,7 +4780,7 @@ Bug fixes: ...@@ -4748,7 +4780,7 @@ Bug fixes:
* users with usecreatedb field set can now create databases without * users with usecreatedb field set can now create databases without
having to be usesuper having to be usesuper
* remove access control entries when the entry no longer has any * remove access control entries when the entry no longer has any
permissions privileges
* fixed non-portable datetimes implementation * fixed non-portable datetimes implementation
* added kerberos flags to the src/backend/Makefile * added kerberos flags to the src/backend/Makefile
* libpq now works with kerberos * libpq now works with kerberos
...@@ -4801,10 +4833,10 @@ more compliant to the SQL-92 standard): ...@@ -4801,10 +4833,10 @@ more compliant to the SQL-92 standard):
(Also, aggregates can now be overloaded, i.e. you can define your (Also, aggregates can now be overloaded, i.e. you can define your
own MAX aggregate to take in a user-defined type.) own MAX aggregate to take in a user-defined type.)
* CHANGE ACL removed. GRANT/REVOKE syntax added. * CHANGE ACL removed. GRANT/REVOKE syntax added.
- Privileges can be given to a group using the "GROUP" keyword. - Privileges can be given to a group using the "GROUP" key word.
For example: For example:
GRANT SELECT ON foobar TO GROUP my_group; GRANT SELECT ON foobar TO GROUP my_group;
The keyword 'PUBLIC' is also supported to mean all users. The key word 'PUBLIC' is also supported to mean all users.
Privileges can only be granted or revoked to one user or group Privileges can only be granted or revoked to one user or group
at a time. at a time.
...@@ -4821,7 +4853,7 @@ Bug fixes: ...@@ -4821,7 +4853,7 @@ Bug fixes:
* the bug where aggregates of empty tables were not run has been fixed. Now, * the bug where aggregates of empty tables were not run has been fixed. Now,
aggregates run on empty tables will return the initial conditions of the aggregates run on empty tables will return the initial conditions of the
aggregates. Thus, COUNT of an empty table will now properly return 0. aggregates. Thus, COUNT of an empty table will now properly return 0.
MAX/MIN of an empty table will return a tuple of value NULL. MAX/MIN of an empty table will return a row of value NULL.
* allow the use of \; inside the monitor * allow the use of \; inside the monitor
* the LISTEN/NOTIFY asynchronous notification mechanism now work * the LISTEN/NOTIFY asynchronous notification mechanism now work
* NOTIFY in rule action bodies now work * NOTIFY in rule action bodies now work
...@@ -4847,7 +4879,7 @@ Other changes and enhancements: ...@@ -4847,7 +4879,7 @@ Other changes and enhancements:
libpgtcl changes: libpgtcl changes:
* The -oid option has been added to the "pg_result" tcl command. * The -oid option has been added to the "pg_result" tcl command.
pg_result -oid returns oid of the last tuple inserted. If the pg_result -oid returns oid of the last row inserted. If the
last command was not an INSERT, then pg_result -oid returns "". last command was not an INSERT, then pg_result -oid returns "".
* the large object interface is available as pg_lo* tcl commands: * the large object interface is available as pg_lo* tcl commands:
pg_lo_open, pg_lo_close, pg_lo_creat, etc. pg_lo_open, pg_lo_close, pg_lo_creat, etc.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment