* Enforce restrictions in plperl using an opmask applied to the whole
interpreter, instead of using "Safe.pm"
* Prevent PL/Tcl from executing untrustworthy code from pltcl_modules
* Fix possible crash if a cache reset message is received during
rebuild of a relcache entry
* Do not allow an unprivileged user to reset superuser-only parameter
settings
* Avoid possible crash during backend shutdown if shutdown occurs
when a CONTEXT addition would be made to log entries
* Update pl/perl's "ppport.h" for modern Perl versions
* Fix assorted memory leaks in pl/python
* Prevent infinite recursion in psql when expanding a variable that
refers to itself
* Fix psql's \copy to not add spaces around a dot within \copy
(select ...)
* Ensure that "contrib/pgstattuple" functions respond to cancel
interrupts promptly
* Make server startup deal properly with the case that shmget()
returns EINVAL for an existing shared memory segment
* Avoid possible crashes in syslogger process on Windows
* Deal more robustly with incomplete time zone information in the
Windows registry
* Update the set of known Windows time zone names
* Update time zone data files to tzdata release 2010j for DST law
changes in Argentina, Australian Antarctic, Bangladesh, Mexico,
Morocco, Pakistan, Palestine, Russia, Syria, Tunisia; also
historical corrections for Taiwan.
Also, add PKST (Pakistan Summer Time) to the default set of
timezone abbreviations.
* Add new configuration parameter ssl_renegotiation_limit to control
how often we do session key renegotiation for an SSL connection
* Fix possible deadlock during backend startup
* Fix possible crashes due to not handling errors during relcache
reload cleanly
* Fix possible crashes when trying to recover from a failure in
subtransaction start
* Fix server memory leak associated with use of savepoints and a
client encoding different from server's encoding
* Fix incorrect WAL data emitted during end-of-recovery cleanup of a
GIST index page split
* Make substring() for bit types treat any negative length as meaning
"all the rest of the string"
The previous coding treated only -1 that way, and would produce an
invalid result value for other negative values, possibly leading to
a crash (CVE-2010-0442).
* Fix integer-to-bit-string conversions to handle the first
fractional byte correctly when the output bit width is wider than
the given integer by something other than a multiple of 8 bits
* Fix some cases of pathologically slow regular expression matching
* Fix the STOP WAL LOCATION entry in backup history files to report
the next WAL segment's name when the end location is exactly at a
segment boundary
* Fix some more cases of temporary-file leakage
* Improve constraint exclusion processing of boolean-variable cases,
in particular make it possible to exclude a partition that has a
"bool_column = false" constraint
* When reading "pg_hba.conf" and related files, do not treat
@something as a file inclusion request if the @ appears inside
quote marks; also, never treat @ by itself as a file inclusion
request
* Prevent infinite loop on some platforms if a directory is named as
an inclusion target in "pg_hba.conf" and related files
* Fix possible infinite loop if SSL_read or SSL_write fails without
setting errno
This is reportedly possible with some Windows versions of openssl.
* Fix psql's numericlocale option to not format strings it shouldn't
in latex and troff output formats
* Make psql return the correct exit status (3) when ON_ERROR_STOP and
--single-transaction are both specified and an error occurs during
the implied "COMMIT"
* Fix plpgsql failure in one case where a composite column is set to NULL
* Fix possible failure when calling PL/Perl functions from PL/PerlU
or vice versa
* Add volatile markings in PL/Python to avoid possible
compiler-specific misbehavior
* Ensure PL/Tcl initializes the Tcl interpreter fully
The only known symptom of this oversight is that the Tcl clock
command misbehaves if using Tcl 8.5 or later.
* Prevent crash in "contrib/dblink" when too many key columns are
specified to a dblink_build_sql_* function
* Fix assorted crashes in "contrib/xml2" caused by sloppy memory
management
* Make building of "contrib/xml2" more robust on Windows
* Fix race condition in Windows signal handling
One known symptom of this bug is that rows in pg_listener could be
dropped under heavy load.
* Update time zone data files to tzdata release 2010e for DST law
changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
* Protect against indirect security threats caused by index functions
changing session-local state
* Reject SSL certificates containing an embedded null byte in the
common name (CN) field
* Fix possible crash during backend-startup-time cache initialization
* Prevent signals from interrupting VACUUM at unsafe times
* Fix possible crash due to integer overflow in hash table size
calculation
* Fix very rare crash in inet/cidr comparisons
* Ensure that shared tuple-level locks held by prepared transactions
are not ignored
* Fix premature drop of temporary files used for a cursor that is
accessed within a subtransaction
* Fix incorrect logic for GiST index page splits, when the split
depends on a non-first column of the index
* Don't error out if recycling or removing an old WAL file fails at
the end of checkpoint
* Ensure WAL files aren't repeatedly archived on Windows
* Fix PAM password processing to be more robust
* Fix processing of ownership dependencies during CREATE OR REPLACE
FUNCTION
* Fix bug with calling plperl from plperlu or vice versa
* Fix session-lifespan memory leak when a PL/Perl function is
redefined
* Ensure that Perl arrays are properly converted to PostgreSQL arrays
when returned by a set-returning PL/Perl function
* More...
* Force WAL segment switch during pg_start_backup()
* Disallow "RESET ROLE" and "RESET SESSION AUTHORIZATION" inside
security-definer functions
* Make "LOAD" of an already-loaded loadable module into a no-op
* Disallow empty passwords during LDAP authentication
* Fix handling of sub-SELECTs appearing in the arguments of an
outer-level aggregate function
* Fix bugs associated with fetching a whole-row value from the output
of a Sort or Materialize plan node
* Revert planner change that disabled partial-index and constraint
exclusion optimizations when there were more than 100 clauses in an
AND or OR list
* Fix hash calculation for data type interval
* Treat to_char(..., 'TH') as an uppercase ordinal suffix with 'HH'/'HH12'
* Fix overflow for INTERVAL 'x ms' when "x" is more than 2 million
and integer datetimes are in use
* Fix calculation of distance between a point and a line segment
* Fix money data type to work in locales where currency amounts have
no fractional digits, e.g. Japan
* Properly round datetime input like 00:12:57.9999999999999999999999999999
* Fix poor choice of page split point in GiST R-tree operator classes
* Avoid performance degradation in bulk inserts into GIN indexes when
the input values are (nearly) in sorted order
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
* Prevent error recursion crashes when encoding conversion fails.
* Disallow "CREATE CONVERSION" with the wrong encodings for the
specified conversion function.
* Fix core dump when to_char() is given format codes that are
inappropriate for the type of the data argument.
* Fix possible failure in "contrib/tsearch2" when C locale is used
with a multi-byte encoding.
* Fix extreme inefficiency in "contrib/tsearch2" parser's handling of
an email-like string containing multiple @ characters.
* Fix decompilation of CASE WHEN with an implicit coercion.
* Fix possible misassignment of the owner of a TOAST table's rowtype.
* Fix PL/pgSQL to not treat INTO after "INSERT" as an INTO-variables
clause anywhere in the string, not only at the start; in
particular, don't fail for "INSERT INTO" within "CREATE RULE".
* Clean up PL/pgSQL error status variables fully at block exit.
* Retry failed calls to CallNamedPipe() on Windows.
* Add MUST (Mauritius Island Summer Time) to the default list of
known timezone abbreviations.
* Improve handling of URLs in headline() function
* Improve handling of overlength headlines in headline() function
* Prevent possible Assert failure or misconversion if an encoding
conversion is created with the wrong conversion function for the
specified pair of encodings
* Fix possible Assert failure if a statement executed in PL/pgSQL is
rewritten into another kind of statement, for example if an
"INSERT" is rewritten into an "UPDATE"
* Ensure that a snapshot is available to datatype input functions
* Make it safer for SPI-using functions to be used within datatype
I/O; in particular, to be used in domain check constraints
* Avoid unnecessary locking of small tables in "VACUUM"
* Fix a problem that made UPDATE RETURNING tableoid return zero
instead of the correct OID
* Fix planner misestimation of selectivity when transitive equality
is applied to an outer-join clause
This could result in bad plans for queries like ... from a left
join b on a.a1 = b.b1 where a.a1 = 42 ...
* Improve optimizer's handling of long IN lists
This change avoids wasting large amounts of time on such lists when
constraint exclusion is enabled.
* Ensure that the contents of a holdable cursor don't depend on the
contents of TOAST tables
* Fix memory leak when a set-returning function is terminated without
reading its whole result
* Fix "contrib/dblink"'s dblink_get_result(text,bool) function
* Fix possible garbage output from "contrib/sslinfo" functions
* Fix configure script to properly report failure when unable to
obtain linkage information for PL/Perl
* Make all documentation reference pgsql-bugs and/or pgsql-hackers as
appropriate, instead of the now-decommissioned pgsql-ports and
pgsql-patches mailing lists
* Update time zone data files to tzdata release 2009a (for Kathmandu
and historical DST corrections in Switzerland, Cuba)
* Fix GiST index corruption due to marking the wrong index entry
"dead" after a deletion.
This would result in index searches failing to find rows they
should have found.
* Fix backend crash when the client encoding cannot represent a
localized error message.
We have addressed similar issues before, but it would still fail if
the "character has no equivalent" message itself couldn't be
converted. The fix is to disable localization and send the plain
ASCII error message when we detect such a situation.
* Fix possible crash when deeply nested functions are invoked from a
trigger.
* Improve optimization of "expression" IN ("expression-list") queries.
Cases in which there are query variables on the right-hand side had
been handled less efficiently in 8.2.x and 8.3.x than in prior
versions. The fix restores 8.1 behavior for such cases.
* Fix mis-expansion of rule queries when a sub-SELECT appears in a
function call in FROM, a multi-row VALUES list, or a RETURNING list.
* Fix memory leak during rescan of a hashed aggregation plan.
* Ensure an error is reported when a newly-defined PL/pgSQL trigger
function is invoked as a normal function.
* Prevent possible collision of relfilenode numbers when moving a
table to another tablespace with "ALTER SET TABLESPACE".
The command tried to re-use the existing filename, instead of
picking one that is known unused in the destination directory.
* Fix incorrect tsearch2 headline generation when single query item
matches first word of text.
* Fix improper display of fractional seconds in interval values when
using a non-ISO datestyle in an "--enable-integer-datetimes" build.
* Ensure SPI_getvalue and SPI_getbinval behave correctly when the
passed tuple and tuple descriptor have different numbers of columns.
* Fix ecpg's parsing of "CREATE ROLE".
* Fix recent breakage of pg_ctl restart.
* Ensure "pg_control" is opened in binary mode.
pg_controldata and pg_resetxlog did this incorrectly, and so could
fail on Windows.
* Update time zone data files to tzdata release 2008i (for DST law
changes in Argentina, Brazil, Mauritius, Syria)
* Make pg_get_ruledef() parenthesize negative constants (Tom)
Before this fix, a negative constant in a view or rule might be
dumped as, say, -42::integer, which is subtly incorrect: it should
be (-42)::integer due to operator precedence rules. Usually this
would make little difference, but it could interact with another
recent patch to cause PostgreSQL to reject what had been a valid
"SELECT DISTINCT" view query. Since this could result in pg_dump
output failing to reload, it is being treated as a high-priority
fix. The only released versions in which dump output is actually
incorrect are 8.3.1 and 8.2.7.
* Make "ALTER AGGREGATE ... OWNER TO" update pg_shdepend (Tom)
This oversight could lead to problems if the aggregate was later
involved in a "DROP OWNED" or "REASSIGN OWNED" operation.
* Fix character string comparison for Windows locales that consider
different character combinations as equal
* Repair potential deadlock between concurrent "VACUUM FULL"
operations on different system catalogs
* Fix longstanding "LISTEN"/"NOTIFY" race condition
* Disallow "LISTEN" and "UNLISTEN" within a prepared transaction
* Disallow dropping a temporary table within a prepared transaction
* Fix rare crash when an error occurs during a query using a hash
index
* Fix memory leaks in certain usages of set-returning functions
* Fix input of datetime values for February 29 in years BC
* Fix "unrecognized node type" error in some variants of "ALTER
OWNER"
* Ensure pg_stat_activity.waiting flag is cleared when a lock wait is
aborted
* Fix handling of process permissions on Windows Vista
* More...
* Prevent index corruption when a transaction inserts rows and then
aborts close to the end of a concurrent "VACUUM" on the same table
* Fix ALTER DOMAIN ADD CONSTRAINT for cases involving domains over
domains
* Make "CREATE DOMAIN ... DEFAULT NULL" work properly
* Fix some planner problems with outer joins, notably poor size
estimation for t1 LEFT JOIN t2 WHERE t2.col IS NULL
* Allow the interval data type to accept input consisting only of
milliseconds or microseconds
* Allow timezone name to appear before the year in timestamp input
* Fixes for GIN indexes used by "/contrib/tsearch2"
* Speed up rtree index insertion
* Fix excessive logging of SSL error messages
* Fix logging so that log messages are never interleaved when using
the syslogger process
* Fix crash when log_min_error_statement logging runs out of memory
* Fix incorrect handling of some foreign-key corner cases
* Fix stddev_pop(numeric) and var_pop(numeric)
* Prevent "REINDEX" and "CLUSTER" from failing due to attempting to
process temporary tables of other sessions
* Update the time zone database rules, particularly New Zealand's
upcoming changes
* Windows socket and semaphore improvements
* Make "pg_ctl -w" work properly in Windows service mode
* Fix memory allocation bug when using MIT Kerberos on Windows
* Suppress timezone name (%Z) in log timestamps on Windows because of
possible encoding mismatches
* Require non-superusers who use "/contrib/dblink" to use only
password authentication, as a security measure
* Restrict "/contrib/pgstattuple" functions to superusers, for
security reasons
* Do not let "/contrib/intarray" try to make its GIN opclass the
default (this caused problems at dump/restore)
* Support explicit placement of the temporary-table schema within
search_path, and disable searching it for functions and operators
* Fix shared_preload_libraries for Windows by forcing reload in each
backend
* Fix to_char() so it properly upper/lower cases localized day or
month names
* "/contrib/tsearch2" crash fixes
* Require "COMMIT PREPARED" to be executed in the same database as
the transaction was prepared in
* Allow "pg_dump" to do binary backups larger than two gigabytes on
Windows
* New traditional (Taiwan) Chinese FAQ
* Prevent the statistics collector from writing to disk too
frequently
* Fix potential-data-corruption bug in how "VACUUM FULL" handles
"UPDATE" chains
* Fix bug in domains that use array types
* Fix "pg_dump" so it can dump a serial column's sequence using "-t"
when not also dumping the owning table
* Planner fixes, including improving outer join and bitmap scan
selection logic
* Fix possible wrong answers or crash when a PL/pgSQL function tries
to RETURN from within an EXCEPTION block
* Fix PANIC during enlargement of a hash index
* Fix POSIX-style timezone specs to follow new USA DST rules
* Remove overly-restrictive check for type length in constraints and
functional indexes
* Fix optimization so MIN/MAX in subqueries can again use indexes
* Remove security vulnerabilities that allowed connected users to
read backend memory
* Fix not-so-rare-anymore bug wherein btree index page splits could
fail due to choosing an infeasible split point
* Fix Borland C compile scripts
* Properly handle to_char('CC') for years ending in 00
Year 2000 is in the twentieth century, not the twenty-first.
* "/contrib/tsearch2" localization improvements
* Fix incorrect permission check in information_schema.key_column_usage view
* Improve "VACUUM" performance for databases with many tables
* Fix for rare Assert() crash triggered by UNION
* Fix potentially incorrect results from index searches using ROW
inequality conditions
* Tighten security of multi-byte character processing for UTF8
sequences over three bytes long
* Fix bogus "permission denied" failures occurring on Windows due to
attempts to fsync already-deleted files
* Fix bug that could cause the statistics collector to hang on
Windows
* Fix possible crashes when an already-in-use PL/pgSQL function is
updated
* Improve PL/pgSQL handling of domain types
* Fix possible errors in processing PL/pgSQL exception blocks
* Fix crash with SELECT ... LIMIT ALL (also LIMIT NULL)
* "Several /contrib/tsearch2" fixes
* On Windows, make log messages coming from the operating system use
ASCII encoding
This fixes a conversion problem when there is a mismatch between
the encoding of the operating system and database server.
* Fix Windows linking of pg_dump using "win32.mak"
* Fix planner mistakes for outer join queries
* Fix several problems in queries involving sub-SELECTs
* Fix potential crash in SPI during subtransaction abort
This affects all PL functions since they all use SPI.
* Improve build speed of PDF documentation
* Re-add JST (Japan) timezone abbreviation
* Improve optimization decisions related to index scans
* Have psql print multi-byte combining characters as before, rather
than output as \u
* Improve index usage of regular expressions that use parentheses
This improves psql \d performance also.
* Make pg_dumpall assume that databases have public CONNECT
privilege, when dumping from a pre-8.2 server
This preserves the previous behavior that anyone can connect to a
database if allowed by "pg_hba.conf".
* Query language enhancements including "INSERT/UPDATE/DELETE
RETURNING", multirow VALUES lists, and optional target-table alias
in "UPDATE"/"DELETE"
* Index creation without blocking concurrent
"INSERT"/"UPDATE"/"DELETE" operations
* Many query optimization improvements, including support for
reordering outer joins
* Improved sorting performance with lower memory usage
* More efficient locking with better concurrency
* More efficient vacuuming
* Easier administration of warm standby servers
* New FILLFACTOR support for tables and indexes
* Monitoring, logging, and performance tuning additions
* More control over creating and dropping objects
* Table inheritance relationships can be defined for and removed from
pre-existing tables
* "COPY TO" can copy the output of an arbitrary "SELECT" statement
* Array improvements, including nulls in arrays
* Aggregate-function improvements, including multiple-input
aggregates and SQL:2003 statistical functions
* Many "contrib/" improvements