* Remove security vulnerabilities that allowed connected users to
read backend memory
* Fix rare bug wherein btree index page splits could fail due to
choosing an infeasible split point
* Fix for rare Assert() crash triggered by UNION
* Tighten security of multi-byte character processing for UTF8
sequences over three bytes long
* Improve handling of getaddrinfo() on AIX
This fixes a problem with starting the statistics collector, among
other things.
* Fix "failed to re-find parent key" errors in "VACUUM"
* Fix race condition for truncation of a large relation across a
gigabyte boundary by "VACUUM"
* Fix bugs affecting multi-gigabyte hash indexes
* Fix possible deadlock in Windows signal handling
* Fix error when constructing an ARRAY[] made up of multiple empty
elements
* Fix ecpg memory leak during connection
* to_number() and to_char(numeric) are now STABLE, not IMMUTABLE, for
new initdb installs
This is because lc_numeric can potentially change the output of
these functions.
* Improve index usage of regular expressions that use parentheses
This improves psql \d performance also.
* Update timezone database
This affects Australian and Canadian daylight-savings rules in
particular.
* Fix crash when referencing NEW row values in rule WHERE expressions
(Tom)
* Fix core dump when an untyped literal is taken as ANYARRAY
* Fix mishandling of AFTER triggers when query contains a SQL
function returning multiple rows (Tom)
* Fix "ALTER TABLE ... TYPE" to recheck NOT NULL for USING clause
(Tom)
* Fix string_to_array() to handle overlapping matches for the
separator string
For example, string_to_array('123xx456xxx789', 'xx').
* Fix corner cases in pattern matching for psql's \d commands
* Fix index-corrupting bugs in /contrib/ltree (Teodor)
* Numerous robustness fixes in ecpg (Joachim Wieland)
* Fix backslash escaping in /contrib/dbmirror
* Fix instability of statistics collection on Win32 (Tom, Andrew)
* Fixes for AIX and Intel compilers (Tom)
and add a new helper target and script, "show-buildlink3", that outputs
a listing of the buildlink3.mk files included as well as the depth at
which they are included.
For example, "make show-buildlink3" in fonts/Xft2 displays:
zlib
fontconfig
iconv
zlib
freetype2
expat
freetype2
Xrender
renderproto
Common to all versions:
* Change the server to reject invalidly-encoded multibyte characters
in all cases (Tatsuo, Tom) While PostgreSQL has been moving in this
direction for some time, the checks are now applied uniformly to
all encodings and all textual input, and are now always errors not
merely warnings. This change defends against SQL-injection attacks
of the type described in CVE-2006-2313.
* Reject unsafe uses of \' in string literals As a server-side
defense against SQL-injection attacks of the type described in
CVE-2006-2314, the server now only accepts '' and not \' as a
representation of ASCII single quote in SQL string literals. By
default, \' is rejected only when client_encoding is set to a
client-only encoding (SJIS, BIG5, GBK, GB18030, or UHC), which is
the scenario in which SQL injection is possible. A new
configuration parameter backslash_quote is available to adjust
this behavior when needed. Note that full security against
CVE-2006-2314 may require client-side changes; the purpose of
backslash_quote is in part to make it obvious that insecure clients
are insecure.
* Modify libpq's string-escaping routines to be aware of encoding
considerations This fixes libpq-using applications for the
security issues described in CVE-2006-2313 and CVE-2006-2314.
Applications that use multiple PostgreSQL connections concurrently
should migrate to PQescapeStringConn() and PQescapeByteaConn() to
ensure that escaping is done correctly for the settings in use in
each database connection. Applications that do string escaping
"by hand" should be modified to rely on library routines instead.
* Fix some incorrect encoding conversion functions win1251_to_iso,
alt_to_iso, euc_tw_to_big5, euc_tw_to_mic, mic_to_euc_tw were all
broken to varying extents.
* Clean up stray remaining uses of \' in strings (Bruce, Jan)
* Fix server to use custom DH SSL parameters correctly (Michael Fuhr)
* Fix various minor memory leaks
Additionally for 7.4.13 and later:
* Fix bug that sometimes caused OR'd index scans to miss rows they
should have returned
* Fix WAL replay for case where a btree index has been truncated
* Fix SIMILAR TO for patterns involving | (Tom)
* Fix for Bonjour on Intel Macs (Ashley Clark)
Additionally for 8.0.8 and 8.1.4:
* Fix SELECT INTO and CREATE TABLE AS to create tables in the
default tablespace, not the base directory (Kris Jurka)
* Fix problem with password prompting on some Win32 systems (Robert
Kinberg)
Additionally for 8.1.4:
* Fix weak key selection in pgcrypto (Marko Kreen)
Errors in fortuna PRNG reseeding logic could cause a predictable
session key to be selected by pgp_sym_encrypt() in some cases.
This only affects non-OpenSSL-using builds.
* Make autovacuum visible in pg_stat_activity (Alvaro)
* Disable full_page_writes (Tom)
In certain cases, having full_page_writes off would cause crash
recovery to fail. A proper fix will appear in 8.2; for now it's
just disabled.
* Various planner fixes, particularly for bitmap index scans and
MIN/MAX optimization (Tom)
* Fix incorrect optimization in merge join (Tom)
Outer joins could sometimes emit multiple copies of unmatched
rows.
* Fix crash from using and modifying a plpgsql function in the same
transaction
* Improve qsort performance (Dann Corbit)
Currently this code is only used on Solaris.
* Improve pg_dump's handling of default values for domains
* Fix pg_dumpall to handle identically-named users and groups
reasonably (only possible when dumping from a pre-8.1 server) (Tom)
The user and group will be merged into a single role with LOGIN
permission. Formerly the merged role wouldn't have LOGIN
permission, making it unusable as a user.
* Fix pg_restore -n to work as documented (Tom)
RECOMMENDED is removed. It becomes ABI_DEPENDS.
BUILDLINK_RECOMMENDED.foo becomes BUILDLINK_ABI_DEPENDS.foo.
BUILDLINK_DEPENDS.foo becomes BUILDLINK_API_DEPENDS.foo.
BUILDLINK_DEPENDS does not change.
IGNORE_RECOMMENDED (which defaulted to "no") becomes USE_ABI_DEPENDS
which defaults to "yes".
Added to obsolete.mk checking for IGNORE_RECOMMENDED.
I did not manually go through and fix any aesthetic tab/spacing issues.
I have tested the above patch on DragonFly building and packaging
subversion and pkglint and their many dependencies.
I have also tested USE_ABI_DEPENDS=no on my NetBSD workstation (where I
have used IGNORE_RECOMMENDED for a long time). I have been an active user
of IGNORE_RECOMMENDED since it was available.
As suggested, I removed the documentation sentences suggesting bumping for
"security" issues.
As discussed on tech-pkg.
I will commit to revbump, pkglint, pkg_install, createbuildlink separately.
Note that if you use wip, it will fail! I will commit to pkgsrc-wip
later (within day).
The fix for locales and plperl in 8.0.6 might make an REINDEX necessary.
Changes from 8.0.5 to 8.0.6:
- Fix Windows code so that postmaster will continue rather than exit if
there is no more room in ShmemBackendArray (Magnus)
- Fix bug introduced in 8.0 that could allow ReadBuffer to return an
already-used page as new, potentially causing loss of recently-committed
data (Tom)
- Fix for protocol-level Describe messages issued outside a transaction
or in a failed transaction (Tom)
- Fix character string comparison for locales that consider different
character combinations as equal, such as Hungarian (Tom)
- Set locale environment variables during postmaster startup to ensure
that plperl won't change the locale later
- Allow more flexible relocation of installation directories (Tom)
- Fix longstanding bug in strpos() and regular expression handling in
certain rarely used Asian multi-byte character sets (Tatsuo)
- Various fixes for functions returning RECORDs (Tom)
- Fix bug in /contrib/pgcrypto gen_salt, which caused it not to use all
available salt space for MD5 and XDES algorithms (Marko Kreen, Solar
Designer)
- Fix /contrib/dblink to throw an error, rather than crashing, when the
number of columns specified is different from what's actually returned
by the query (Joe)
Changes from 8.0.6 to 8.0.7:
- Fix potential crash in SET SESSION AUTHORIZATION (CVE-2006-0553)
- Fix bug with row visibility logic in self-inserted rows (Tom)
- Fix race condition that could lead to "file already exists" errors
during pg_clog and pg_subtrans file creation (Tom)
- Fix cases that could lead to crashes if a cache-invalidation message
arrives at just the wrong time (Tom)
- Properly check DOMAIN constraints for UNKNOWN parameters in prepared
statements (Neil)
- Ensure ALTER COLUMN TYPE will process FOREIGN KEY, UNIQUE, and PRIMARY
KEY constraints in the proper order (Nakano Yoshihisa)
- Fixes to allow restoring dumps that have cross-schema references to
custom operators or operator classes (Tom)
- Allow pg_restore to continue properly after a COPY failure; formerly
it tried to treat the remaining COPY data as SQL commands (Stephen
Frost)
- Fix pg_ctl unregister crash when the data directory is not specified
(Magnus)
- Fix ecpg crash on AMD64 and PPC (Neil)
- Recover properly if error occurs during argument passing in PL/python
(Neil)
- Fix PL/perl's handling of locales on Win32 to match the backend
(Andrew)
- Fix crash when log_min_messages is set to DEBUG3 or above in
postgresql.conf on Win32 (Bruce)
- Fix pgxs -L library path specification for Win32, Cygwin, OS X, AIX
(Bruce)
- Check that SID is enabled while checking for Win32 admin privileges
(Magnus)
- Properly reject out-of-range date inputs (Kris Jurka)
- Portability fix for testing presence of finite and isinf during
configure (Tom)
Changes since 8.0.4:
* Fix race condition in transaction log management
There was a narrow window in which an I/O operation could be
initiated for the wrong page, leading to an Assert failure
or data corruption.
* Fix bgwriter problems after recovering from errors (Tom)
The background writer was found to leak buffer pins after
write errors. While not fatal in itself, this might lead to
mysterious blockages of later VACUUM commands.
* Prevent failure if client sends Bind protocol message when
current transaction is already aborted
* /contrib/ltree fixes (Teodor)
* AIX and HPUX compile fixes (Tom)
* Retry file reads and writes after Windows NO_SYSTEM_RESOURCES
error (Qingqing Zhou)
* Fix intermittent failure when log_line_prefix includes %i
* Fix psql performance issue with long scripts on Windows
(Merlin Moncure)
* Fix missing updates of pg_group flat file
* Fix longstanding planning error for outer joins
This bug sometimes caused a bogus error "RIGHT JOIN is only
supported with merge-joinable join conditions".
* Postpone timezone initialization until after postmaster.pid
is created
This avoids confusing startup scripts that expect the pid
file to appear quickly.
* Prevent core dump in pg_autovacuum when a table has been dropped
* Fix problems with whole-row references (foo.*) to subquery results
previous 8.0.x release, no dump-and-restore is necessary. Changes
from version 8.0.3 include:
postgresql80-client:
- Clarify comment for pgsql-hier-query option to note that it is
considered buggy by PostgreSQL developers.
* Make psql -f filename return a nonzero exit code when opening the
file fails
* Change pg_dump to handle inherited check constraints more reliably
postgresql80-server:
* Fix error that allowed "VACUUM" to remove ctid chains too soon, and
add more checking in code that follows ctid links
This fixes a long-standing problem that could cause crashes in very
rare circumstances.
* Fix CHAR() to properly pad spaces to the specified length when
using a multiple-byte character set (Yoshiyuki Asaba)
In prior releases, the padding of CHAR() was incorrect because it
only padded to the specified number of bytes without considering
how many characters were stored.
* Force a checkpoint before committing "CREATE DATABASE"
This should fix recent reports of "index is not a btree" failures
when a crash occurs shortly after "CREATE DATABASE".
* Fix the sense of the test for read-only transaction in "COPY"
The code formerly prohibited "COPY TO", where it should prohibit
"COPY FROM".
* Handle consecutive embedded newlines in "COPY" CSV-mode input
* Fix date_trunc(week) for dates near year end
* Fix planning problem with outer-join ON clauses that reference only
the inner-side relation
* Further fixes for x FULL JOIN y ON true corner cases
* Fix overenthusiastic optimization of x IN (SELECT DISTINCT ...) and
related cases
* Fix mis-planning of queries with small LIMIT values due to poorly
thought out "fuzzy" cost comparison
* Make array_in and array_recv more paranoid about validating their
OID parameter
* Fix missing rows in queries like UPDATE a=... WHERE a... with GiST
index on column a
* Improve robustness of datetime parsing
* Improve checking for partially-written WAL pages
* Improve robustness of signal handling when SSL is enabled
* Improve MIPS and M68K spinlock code
* Don't try to open more than max_files_per_process files during
postmaster startup
* Various memory leakage fixes
* Various portability improvements
* Update timezone data files
* Fix PL/PgSQL to handle var := var correctly when the variable is of
pass-by-reference type
postgresql80-plperl:
* Fix PL/Perl %_SHARED so it's actually shared
* Become maintainer for the postgresql80-* packages (ok'd by recht)
* Libtoolize postgresql80 build so that the shared libraries and
loadable shared modules are built using libtool. This should make
PostgreSQL 8.0.x in pkgsrc build correctly on more pkgsrc-supported
platforms. This is accomplished with the Makefile.libtool file
which replaces the Makefile.shlib file in the PostgreSQL distribution.
* Add libltdl modifications from the postgresql74-* packages so that
this can work on Interix (untested).
* Fix some mismatches between static function declarations and their
subsesquent definitions in the src/timezone module. Fixes provided
by Georg Schwarz.
* Convert PGSQL_USE_HIER into the PKG_OPTION "pgsql-hier-query", and
teach both postgresql80-client and postgresql80-server to use it.
* Use BUILDLINK_TRANSFORM's "rm" action to remove unwanted compiler
flags.
* Remove zlib/buildlink3.mk from postgresql80-client/buildlink3.mk
as zlib is only used by the pg_dump client.
* Convert some files in files/* into patches that can be fed back
to the PostgreSQL team.
* Install data and documentation files into share/postgresql instead
of share/postgresql80 -- it's only possible to install one PostgreSQL
version at a time in pkgsrc, and the new paths more closely match
the rest of the installation paths.
* Add more mirrors to the MASTER_SITES list, and add a new variable
POSTGRESQL_MIRRORS_SORT that has the same syntax as MASTER_SORT that
can help people pick a nearby mirror.
* Nuke references to libpgtcl which is no longer distributed as part
of a standard PostgreSQL installation as of version 8.0.
* Provide better documentation for Makefile.custom.
* Avoid linking in the pthread library in the correct way on NetBSD
by setting DLOPEN_REQUIRE_PTHREADS=no. Also, provide better
documentation on why we can't enable thread-safety in the PostgreSQL
libraries on NetBSD (at least for now).
* Preliminary support for installing postgresql80-* into a separate
subdirectory under ${LOCALBASE} so possibly allow for multiple
installations of PostgreSQL on the same machine. Note that THIS
DOES NOT WORK YET.
* Update the hierarchical-queries patch to "8.0.3-0.5.5" which fixes
a bug which was crashing the backend when PRIOR was used in the
target list. The _level_ column is no longer automatically added
to target list. This makes it possible to use hierarchical queries
as IN subqueries. To get _level_ back you just have to explicitly
mention it in target list.
Bump the following PKGREVISIONs:
postgresql80-client -> 2
postgresql80-server -> 2
postgresql80 -> 1
While at it do some structual changes to packages and merge
the lib and docs package has been merged into the client package.
Also enable Rendezvous support on Darwin.
Changes
* Increment the major version number of all interface libraries
(Bruce)
This should have been done in 8.0.0. It is required so 7.4.X
versions of PostgreSQL client applications, like psql, can be used
on the same machine as 8.0.X applications. This might require
re-linking user applications that use these libraries.
* Add Windows-only wal_sync_method setting of "fsync_writethrough"
(Magnus, Bruce)
This setting causes PostgreSQL to write through any disk-drive
write cache when writing to WAL. This behavior was formerly called
"fsync", but was renamed because it acts quite differently from
"fsync" on other platforms.
* Enable the wal_sync_method setting of "open_datasync" on Windows,
and make it the default for that platform (Magnus, Bruce)
Because the default is no longer "fsync_writethrough", data loss is
possible during a power failure if the disk drive has write caching
enabled. To turn off the write cache on Windows, from the Device
Manager, choose the drive properties, then Policies.
* New cache management algorithm 2Q replaces ARC (Tom)
This was done to avoid a pending US patent on ARC. The 2Q code
might be a few percentage points slower than ARC for some work
loads. A better cache management algorithm will appear in 8.1.
* Planner adjustments to improve behavior on freshly-created tables
(Tom)
* Allow plpgsql to assign to an element of an array that is initially
NULL (Tom)
Formerly the array would remain NULL, but now it becomes a
single-element array. The main SQL engine was changed to handle
"UPDATE" of a null array value this way in 8.0, but the similar
case in plpgsql was overlooked.
* Convert \r\n and \r to \n in plpython function bodies (Michael
Fuhr)
This prevents syntax errors when plpython code is written on a
Windows or Mac client.
* Allow SPI cursors to handle utility commands that return rows, such
as "EXPLAIN" (Tom)
* Fix "CLUSTER" failure after "ALTER TABLE SET WITHOUT OIDS" (Tom)
* Reduce memory usage of "ALTER TABLE ADD COLUMN" (Neil)
* Fix "ALTER LANGUAGE RENAME" (Tom)
* Document the Windows-only register and unregister options of pg_ctl
(Magnus)
* Ensure operations done during backend shutdown are counted by
statistics collector
This is expected to resolve reports of pg_autovacuum not vacuuming
the system catalogs often enough -- it was not being told about
catalog deletions caused by temporary table removal during backend
exit.
* Change the Windows default for configuration parameter
log_destination to "eventlog" (Magnus)
By default, a server running on Windows will now send log output to
the Windows event logger rather than standard error.
* Make Kerberos authentication work on Windows (Magnus)
* Allow "ALTER DATABASE RENAME" by superusers who aren't flagged as
having CREATEDB privilege (Tom)
* Modify WAL log entries for "CREATE" and "DROP DATABASE" to not
specify absolute paths (Tom)
This allows point-in-time recovery on a different machine with
possibly different database location. Note that "CREATE TABLESPACE"
still poses a hazard in such situations.
* Fix crash from a backend exiting with an open transaction that
created a table and opened a cursor on it (Tom)
* Fix array_map() so it can call PL functions (Tom)
* Several "contrib/tsearch2" and "contrib/btree_gist" fixes (Teodor)
* Fix crash of some "contrib/pgcrypto" functions on some platforms
(Marko Kreen)
* Fix "contrib/intagg" for 64-bit platforms (Tom)
* Fix ecpg bugs in parsing of "CREATE" statement (Michael)
* Work around gcc bug on powerpc and amd64 causing problems in ecpg
(Christof Petig)
* Do not use locale-aware versions of upper(), lower(), and initcap()
when the locale is C (Bruce)
This allows these functions to work on platforms that generate
errors for non-7-bit data when the locale is C.
* Fix quote_ident() to quote names that match keywords (Tom)
* Fix to_date() to behave reasonably when CC and YY fields are both
used (Karel)
* Prevent to_char(interval) from failing when given a zero-month
interval (Tom)
* Fix wrong week returned by date_trunc('week') (Bruce)
date_trunc('week') returned the wrong year for the first few days
of January in some years.
* Use the correct default mask length for class D addresses in INET
data types (Tom)
for those wishing to migrate data from any previous release.
Major changes relative to 7.4.x:
* Savepoints
* Point-in-Time recovery
* Tablespaces
* Improved buffer management
* ALTER TABLE column management improvements
Full list of changes is available at:
http://www.postgresql.org/docs/8.0/static/release.html#RELEASE-8-0
Also note that PostgreSQL server listens also on localhost (127.0.0.1)
by default now.