reading info files. Also strip the split info files from the PLIST
as the plist module handles them automatically. Lastly, define
INFO_FILES so that the pkginstall framework properly manages the "dir"
info file database index in the xemacs info directory.
Bump the PKGREVISION.
and replace with appropriate references to PKGINFODIR instead.
* Properly account for split info files during installation.
* Move info file listings directly into the package PLISTs.
This fixes info-file-related PLIST problems.
files. Passing --infodir directly doesn't work since only the final
--infodir is honored by configure scripts, and bsd.pkg.mk adds the
last one based on the setting for GNU_CONFIGURE_INFODIR. Drop the
obsolete use of INFO_DIR.
* List the info files directly in the PLIST.
* Fix the build and the PLIST when using xemacs.
Bump the PKGREVISION to 2.
This is an overview of new features in 8.1.0 against 8.0.x. 8.1.3 includes
many bug fixes since 8.1.0. Please read documentation of the detailed changes
and procedure of data migration.
Overview
Major changes in this release:
Improve concurrent access to the shared buffer cache (Tom)
Access to the shared buffer cache was identified as a
significant scalability problem, particularly on multi-CPU
systems. In this release, the way that locking is done in the
buffer manager has been overhauled to reduce lock contention and
improve scalability. The buffer manager has also been changed to
use a "clock sweep" replacement policy.
Allow index scans to use an intermediate in-memory bitmap (Tom)
In previous releases, only a single index could be used to do
lookups on a table. With this feature, if a query has "WHERE
tab.col1 = 4 and tab.col2 = 9", and there is no multicolumn
index on col1 and col2, but there is an index on col1 and
another on col2, it is possible to search both indexes and
combine the results in memory, then do heap fetches for only the
rows matching both the col1 and col2 restrictions. This is very
useful in environments that have a lot of unstructured queries
where it is impossible to create indexes that match all possible
access conditions. Bitmap scans are useful even with a single
index, as they reduce the amount of random access needed; a
bitmap index scan is efficient for retrieving fairly large
fractions of the complete table, whereas plain index scans are
not.
Add two-phase commit (Heikki Linnakangas, Alvaro, Tom)
Two-phase commit allows transactions to be "prepared" on several
computers, and once all computers have successfully prepared
their transactions (none failed), all transactions can be
committed. Even if a machine crashes after a prepare, the
prepared transaction can be committed after the machine is
restarted. New syntax includes "PREPARE TRANSACTION" and
"COMMIT/ROLLBACK PREPARED". A new system view pg_prepared_xacts
has also been added.
Create a new role system that replaces users and groups (Stephen Frost)
Roles are a combination of users and groups. Like users, they
can have login capability, and like groups, a role can have
other roles as members. Roles basically remove the distinction
between users and groups. For example, a role can:
+ Have login capability (optionally)
+ Own objects
+ Hold access permissions for database objects
+ Inherit permissions from other roles it is a member of
Once a user logs into a role, she obtains capabilities of the
login role plus any inherited roles, and can use "SET ROLE" to
switch to other roles she is a member of. This feature is a
generalization of the SQL standard's concept of roles. This
change also replaces pg_shadow and pg_group by new role-capable
catalogs pg_authid and pg_auth_members. The old tables are
redefined as read-only views on the new role tables.
Automatically use indexes for MIN() and MAX() (Tom)
In previous releases, the only way to use an index for MIN() or
MAX() was to rewrite the query as "SELECT col FROM tab ORDER BY
col LIMIT 1". Index usage now happens automatically.
Move /contrib/pg_autovacuum into the main server (Alvaro)
Integrating autovacuum into the server allows it to be
automatically started and stopped in sync with the database
server, and allows autovacuum to be configured from
"postgresql.conf".
Add shared row level locks using SELECT ... FOR SHARE (Alvaro)
While PostgreSQL's MVCC locking allows "SELECT" to never be
blocked by writers and therefore does not need shared row locks
for typical operations, shared locks are useful for applications
that require shared row locking. In particular this reduces the
locking requirements imposed by referential integrity checks.
Add dependencies on shared objects, specifically roles (Alvaro)
This extension of the dependency mechanism prevents roles from
being dropped while there are still database objects they own.
Formerly it was possible to accidentally "orphan" objects by
deleting their owner. While this could be recovered from, it was
messy and unpleasant.
Improve performance for partitioned tables (Simon)
The new constraint_exclusion configuration parameter avoids
lookups on child tables where constraints indicate that no
matching rows exist in the child table.
This allows for a basic type of table partitioning. If child
tables store separate key ranges and this is enforced using
appropriate "CHECK" constraints, the optimizer will skip child
table accesses when the constraint guarantees no matching rows
exist in the child table.
This is an overview of new features in 8.1.0 against 8.0.x. 8.1.3 includes
many bug fixes since 8.1.0. Please read documentation of the detailed changes
and procedure of data migration.
Overview
Major changes in this release:
Improve concurrent access to the shared buffer cache (Tom)
Access to the shared buffer cache was identified as a
significant scalability problem, particularly on multi-CPU
systems. In this release, the way that locking is done in the
buffer manager has been overhauled to reduce lock contention and
improve scalability. The buffer manager has also been changed to
use a "clock sweep" replacement policy.
Allow index scans to use an intermediate in-memory bitmap (Tom)
In previous releases, only a single index could be used to do
lookups on a table. With this feature, if a query has "WHERE
tab.col1 = 4 and tab.col2 = 9", and there is no multicolumn
index on col1 and col2, but there is an index on col1 and
another on col2, it is possible to search both indexes and
combine the results in memory, then do heap fetches for only the
rows matching both the col1 and col2 restrictions. This is very
useful in environments that have a lot of unstructured queries
where it is impossible to create indexes that match all possible
access conditions. Bitmap scans are useful even with a single
index, as they reduce the amount of random access needed; a
bitmap index scan is efficient for retrieving fairly large
fractions of the complete table, whereas plain index scans are
not.
Add two-phase commit (Heikki Linnakangas, Alvaro, Tom)
Two-phase commit allows transactions to be "prepared" on several
computers, and once all computers have successfully prepared
their transactions (none failed), all transactions can be
committed. Even if a machine crashes after a prepare, the
prepared transaction can be committed after the machine is
restarted. New syntax includes "PREPARE TRANSACTION" and
"COMMIT/ROLLBACK PREPARED". A new system view pg_prepared_xacts
has also been added.
Create a new role system that replaces users and groups (Stephen Frost)
Roles are a combination of users and groups. Like users, they
can have login capability, and like groups, a role can have
other roles as members. Roles basically remove the distinction
between users and groups. For example, a role can:
+ Have login capability (optionally)
+ Own objects
+ Hold access permissions for database objects
+ Inherit permissions from other roles it is a member of
Once a user logs into a role, she obtains capabilities of the
login role plus any inherited roles, and can use "SET ROLE" to
switch to other roles she is a member of. This feature is a
generalization of the SQL standard's concept of roles. This
change also replaces pg_shadow and pg_group by new role-capable
catalogs pg_authid and pg_auth_members. The old tables are
redefined as read-only views on the new role tables.
Automatically use indexes for MIN() and MAX() (Tom)
In previous releases, the only way to use an index for MIN() or
MAX() was to rewrite the query as "SELECT col FROM tab ORDER BY
col LIMIT 1". Index usage now happens automatically.
Move /contrib/pg_autovacuum into the main server (Alvaro)
Integrating autovacuum into the server allows it to be
automatically started and stopped in sync with the database
server, and allows autovacuum to be configured from
"postgresql.conf".
Add shared row level locks using SELECT ... FOR SHARE (Alvaro)
While PostgreSQL's MVCC locking allows "SELECT" to never be
blocked by writers and therefore does not need shared row locks
for typical operations, shared locks are useful for applications
that require shared row locking. In particular this reduces the
locking requirements imposed by referential integrity checks.
Add dependencies on shared objects, specifically roles (Alvaro)
This extension of the dependency mechanism prevents roles from
being dropped while there are still database objects they own.
Formerly it was possible to accidentally "orphan" objects by
deleting their owner. While this could be recovered from, it was
messy and unpleasant.
Improve performance for partitioned tables (Simon)
The new constraint_exclusion configuration parameter avoids
lookups on child tables where constraints indicate that no
matching rows exist in the child table.
This allows for a basic type of table partitioning. If child
tables store separate key ranges and this is enforced using
appropriate "CHECK" constraints, the optimizer will skip child
table accesses when the constraint guarantees no matching rows
exist in the child table.
--infodir, --mandir, etc. As a side-effect, this corrects the location
of the installed info files and man pages to be under "gdbada".
* Pass LDFLAGS through to the build via MAKE_FLAGS so that pkgsrc's rpath
flags are passed to the linker.
* Remove deprecated USE_NEW_TEXINFO.
* List info files in the PLIST instead of the package Makefile.
Bump the PKGREVISION to 2.
it is broken on 3.0, and makes the compilation fail on -current,
because the name of the dynamic library is transformed by bl3
and then the transformed name is handed off to ar(1), which then
doesn't find it.
Bump PKGREVISION.
The 1.3.0rc5 release includes a number of minor bugfixes, including a
workaround for getting proper timestamps in chrooted process logs
if glibc-2.3 is present, and a fix for daemon processes hanging when
shutting down on Mac OS X.
info files for both emacs and xemacs. Install the info files correctly
by handling the case where there may be split info files. List the info
files in the PLIST. Use EMACS_MODULES where appropriate to replace the
conditional dependency on xemacs-packages. Bump the PKGREVISION.
on xemacs-packages. In the "lookup" option dependency, correct the
package dependency name in the xemacs case by fixing a typo. Bump the
PKGREVISION to 4.
modules that is required by the package. The allowed modules are
"base" and "leim". EMACS_USE_LEIM is deprecated and should be replaced
with EMACS_MODULES+=leim.
appropriately hides "makeinfo". Install possibly split info files
correctly, and install them all into ${EMACS_INFOPREFIX}, which is
correct for either Emacs or XEmacs. List the info files in the PLIST.
Bump the PKGREVISION to 2.
appropriate OWN_DIRS_PERMS definition.
* Simplify the patches by overriding the value of CONFDIR at build time
and at installation time.
* Honor PKGINFODIR and PKGMANDIR.
Bump PKGREVISION to 4 due to INSTALL script changes.
that is a purely user-settable variable to represent the relative
path under ${PREFIX} where info files are stored and "dir" files
are managed. PKGINFODIR defaults to "info". INFO_DIR still works,
but will be obsoleted after the 2006Q1 branch.
* Modify GNU_CONFIGURE_INFODIR to only honor ${PKGINFODIR} if the
package installs directly into ${PREFIX} and not some subdirectory
under ${PREFIX}. This fixes packages that don't really honor
$(infodir) all that well, and also avoids PLIST problems relating
to directory removal for those packages.
* Since the majority of Emacs Lisp packages use GNU_CONFIGURE, just
set GNU_CONFIGURE_INFODIR directly to ${EMACS_INFOPREFIX}, which is
the Emacs-distro-specific location for info files. Also pass
EMACS_INFOPREFIX through PLIST_SUBST for PLIST substitution.
* INFO_FILES should be defined if the package installs info files.
If the info files are not listed in the PLIST, then INFO_FILES
must list the filenames for the info files installed by the package,
which are assumed to be located in ${PREFIX}/${PKGINFODIR}.
* The plist module can now better detect info files listed in PLISTs
and exports a command to the pkginstall module to append info file
names to the +INFO_FILES scriptlet at install-time.
* The print-PLIST target is updated to properly list info files in
the auto-generated PLIST.
* The check-files code is updated to skip all "dir" Info database files.