Preliminary pass at release note editing.

This commit is contained in:
Tom Lane 2005-08-24 22:03:14 +00:00
parent cc88ed6303
commit bd19ee3457

View File

@ -1,5 +1,5 @@
<!--
$PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.361 2005/08/24 19:41:33 momjian Exp $
$PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.362 2005/08/24 22:03:14 tgl Exp $
Typical markup:
@ -23,7 +23,7 @@ pg_[A-Za-z0-9_] <application>
<title>Release date</title>
<simpara>2005-1?-??, Current as of 2005-08-24</simpara>
</note>
<sect2>
<title>Overview</title>
@ -49,24 +49,7 @@ pg_[A-Za-z0-9_] <application>
<varlistentry>
<term>
Automatically use indexes for <function>MIN()</> and
<function>MAX()</> (Tom)
</term>
<listitem>
<para>
In previous releases, the only way to use an index for
<function>MIN()</> or <function>MAX()</> was to rewrite the
query as <command>SELECT col FROM tab ORDER BY col LIMIT 1</>.
Index usage now happens automatically.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
Add in-memory bitmaps which allows multiple indexes to be merged
in a single query (Tom)
Allow index scans to use an intermediate in-memory bitmap (Tom)
</term>
<listitem>
@ -75,12 +58,16 @@ pg_[A-Za-z0-9_] <application>
lookups on a table. With this feature, if a query has
<command>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 do lookups on the
col1 index and the col2 index and combine them in memory to do
heap lookups on rows matching both the col1 and col2
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.
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.
</para>
</listitem>
</varlistentry>
@ -96,8 +83,8 @@ pg_[A-Za-z0-9_] <application>
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 it is restarted. New
syntax includes <command>PREPARE TRANSACTION</> and
prepared transaction can be committed after the machine is
restarted. New syntax includes <command>PREPARE TRANSACTION</> and
<command>COMMIT/ROLLBACK PREPARED</>. A new system view
<literal>pg_prepared_xacts</> has also been added.
</para>
@ -122,7 +109,7 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Have optionally have login capability
Have login capability (optionally)
</para>
</listitem>
@ -134,40 +121,58 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Inherit permission from other member roles
Hold access permissions for database objects
</para>
</listitem>
<listitem>
<para>
Switch to another member role using <command>SET ROLE</>
Inherit permissions from other roles it is a member of
</para>
</listitem>
</itemizedlist>
<para>
So, once a user logs into a role, she inherits capabilities of
Once a user logs into a role, she obtains capabilities of
the login role plus any inherited roles, and can use
<command>SET ROLE</> to switch to other member roles. This
change also replaces <literal>pg_shadow</> and
<literal>pg_group</> by with new role-capable catalogs
<literal>pg_authid</> and <literal>pg_auth_members</>. The old
tables are redefined as views on the new role tables.
<command>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 <structname>pg_shadow</> and
<structname>pg_group</> by new role-capable catalogs
<structname>pg_authid</> and <structname>pg_auth_members</>. The old
tables are redefined as read-only views on the new role tables.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
Move <filename>/contrib/pgautovacuum</> into the main server
Automatically use indexes for <function>MIN()</> and
<function>MAX()</> (Tom)
</term>
<listitem>
<para>
In previous releases, the only way to use an index for
<function>MIN()</> or <function>MAX()</> was to rewrite the
query as <command>SELECT col FROM tab ORDER BY col LIMIT 1</>.
Index usage now happens automatically.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
Move <filename>/contrib/pg_autovacuum</> into the main server
(Alvaro Herrera)
</term>
<listitem>
<para>
Moving pgautovacuum from <filename>/contrib</> allows it to be
Integrating autovacuum into the server allows it to be
automatically started and stopped in sync with the database
server, and allows for pgautovacuum to be configured from
server, and allows autovacuum to be configured from
<filename>postgresql.conf</>.
</para>
</listitem>
@ -185,8 +190,25 @@ pg_[A-Za-z0-9_] <application>
allows <command>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, and to reduce the locking requirements to maintain
referential integrity.
locking. In particular this reduces the locking requirements
imposed by referential integrity checks.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
Add dependencies on shared objects, specifically roles
(Alvaro)
</term>
<listitem>
<para>
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 <quote>orphan</> objects by
deleting their owner. While this could be recovered from, it
was messy and unpleasant.
</para>
</listitem>
</varlistentry>
@ -205,8 +227,8 @@ pg_[A-Za-z0-9_] <application>
<para>
The 8.0 release announced that the <function>to_char()</> function
for intervals would be removed in 8.1. However, since no better API
has been suggested, to_char(interval) has been enhanced in 8.1 and
will remain in the server.
has been suggested, <function>to_char(interval)</> has been enhanced in
8.1 and will remain in the server.
</para>
<para>
@ -217,19 +239,19 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Change add_missing_from to 'false'
<varname>add_missing_from</> is now false by default (Neil)
</para>
<para>
Generate an error if a table used in a query without a
<command>FROM</> reference (Neil) This command, <command>SELECT
pg_class.*</>, now generates an error.
By default, we now generate an error if a table is used in a query
without a <command>FROM</> reference. The old behavior is still
available, but the parameter must be set to 'true' to obtain it.
</para>
</listitem>
<listitem>
<para>
Cause input of a zero-length strings ('') for float4/float8/oid
to throw an error, rather than treat it as a zero (Neil)
Cause input of a zero-length string ('') for float4/float8/oid
to throw an error, rather than treating it as a zero (Neil)
</para>
<para>
This change is consistent with the current handling of
@ -240,18 +262,18 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Change <varname>default_with_oids</> to default to false (Neil)
<varname>default_with_oids</> is now false by default (Neil)
</para>
<para>
With this option set to false, user-created tables no longer have
an the usually-invisible OID column unless <command>WITH OIDS</>
the usually-invisible OID column unless <command>WITH OIDS</>
is specified in <command>CREATE TABLE</>. Though OIDs have
existed in all previous releases of
existed in all releases of
<productname>PostgreSQL</productname>, their use is limited
because they are only four bytes long and the counter is unique
because they are only four bytes long and the counter is shared
across all installed databases. The preferred way of uniquely
identifying rows is via sequences and <command>SERIAL</>, which
has been supported since <productname>PostgreSQL</productname>
have been supported since <productname>PostgreSQL</productname>
6.4.
</para>
</listitem>
@ -263,22 +285,29 @@ pg_[A-Za-z0-9_] <application>
</para>
<para>
Currently <productname>PostgreSQL</productname> processes a
backslash in a string as preceeding a character that requires
special processing, e.g. <literal>\n</> or <literal>\010</>.
backslash in a string literal as introducing a special escape sequence,
e.g. <literal>\n</> or <literal>\010</>.
While this allows easy entry of special values, it is
non-standard and makes porting of application from other
non-standard and makes porting of applications from other
databases more difficult. For this reason, the
<productname>PostgreSQL</productname> project is planning to
remove the special meaning of backslashes in strings. For
backward compatibility and for users who want special backslash
processing, a new string type will be created. This new string
type is formed by having an E precede the single quote that
starts the string, e.g. <literal>E'hi\n'</>. While this release
does not change the handling of backslashes in strings, it does
add several new GUC variables to help users migrate applications
processing, a new string syntax has been created. This new string
syntax is formed by writing an <literal>E</> immediately preceding the
single quote that starts the string, e.g. <literal>E'hi\n'</>. While
this release does not change the handling of backslashes in strings, it
does add new GUC variables to help users migrate applications
for future releases:
</para>
<itemizedlist>
<listitem>
<para>
<varname>standard_conforming_strings</> - does this release
treat backslashes literally in ordinary strings?
</para>
</listitem>
<listitem>
<para>
@ -287,36 +316,24 @@ pg_[A-Za-z0-9_] <application>
</para>
</listitem>
<listitem>
<para>
<varname>escape_string_syntax</> - does this release support
the E'' syntax?
</para>
</listitem>
<listitem>
<para>
<varname>standard_conforming_strings</> - does this release
treat backslashes literally in ordinary strings?
</para>
</listitem>
</itemizedlist>
<para>
The last two values are read-only and should assist in the
porting of applications. Applications can retrieve these values
to know how backslashes are processed. In a later release,
standard_conforming_strings will be true, meaning backslashes
will be treated literally in non-E strings. To prepare for this
change, use E'' strings in places that need special backslash
processing, and turn on escape_string_warning to find additional
strings that need to be converted to use <literal>E''</>. Also,
use two single-quotes ('') to embed a literal single-quote
in a string, rather than the PostgreSQL-supported syntax of
backslash single-quote (\'). The former is standards-conforming
and does not require the use of the E'' string syntax. You can
also use the $$ string syntax, which does not treat backslashes
The <varname>standard_conforming_strings</> value is read-only.
Applications can retrieve the value to know how backslashes are
processed. (Presence of the parameter can also be taken as an
indication that <literal>E''</> string syntax is supported.) In a
future release, <varname>standard_conforming_strings</> will be true,
meaning backslashes will be treated literally in non-E strings. To
prepare for this change, use <literal>E''</> strings in places that
need special backslash processing, and turn on
<varname>escape_string_warning</> to find additional strings that need
to be converted to use <literal>E''</>. Also, use two single-quotes
(<literal>''</>) to embed a literal single-quote in a string, rather
than the PostgreSQL-supported syntax of backslash single-quote
(<literal>\'</>). The former is standards-conforming and does not
require the use of the <literal>E''</> string syntax. You can also use
the <literal>$$</> string syntax, which does not treat backslashes
specially.
</para>
</listitem>
@ -401,7 +418,11 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Change WAL CRC records from 64bit to 32bit (Tom)
Change WAL record CRCs from 64-bit to 32-bit (Tom)
</para>
<para>
We determined that the extra cost of computing 64-bit CRCs was
significant, and the gain in reliability too marginal to justify it.
</para>
</listitem>
@ -431,7 +452,8 @@ pg_[A-Za-z0-9_] <application>
<para>
Since a crash during <command>CREATE TABLE</> would cause the
table to be dropped during recovery, there is no reason to WAL
log as the table is loaded.
log as the table is loaded. (Logging still happens if WAL
archiving is enabled, however.)
</para>
</listitem>
@ -451,9 +473,9 @@ pg_[A-Za-z0-9_] <application>
To prevent partial disk writes from corrupting the database,
<productname>PostgreSQL</productname> writes a complete copy of
each database disk page to WAL the first time it is modified
after a checkpoint. This turns off that functionality for users
with battery-backed disk caches where partial page writes cannot
happen.
after a checkpoint. This option turns off that functionality for more
speed. This is safe to use with battery-backed disk caches where
partial page writes cannot happen.
</para>
</listitem>
@ -463,10 +485,10 @@ pg_[A-Za-z0-9_] <application>
on table constraints (Simon)
</para>
<para>
This allows for a type of table partitioning. If child table
placed in a different tablespaces using appropriate
This allows for a type of table partitioning. If child tables
store separate key ranges and this is enforced using appropriate
<command>CHECK</> constraints, the optimizer will skip child
table accesses if the constraint guarantees no matching rows
table accesses when the constraint guarantees no matching rows
exist in the child table.
</para>
</listitem>
@ -505,17 +527,17 @@ pg_[A-Za-z0-9_] <application>
Prevent problems due to transaction ID (XID) wraparound (Tom)
</para>
<para>
This was accomplished by warning the transaction counter is near
the the earliest transaction id determined by the database whose
last vacuum is the oldest. If the limit is reached, the server
will no longer accept queries.
The server will now warn when the transaction counter approaches
the wraparound point. If the counter becomes too close to wraparound,
the server will stop accepting queries. This ensures that data is
not lost before needed vacuuming is performed.
</para>
</listitem>
<listitem>
<para>
Fix problem of object ID (OID) wraparound conflicting with
existing system objects (Tom)
Fix problems with object IDs (OIDs) conflicting with existing system
objects after the OID counter has wrapped around (Tom)
</para>
</listitem>
@ -607,6 +629,11 @@ pg_[A-Za-z0-9_] <application>
Add GUC variables to control TCP/IP keep-alive times for idle,
interval, and count (Oliver Jowett)
</para>
<para>
These values can be changed to allow more rapid detection of
lost client connections.
</para>
</listitem>
<listitem>
@ -615,8 +642,8 @@ pg_[A-Za-z0-9_] <application>
</para>
<para>
Using <command>ALTER USER</> and <command>ALTER DATABASE</>,
limits can now be enforced on the maximum number of users who
can connect as as a specific user or to a specific database.
limits can now be enforced on the maximum number of sessions that
can concurrently connect as a specific user or to a specific database.
Setting the limit to zero disables user or database connections.
</para>
</listitem>
@ -696,10 +723,10 @@ pg_[A-Za-z0-9_] <application>
UPDATE/SHARE</> (Hans-Juergen Schoenig)
</para>
<para>
While <command>SET</> statement_timeout allows a query taking
over a certain amount of time to be cancelled, the <command>NO
WAIT</> option allows a query to be canceled as soon as a
<command>SELECT ... FOR UPDATE/SHARE</> cannot immediately
While <command>SET</> <varname>statement_timeout</> allows a query
taking over a certain amount of time to be cancelled, the
<command>NOWAIT</> option allows a query to be canceled as soon as a
<command>SELECT ... FOR UPDATE/SHARE</> command cannot immediately
acquire a row lock.
</para>
</listitem>
@ -733,10 +760,12 @@ pg_[A-Za-z0-9_] <application>
by the object owner (Stephen Frost)
</para>
<para>
Prior releases allowed only the super-user to change object owners,
even if the current owner was executing the command and the new
owner was in the same group. With roles such transfers are now
possible.
Prior releases allowed only superusers to change object owners.
Now, ownership can be transferred if the user executing the command
owns the object and would be able to create it as the new owner
(that is, the user is a member of the new owning role and that role
has the CREATE permission that would be needed to create the object
afresh).
</para>
</listitem>
@ -771,12 +800,12 @@ pg_[A-Za-z0-9_] <application>
single command (Alvaro)
</para>
<para>
Because of referential integrity checks, it is impossible to
Because of referential integrity checks, it is not allowed to
truncate a table that is part of a referential integrity
constraint. Using this new functionality, <command>TRUNCATE</>
can be used to truncate all tables involved in referential
integrity if they are truncated in a single <command>TRUNCATE</>
command.
can be used to truncate such tables, if both tables involved in
a referential integrity constraint are truncated in a single
<command>TRUNCATE</> command.
</para>
</listitem>
@ -807,7 +836,7 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
On Win32, display better sub-second precision in
On Windows, display better sub-second precision in
<command>EXPLAIN ANALYZE</> (Magnus)
</para>
</listitem>
@ -818,8 +847,9 @@ pg_[A-Za-z0-9_] <application>
(Tom)
</para>
<para>
Prior releases accumulated trigger execution time as part of the
total execution time.
Prior releases included trigger execution time as part of the
total execution time, but did not show it separately. It is now
possible to see how much time is spent in each trigger.
</para>
</listitem>
@ -835,7 +865,7 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Have <command>SHOW ALL</> include variable descriptions
Make <command>SHOW ALL</> include variable descriptions
(Matthias Schmidt)
</para>
<para>
@ -846,16 +876,16 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Have initdb create new standard database called
<literal>postgres</> and convert utilities to use
Make initdb create a new standard database called
<literal>postgres</>, and convert utilities to use
<literal>postgres</> rather than <literal>template1</> for
standard lookups (Dave)
</para>
<para>
In prior releases, template1 was used both as a default
In prior releases, <literal>template1</> was used both as a default
connection for utilities like createuser, and as a template for
new databases. This caused <command>CREATE DATABASE</> to
sometimes fail because a new database cannot be created if
sometimes fail, because a new database cannot be created if
anyone else is in the template database. With this change, the
default connection database is now <literal>postgres</>, meaning
it is much less likely someone will be using
@ -884,9 +914,6 @@ pg_[A-Za-z0-9_] <application>
Add <function>MAX()</> and <function>MIN()</> aggregates for
array types (Koju Iijima)
</para>
<para>
How does this work?
</para>
</listitem>
<listitem>
@ -899,7 +926,7 @@ pg_[A-Za-z0-9_] <application>
If the format specification contains <literal>CC</> and a year
specification is <literal>YYY</> or longer, ignore the
<literal>CC</>. If the year specification is <literal>YY</> or
shorter, interpret <literal>CC</> as the previous century. ?
shorter, interpret <literal>CC</> as the previous century.
</para>
</listitem>
@ -927,7 +954,7 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Add support for <command>NUMERIC ^ NUMERIC</> based on
Add support for <command>numeric ^ numeric</> based on
<function>power(numeric, numeric)</>
</para>
<para>
@ -943,7 +970,7 @@ pg_[A-Za-z0-9_] <application>
</para>
<para>
In previous releases, modulus for large values sometimes
returned negative results due to the rounding of the quotient.
returned negative results due to rounding of the quotient.
</para>
</listitem>
@ -1001,7 +1028,7 @@ pg_[A-Za-z0-9_] <application>
</para>
<para>
These functions take a variable number of arguments and return
the greatest or least value.
the greatest or least value among the arguments.
</para>
</listitem>
@ -1020,8 +1047,8 @@ pg_[A-Za-z0-9_] <application>
Add <function>regexp_replace()</> (Atsushi Ogawa)
</para>
<para>
This allows regular expression replacement, like sed. A
four-argument version also allows for global (replace all) and
This allows regular expression replacement, like sed. An optional
flag argument allows selection of global (replace all) and
case-insensitive modes.
</para>
</listitem>
@ -1049,7 +1076,7 @@ pg_[A-Za-z0-9_] <application>
(not fixed 24-hour periods) to be added to dates who's result
includes a daylight savings time adjustment period. Therefore,
while in previous releases <literal>1 day</> and <literal>24
hours</> where interchangeable interval periods, in this release
hours</> were interchangeable interval values, in this release
they are treated differently, e.g.
<programlisting>
'2005-05-03 00:00:00 EST' + '1 day' = '2005-05-04 00:00:00-04'
@ -1157,13 +1184,13 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Add <function>pg_rotate_logfile()</> to force rotation of the
server log file (Dave Page,
server log file (Dave Page, Andreas Pflug)
</para>
</listitem>
<listitem>
<para>
Change <literal>pg_stat_*</> views to show TOAST tables (Tom)
Change <literal>pg_stat_*</> views to include TOAST tables (Tom)
</para>
</listitem>
@ -1178,7 +1205,7 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Rename some encodings to be more consistent and to follow
international standards(Bruce)
international standards (Bruce)
</para>
<para>
<itemizedlist>
@ -1228,7 +1255,7 @@ pg_[A-Za-z0-9_] <application>
<para>
Previously only one and two-byte <literal>UTF8</> characters
were supported. This is particularly important for support for
some Chinese character.
some Chinese characters.
</para>
</listitem>
@ -1242,11 +1269,12 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Allow the UTF8 encoding to work on Win32 (Magnus)
Allow the UTF8 encoding to work on Windows (Magnus)
</para>
<para>
This is done by mapping UTF8 to the Win32-native UTF16
This is done by mapping UTF8 to the Windows-native UTF16
implementation.
</para>
</listitem>
</itemizedlist>
@ -1295,7 +1323,7 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Move language handlers into the <literal>pg_catalog</> schema
Move language handler functions into the <literal>pg_catalog</> schema
</para>
<para>
This makes it easier to drop the public schema if desired.
@ -1321,7 +1349,7 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Check function syntax as <command>CREATE FUNCTION</> time,
Check function syntax at <command>CREATE FUNCTION</> time,
rather than at runtime (Neil)
</para>
<para>
@ -1344,7 +1372,8 @@ pg_[A-Za-z0-9_] <application>
</para>
<para>
This is a byproduct of the newly added <command>OUT</> and
<command>INOUT</> functionality.
<command>INOUT</> functionality. <command>RETURN</> can
be omitted when it is not needed to provide the function result.
</para>
</listitem>
@ -1511,8 +1540,8 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Prevent psql <command>\x</> (expanded mode) from affecting other
backslash output (Neil)
Prevent psql <command>\x</> (expanded mode) from affecting
backslash-command displays (Neil)
</para>
</listitem>
@ -1528,7 +1557,7 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Have psql <command>\d</> show tablespace of indexes (Qingqing
Make psql <command>\d</> show tablespaces of indexes (Qingqing
Zhou)
</para>
</listitem>
@ -1541,8 +1570,8 @@ pg_[A-Za-z0-9_] <application>
<para>
This allows the user to just add <command>\h</> to the front of
the syntax error query and get help on the supported syntax.
Previously any additional query text beyond the help topics
supported had to be removed to use <command>\h</>.
Previously any additional query text beyond the command name
had to be removed to use <command>\h</>.
</para>
</listitem>
@ -1553,7 +1582,7 @@ pg_[A-Za-z0-9_] <application>
</para>
<para>
For example, using <literal>C</> locale <literal>100000</> would
be output as <literal>100,000.0</> and European locale might
be output as <literal>100,000.0</> while a European locale might
output this value as <literal>100.000,0</>.
</para>
</listitem>
@ -1650,7 +1679,7 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Add Kerberos 5 support for Win32 (Magnus)
Add Kerberos 5 support for Windows (Magnus)
</para>
</listitem>
@ -1725,7 +1754,7 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Allow libpq to be build thread-safe on Win32 (Dave Page)
Allow libpq to be built thread-safe on Windows (Dave Page)
</para>
</listitem>
@ -1756,7 +1785,7 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
Cleanup the <filename>/contrib/lo</> module (Tom)
Clean up the <filename>/contrib/lo</> module (Tom)
</para>
</listitem>
@ -1786,7 +1815,7 @@ pg_[A-Za-z0-9_] <application>
<listitem>
<para>
<filename>/contrib/pgcrypto</> (Marko Kreen)
Improve <filename>/contrib/pgcrypto</> (Marko Kreen)
</para>
<itemizedlist>
@ -1796,7 +1825,7 @@ pg_[A-Za-z0-9_] <application>
implementation of OpenPGP symmetric-key and public-key encryption
</para>
<para>
Supported are both RSA and Elgamal public-key algorithms.
Both RSA and Elgamal public-key algorithms are supported.
</para>
</listitem>