|  | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>E.3. Release 12.2</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="release-12-3.html" title="E.2. Release 12.3" /><link rel="next" href="release-12-1.html" title="E.4. Release 12.1" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">E.3. Release 12.2</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="release-12-3.html" title="E.2. Release 12.3">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="release.html" title="Appendix E. Release Notes">Up</a></td><th width="60%" align="center">Appendix E. Release Notes</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 12.4 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="release-12-1.html" title="E.4. Release 12.1">Next</a></td></tr></table><hr></hr></div><div class="sect1" id="RELEASE-12-2"><div class="titlepage"><div><div><h2 class="title" style="clear: both">E.3. Release 12.2</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="release-12-2.html#id-1.11.6.7.4">E.3.1. Migration to Version 12.2</a></span></dt><dt><span class="sect2"><a href="release-12-2.html#id-1.11.6.7.5">E.3.2. Changes</a></span></dt></dl></div><p><strong>Release date: </strong>2020-02-13</p><p>
   This release contains a variety of fixes from 12.1.
   For information about new features in major release 12, see
   <a class="xref" href="release-12.html" title="E.5. Release 12">Section E.5</a>.
  </p><div class="sect2" id="id-1.11.6.7.4"><div class="titlepage"><div><div><h3 class="title">E.3.1. Migration to Version 12.2</h3></div></div></div><p>
    A dump/restore is not required for those running 12.X.
   </p><p>
    However, if you have any foreign key constraints referencing
    partitioned tables, see the two entries below about bugs in that
    feature.
   </p></div><div class="sect2" id="id-1.11.6.7.5"><div class="titlepage"><div><div><h3 class="title">E.3.2. Changes</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
      Add missing permissions checks for <code class="command">ALTER ... DEPENDS ON
      EXTENSION</code> (Álvaro Herrera)
     </p><p>
      Marking an object as dependent on an extension did not have any
      privilege check whatsoever.  This oversight allowed any user to mark
      routines, triggers, materialized views, or indexes as droppable by
      anyone able to drop an extension.  Require that the calling user own
      the specified object (and hence have privilege to drop it).
      (CVE-2020-1720)
     </p></li><li class="listitem"><p>
      Fix <code class="command">TRUNCATE ... CASCADE</code> to ensure all relevant
      partitions are truncated (Jehan-Guillaume de Rorthais)
     </p><p>
      If a partition of a partitioned table is truncated with
      the <code class="literal">CASCADE</code> option, and the partitioned table has
      a foreign-key reference from another table, that table must also be
      truncated.  The need to check this was missed if the referencing
      table was itself partitioned, possibly allowing rows to survive that
      violate the foreign-key constraint.
     </p><p>
      Hence, if you have foreign key constraints between partitioned
      tables, and you have done any
      partition-level <code class="command">TRUNCATE</code> on the referenced table,
      you should check to see if any foreign key violations exist.  The
      simplest way is to add a new instance of the foreign key constraint
      (and, once that succeeds, drop it or the original constraint).
      That may be prohibitive from a locking standpoint, however, in which
      case you might prefer to manually query for unmatched rows.
     </p></li><li class="listitem"><p>
      Fix failure to attach foreign key constraints to sub-partitions
      (Jehan-Guillaume de Rorthais)
     </p><p>
      When adding a partition to a level below the first level of a
      multi-level partitioned table, foreign key constraints referencing
      the top partitioned table were not cloned to the new partition,
      leading to possible constraint violations later.  Detaching and
      re-attaching the new partition is the cheapest way to fix this.
      However, if there are many partitions to be fixed, adding a new
      instance of the foreign key constraint might be preferable.
     </p></li><li class="listitem"><p>
      Fix possible crash during concurrent update on a partitioned table
      or inheritance tree (Tom Lane)
     </p></li><li class="listitem"><p>
      Ensure that row triggers on partitioned tables are correctly
      cloned to sub-partitions when appropriate
      (Álvaro Herrera)
     </p><p>
      User-defined triggers (but not triggers for foreign key or deferred
      unique constraints) might be missed when creating or attaching a
      partition.
     </p></li><li class="listitem"><p>
      Fix logical replication subscriber code to execute
      per-column <code class="literal">UPDATE</code> triggers when appropriate
      (Peter Eisentraut)
     </p></li><li class="listitem"><p>
      Avoid failure in logical decoding when a large transaction must be
      spilled into many separate temporary files (Amit Khandekar)
     </p></li><li class="listitem"><p>
      Fix possible crash or data corruption when a logical replication
      subscriber processes a row update (Tom Lane, Tomas Vondra)
     </p><p>
      This bug caused visible problems only if the subscriber's table
      contained columns that were not being copied from the publisher and
      had pass-by-reference data types.
     </p></li><li class="listitem"><p>
      Fix crash in logical replication subscriber after DDL changes on a
      subscribed relation (Jehan-Guillaume de Rorthais, Vignesh C)
     </p></li><li class="listitem"><p>
      Fix failure in logical replication publisher after a database crash
      and restart (Vignesh C)
     </p></li><li class="listitem"><p>
      Ensure that the effect
      of <code class="function">pg_replication_slot_advance()</code> on a physical
      replication slot will persist across restarts (Alexey Kondratov,
      Michael Paquier)
     </p></li><li class="listitem"><p>
      Improve efficiency of logical replication with <code class="literal">REPLICA
      IDENTITY FULL</code> (Konstantin Knizhnik)
     </p><p>
      When searching for an existing tuple during an update or delete
      operation, return the first matching tuple not the last one.
     </p></li><li class="listitem"><p>
      Fix base backup to handle database OIDs larger
      than <code class="literal">INT32_MAX</code> (Peter Eisentraut)
     </p></li><li class="listitem"><p>
      Ensure parallel plans are always shut down at the correct time
      (Kyotaro Horiguchi)
     </p><p>
      This oversight is known to result in <span class="quote">“<span class="quote">temporary file
      leak</span>”</span> warnings from multi-batch parallel hash joins.
     </p></li><li class="listitem"><p>
      Prevent premature shutdown of a Gather or GatherMerge plan node that
      is underneath a Limit node (Amit Kapila)
     </p><p>
      This avoids failure if such a plan node needs to be scanned more
      than once, as for instance if it is on the inside of a nestloop.
     </p></li><li class="listitem"><p>
      Improve efficiency of parallel hash join on CPUs with many cores
      (Gang Deng, Thomas Munro)
     </p></li><li class="listitem"><p>
      Avoid crash in parallel <code class="command">CREATE INDEX</code> when there
      are no free dynamic shared memory slots (Thomas Munro)
     </p><p>
      Fall back to a non-parallel index build, instead.
     </p></li><li class="listitem"><p>
      Avoid memory leak when there are no free dynamic shared memory slots
      (Thomas Munro)
     </p></li><li class="listitem"><p>
      Ignore the <code class="literal">CONCURRENTLY</code> option when performing an
      index creation, drop, or rebuild on a temporary table (Michael
      Paquier, Heikki Linnakangas, Andres Freund)
     </p><p>
      This avoids strange failures if the temporary table has
      an <code class="literal">ON COMMIT</code> action.  There is no benefit in
      using <code class="literal">CONCURRENTLY</code> for a temporary table anyway,
      since other sessions cannot access the table, making the extra
      processing pointless.
     </p></li><li class="listitem"><p>
      Fix possible failure when resetting expression indexes on temporary
      tables that are marked <code class="literal">ON COMMIT DELETE ROWS</code>
      (Tom Lane)
     </p></li><li class="listitem"><p>
      Fix possible crash in BRIN index operations
      with <code class="type">box</code>, <code class="type">range</code> and <code class="type">inet</code> data
      types (Heikki Linnakangas)
     </p></li><li class="listitem"><p>
      Fix crash during recursive page split in GiST index build (Heikki
      Linnakangas)
     </p></li><li class="listitem"><p>
      Fix handling of deleted pages in GIN indexes (Alexander Korotkov)
     </p><p>
      Avoid possible deadlocks, incorrect updates of a deleted page's
      state, and failure to traverse through a recently-deleted page.
     </p></li><li class="listitem"><p>
      Fix possible crash with a SubPlan (sub-<code class="literal">SELECT</code>)
      within a multi-row <code class="literal">VALUES</code> list (Tom Lane)
     </p></li><li class="listitem"><p>
      Fix failure in <code class="command">ALTER TABLE</code> when a column
      referenced in a <code class="literal">GENERATED</code> expression has been
      added or changed in type earlier in the
      same <code class="command">ALTER</code> command (Tom Lane)
     </p></li><li class="listitem"><p>
      Fix failure to insert default values for <span class="quote">“<span class="quote">missing</span>”</span>
      attributes during tuple conversion (Vik Fearing, Andrew Gierth)
     </p><p>
      This could result in values incorrectly reading as NULL, when
      they come from columns that had been added by <code class="literal">ALTER
      TABLE ADD COLUMN</code> with a constant default.
     </p></li><li class="listitem"><p>
      Fix unlikely panic in the checkpointer process, caused by opening
      relation segments that might already have been removed (Thomas Munro)
     </p></li><li class="listitem"><p>
      Fix crash after FileClose() failure (Noah Misch)
     </p><p>
      This issue could only be observed
      with <code class="varname">data_sync_retry</code> enabled, since otherwise
      FileClose() failure would be reported as a PANIC.
     </p></li><li class="listitem"><p>
      Fix handling of multiple <code class="literal">AFTER ROW</code> triggers on a
      foreign table (Etsuro Fujita)
     </p></li><li class="listitem"><p>
      Fix unlikely crash with pass-by-reference aggregate transition
      states (Andres Freund, Teodor Sigaev)
     </p></li><li class="listitem"><p>
      Improve error reporting in <code class="function">to_date()</code>
      and <code class="function">to_timestamp()</code>
      (Tom Lane, Álvaro Herrera)
     </p><p>
      Reports about incorrect month or day names in input strings could
      truncate the input in the middle of a multi-byte character, leading
      to an improperly encoded error message that could cause follow-on
      failures.  Truncate at the next whitespace instead.
     </p></li><li class="listitem"><p>
      Fix off-by-one result for <code class="literal">EXTRACT(ISOYEAR
      FROM <em class="replaceable"><code>timestamp</code></em>)</code> for BC dates
      (Tom Lane)
     </p></li><li class="listitem"><p>
      Ensure that the <code class="literal"><></code> operator for
      type <code class="type">char</code> reports indeterminate-collation errors as
      such, rather than as <span class="quote">“<span class="quote">cache lookup failed for collation
      0</span>”</span> (Tom Lane)
     </p></li><li class="listitem"><p>
      Avoid treating TID scans as sequential scans (Tatsuhito Kasahara)
     </p><p>
      A refactoring oversight caused TID scans (selection by CTID) to be
      counted as sequential scans in the statistics views, and to take
      whole-table predicate locks as sequential scans do.  The latter
      behavior could cause unnecessary serialization errors in
      serializable transaction mode.
     </p></li><li class="listitem"><p>
      Avoid stack overflow in <code class="literal">information_schema</code> views
      when a self-referential view exists in the system catalogs
      (Tom Lane)
     </p><p>
      A self-referential view can't work; it will always result in
      infinite recursion.  We handled that situation correctly when
      trying to execute the view, but not when inquiring whether it is
      automatically updatable.
     </p></li><li class="listitem"><p>
      Ensure that walsender processes always show NULL for transaction
      start time in <code class="structname">pg_stat_activity</code>
      (Álvaro Herrera)
     </p><p>
      Previously, the <code class="structfield">xact_start</code> column would
      sometimes show the process start time.
     </p></li><li class="listitem"><p>
      Improve performance of hash joins with very large inner relations
      (Thomas Munro)
     </p></li><li class="listitem"><p>
      Reduce spinlock contention when there are many active walsender
      processes (Pierre Ducroquet)
     </p></li><li class="listitem"><p>
      Fix placement of <span class="quote">“<span class="quote">Subplans Removed</span>”</span> field
      in <code class="command">EXPLAIN</code> output (Daniel Gustafsson, Tom Lane)
     </p><p>
      In non-text output formats, this field was emitted inside
      the <span class="quote">“<span class="quote">Plans</span>”</span> sub-group, resulting in syntactically
      invalid output.  Attach it to the parent Append or MergeAppend plan
      node as intended.  This causes the field to change position in text
      output format too: if there are any InitPlans attached to the same
      plan node, <span class="quote">“<span class="quote">Subplans Removed</span>”</span> will now appear before
      those.
     </p></li><li class="listitem"><p>
      Fix <code class="command">EXPLAIN</code>'s <code class="literal">SETTINGS</code> option
      to print as empty in non-text output formats (Tom Lane)
     </p><p>
      In the non-text output formats, fields are supposed to appear when
      requested, even if they have empty or zero values.
     </p></li><li class="listitem"><p>
      Allow the planner to apply potentially-leaky tests to child-table
      statistics, if the user can read the corresponding column of the
      table that's actually named in the query (Dilip Kumar, Amit Langote)
     </p><p>
      This change fixes a performance problem for partitioned tables that
      was created by the fix for CVE-2017-7484.  That security fix
      disallowed applying leaky operators to statistics for columns that
      the current user doesn't have permission to read directly.  However,
      it's somewhat common to grant permissions only on the parent
      partitioned table and not bother to do so on individual partitions.
      In such cases, the user can read the column via the parent, so
      there's no point in this security restriction; it only results in
      poorer planner estimates than necessary.
     </p></li><li class="listitem"><p>
      Fix planner errors induced by overly-aggressive collapsing of joins
      to single-row subqueries (Tom Lane)
     </p><p>
      This mistake led to errors such as <span class="quote">“<span class="quote">failed to construct the
      join relation</span>”</span>.
     </p></li><li class="listitem"><p>
      Fix <span class="quote">“<span class="quote">no = operator for
      opfamily <em class="replaceable"><code>NNNN</code></em></span>”</span> planner error when
      trying to match a <code class="literal">LIKE</code> or regex pattern-match
      operator to a binary-compatible index opclass (Tom Lane)
     </p></li><li class="listitem"><p>
      Fix edge-case crashes and misestimations in selectivity calculations
      for the <code class="literal"><@</code> and <code class="literal">@></code> range
      operators (Michael Paquier, Andrey Borodin, Tom Lane)
     </p></li><li class="listitem"><p>
      Fix incorrect estimation for <code class="literal">OR</code> clauses when
      using most-common-value extended statistics (Tomas Vondra)
     </p></li><li class="listitem"><p>
      Ignore system columns when applying most-common-value
      extended statistics (Tomas Vondra)
     </p><p>
      This prevents <span class="quote">“<span class="quote">negative bitmapset member not allowed</span>”</span>
      planner errors for affected queries.
     </p></li><li class="listitem"><p>
      Fix BRIN index logic to support hypothetical BRIN indexes
      (Julien Rouhaud, Heikki Linnakangas)
     </p><p>
      Previously, if an <span class="quote">“<span class="quote">index adviser</span>”</span> extension tried to
      get the planner to produce a plan involving a hypothetical BRIN
      index, that would fail, because the BRIN cost estimation code would
      always try to physically access the index's metapage.  Now it checks
      to see if the index is only hypothetical, and uses default
      assumptions about the index parameters if so.
     </p></li><li class="listitem"><p>
      Improve error reporting for attempts to use automatic updating of
      views with conditional <code class="literal">INSTEAD</code> rules (Dean Rasheed)
     </p><p>
      This has never been supported, but previously the error was thrown
      only at execution time, so that it could be masked by planner errors.
     </p></li><li class="listitem"><p>
      Prevent a composite type from being included in itself indirectly
      via a range type (Tom Lane, Julien Rouhaud)
     </p></li><li class="listitem"><p>
      Disallow partition key expressions that return pseudo-types, such
      as <code class="type">record</code> (Tom Lane)
     </p></li><li class="listitem"><p>
      Fix error reporting for index expressions of prohibited types
      (Amit Langote)
     </p></li><li class="listitem"><p>
      Fix dumping of views that contain only a <code class="literal">VALUES</code>
      list to handle cases where a view output column has been renamed
      (Tom Lane)
     </p></li><li class="listitem"><p>
      Ensure that data types and collations used
      in <code class="literal">XMLTABLE</code> constructs are accounted for when
      computing dependencies of a view or rule (Tom Lane)
     </p><p>
      Previously it was possible to break a view
      using <code class="literal">XMLTABLE</code> by dropping a type, if the type
      was not otherwise referenced in the view.  This fix does not
      correct the dependencies already recorded for existing views, only
      for newly-created ones.
     </p></li><li class="listitem"><p>
      Prevent unwanted downcasing and truncation of RADIUS authentication
      parameters (Marcos David)
     </p><p>
      The <code class="filename">pg_hba.conf</code> parser mistakenly treated these
      fields as SQL identifiers, which in general they aren't.
     </p></li><li class="listitem"><p>
      Transmit incoming <code class="command">NOTIFY</code> messages to the client
      before sending <code class="literal">ReadyForQuery</code>, rather than after
      (Tom Lane)
     </p><p>
      This change ensures that, with libpq and other client libraries that
      act similarly to it, any notifications received during a transaction
      will be available by the time the client thinks the transaction is
      complete.  This probably makes no difference in practical
      applications (which would need to cope with asynchronous
      notifications in any case); but it makes it easier to build test
      cases with reproducible behavior.
     </p></li><li class="listitem"><p>
      Fix bugs in handling of non-blocking I/O when using GSSAPI
      encryption (Tom Lane)
     </p><p>
      These errors could result in dropping data (usually leading to
      subsequent wire-protocol-violation errors) or in
      a <span class="quote">“<span class="quote">livelock</span>”</span> situation where a sending process goes to
      sleep although not all its data has been sent.
      Moreover, <span class="application">libpq</span> failed to keep separate
      encryption state for each connection, creating the possibility for
      failures in applications using multiple encrypted database
      connections.
     </p></li><li class="listitem"><p>
      Allow <span class="application">libpq</span> to parse all GSS-related
      connection parameters even when the GSSAPI code hasn't been compiled
      in (Tom Lane)
     </p><p>
      This makes the behavior similar to our SSL support, where it was
      long ago deemed to be a good idea to always accept all the related
      parameters, even if some are ignored or restricted due to lack of
      the feature in a particular build.
     </p></li><li class="listitem"><p>
      Fix incorrect handling of <code class="literal">%b</code>
      and <code class="literal">%B</code> format codes
      in <span class="application">ecpg</span>'s
      <code class="function">PGTYPEStimestamp_fmt_asc()</code> function
      (Tomas Vondra)
     </p><p>
      Due to an off-by-one error, these codes would print the wrong month
      name, or possibly crash.
     </p></li><li class="listitem"><p>
      Avoid crash after an out-of-memory failure
      in <span class="application">ecpglib</span> (Tom Lane)
     </p></li><li class="listitem"><p>
      Fix
      parallel <span class="application">pg_dump</span>/<span class="application">pg_restore</span>
      to more gracefully handle failure to create worker processes
      (Tom Lane)
     </p></li><li class="listitem"><p>
      Prevent possible crash or lockup when attempting to terminate a
      parallel <span class="application">pg_dump</span>/<span class="application">pg_restore</span>
      run via a signal (Tom Lane)
     </p></li><li class="listitem"><p>
      In <span class="application">pg_upgrade</span>, look inside arrays and
      ranges while searching for non-upgradable data types in tables
      (Tom Lane)
     </p></li><li class="listitem"><p>
      Apply more thorough syntax checking
      to <span class="application">createuser</span>'s
      <code class="option">--connection-limit</code> option (Álvaro Herrera)
     </p></li><li class="listitem"><p>
      Cope with changes of the specific type referenced by a PL/pgSQL
      composite-type variable in more cases (Ashutosh Sharma, Tom Lane)
     </p><p>
      Dropping and re-creating the composite type referenced by a PL/pgSQL
      variable could lead to <span class="quote">“<span class="quote">could not open relation with
      OID <em class="replaceable"><code>NNNN</code></em></span>”</span> errors.
     </p></li><li class="listitem"><p>
      Avoid crash in <code class="filename">postgres_fdw</code> when trying to
      send a command like <code class="literal">UPDATE remote_tab SET (x,y) = (SELECT
      ...)</code> to the remote server (Tom Lane)
     </p></li><li class="listitem"><p>
      In <code class="filename">contrib/dict_int</code>,
      reject <code class="varname">maxlen</code> settings less than one
      (Tomas Vondra)
     </p><p>
      This prevents a possible crash with silly settings for that parameter.
     </p></li><li class="listitem"><p>
      Disallow NULL category values
      in <code class="filename">contrib/tablefunc</code>'s
      <code class="function">crosstab()</code> function (Joe Conway)
     </p><p>
      This case never worked usefully, and it would crash on some
      platforms.
     </p></li><li class="listitem"><p>
      Fix <span class="application">configure</span>'s probe for
      OpenSSL's <code class="function">SSL_clear_options()</code> function so that
      it works with OpenSSL versions before 1.1.0 (Michael Paquier, Daniel
      Gustafsson)
     </p><p>
      This problem could lead to failure to set the SSL compression option
      as desired, when <span class="productname">PostgreSQL</span> is built against
      an old version of OpenSSL.
     </p></li><li class="listitem"><p>
      Mark some timeout and statistics-tracking GUC variables
      as <code class="literal">PGDLLIMPORT</code>, to allow extensions to access
      them on Windows (Pascal Legrand)
     </p><p>
      This applies to
      <code class="literal">idle_in_transaction_session_timeout</code>,
      <code class="literal">lock_timeout</code>,
      <code class="literal">statement_timeout</code>,
      <code class="literal">track_activities</code>,
      <code class="literal">track_counts</code>, and
      <code class="literal">track_functions</code>.
     </p></li><li class="listitem"><p>
      Avoid memory leak in sanity checks for <span class="quote">“<span class="quote">slab</span>”</span> memory
      contexts (Tomas Vondra)
     </p><p>
      This isn't an issue for production builds, since they wouldn't
      ordinarily have memory context checking enabled; but the leak could
      be quite severe in a debug build.
     </p></li><li class="listitem"><p>
      Fix multiple statistics entries reported by the LWLock statistics
      mechanism (Fujii Masao)
     </p><p>
      The LWLock statistics code (which is not built by default; it
      requires compiling with <code class="option">-DLWLOCK_STATS</code>)
      could report multiple entries for the same LWLock and backend
      process, as a result of faulty hashtable key creation.
     </p></li><li class="listitem"><p>
      Fix race condition that led to delayed delivery of interprocess
      signals on Windows (Amit Kapila)
     </p><p>
      This caused visible timing oddities in <code class="command">NOTIFY</code>,
      and perhaps other misbehavior.
     </p></li><li class="listitem"><p>
      Fix handling of a corner-case error result from
      Windows' <code class="function">ReadFile()</code> function
      (Thomas Munro, Juan José Santamaría Flecha)
     </p><p>
      So far as is known, this oversight just resulted in noisy log
      messages, not any actual query misbehavior.
     </p></li><li class="listitem"><p>
      On Windows, retry a few times after
      an <code class="literal">ERROR_ACCESS_DENIED</code> file access failure
      (Alexander Lakhin, Tom Lane)
     </p><p>
      This helps cope with cases where a file open attempt fails because
      the targeted file is flagged for deletion but not yet actually gone.
      <span class="application">pg_ctl</span>, for example, frequently failed
      with such an error when probing to see if the postmaster had shut
      down yet.
     </p></li><li class="listitem"><p>
      On Windows, work around sharing violations for the postmaster's log
      file when <span class="application">pg_ctl</span> is used to start the
      postmaster very shortly after it's been stopped, for example by
      <code class="literal">pg_ctl restart</code> (Alexander Lakhin)
     </p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="release-12-3.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="release.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="release-12-1.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">E.2. Release 12.3 </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> E.4. Release 12.1</td></tr></table></div></body></html>
 |