Move alpha release notes into a separate file; re-align sgml tags.
authorBruce Momjian
Thu, 29 Apr 2010 20:54:28 +0000 (20:54 +0000)
committerBruce Momjian
Thu, 29 Apr 2010 20:54:28 +0000 (20:54 +0000)
doc/src/sgml/release-9.0.sgml
doc/src/sgml/release-alpha.sgml [new file with mode: 0644]

index 8a6923555aa8581e2610d3ce6bcb39a920a6fb54..fd71d2d6ec5cbf0a9315943708fefc58a5540d61 100644 (file)
-
-
+
 
  
   Release 9.0
 
-  
-   Release date
-   2010-??-??
-  
+  
+   Release date
+   2010-??-??
+  
+
+  
+   Overview
+
+   
+    Based on overwhelming user demand, this release of
+    PostgreSQL adds features that have been requested
+    for years, like easy-to-use replication, a mass permission
+    facility, and anonymous blocks. While past major releases have
+    been quite conservative in their scope, this release shows a
+    bold new desire to provide facilities that every new and existing
+    user of PostgreSQL will embrace. This has all
+    been done with few incompatibilities. The major areas of
+    enhancement are:
+   
+
+   
+
+    
+
+    
+     
+      Allow continuous archive standby systems to accept read-only queries
+     
+    
+
+    
+     
+      Allow continuous archive (WAL) files to be streamed to a
+      standby system
+     
+    
+
+    
+     
+      Add the ability to make mass permission changes per
+       schema using the new 
+       linkend="SQL-GRANT">GRANT/REVOKE
+       IN SCHEMA clause
+     
+    
+
+    
+     
+      Add the ability to control large object permissions with
+      GRANT/REVOKE
+     
+    
+
+    
+     
+      Implement anonymous functions using the 
+      linkend="SQL-DO">DO statement
+     
+    
+
+    
+     
+      Allow function calls to supply parameter names and match them to named
+      parameters in the function definition (Pavel Stehule)
+     
+    
+
+    
+     
+      Install server-side language PL/pgSQL by default
+     
+    
+
+    
+     
+      Major PL/Perl enhancements
+     
+    
+
+    
+     
+      Allow SQL-compliant 
+      linkend="SQL-CREATETRIGGER">per-column triggers
+     
+    
+
+    
+     
+      Add deferrable
+      unique constraints
+     
+    
+
+    
+     
+      Have LISTEN/
+      linkend="SQL-NOTIFY">NOTIFY store events
+      in a memory queue, rather than a system table
+     
+    
+
+    
+     
+      Allow NOTIFY
+      to pass an optional string to listeners
+     
+    
+
+    
+     
+      Change VACUUM FULL to rewrite the entire table and
+      indexes, rather than moving around single rows to compact space
+     
+    
+
+    
+     
+      Add prefix support for the full text search synonym dictionary
+     
+    
+
+    
+     
+      Use red-black trees for GIN index creation
+     
+    
+
+    
+     
+      Add 
+      linkend="functions-binarystring-other">get_bit()
+      and set_bit() functions for bit
+      strings, mirroring those for bytea
+     
+    
+
+    
+     
+      Add the ability for clients to set an 
+      linkend="libpq-connect-application-name">application
+      name, which is displayed in
+      pg_stat_activity
+     
+    
+
+    
+     
+      Add support for compiling on 
+      linkend="install-win32-full">64-bit
+      Windows and running in 64-bit
+      mode
+     
+    
+
+    
+     
+      The above items are explained in more detail in the sections below.
+     
+    
+
+   
+
+  
+
+  
+
+  Migration to Version 9.0
+  CURRENT AS OF 2010-04-29
+
+  
+   A dump/restore using pg_dump is
+   required for those wishing to migrate data from any previous
+   release.
+  
+
+  
+   Observe the following incompatibilities:
+  
+
+  
+   Server Settings
+
+   
+
+    
+     
+      Remove server variable add_missing_from, which was
+      defaulted to off for many years (Tom Lane)
+     
+    
+
+    
+     
+      Remove server variable regex_flavor, which
+      was defaulted to 
+      linkend="posix-syntax-details">advanced
+      (e.g. Perl-regex compatible) for many years (Tom Lane)
+     
+    
+
+    
+     
+      It is now necessary to set 
+      linkend="guc-wal-level">wal_level to
+      archive to do continuous archiving.
+      (Heikki Linnakangas)
+     
+    
+
+   
+
+  
+
+  
+   Queries
+   
+
+   
+    
+     When querying a parent table,
+     do not do additional permission checks on child tables
+     returned as part of the query (Peter Eisentraut)
+    
+
+    
+     The SQL standard specifies this behavior.
+    
+   
+
+   
+    
+     Have fractional seconds conversion truncate rather than
+     round when using float-based dates/times (Tom Lane)
+    
+   
+
+   
+
+  
+
+  
+   String Handling
+   
+
+   
+    
+     Improve standards compliance of 
+     linkend="functions-similarto-regexp">SIMILAR TO
+     patterns and SQL-style substring() patterns (Tom Lane)
+    
+
+    
+     This includes treating ? and {...} as
+     pattern metacharacters, while they were simple literal characters
+     before; that corresponds to new features added in SQL:2008.
+     Also, ^ and $ are now treated as simple
+     literal characters; formerly they were treated as metacharacters,
+     as if the pattern were following POSIX rather than SQL rules.
+     Also, in SQL-standard substring(), use of parentheses
+     for nesting no longer interferes with capturing of a substring.
+     Also, processing of bracket expressions (character classes) is
+     now more standards-compliant.
+    
+   
+
+   
+    
+     Reject negative length values in 3-parameter 
+     linkend="functions-string-sql">substring()
+     for bit strings, per the SQL standard (Tom Lane)
+    
+   
+
+  
+
+  
+
+  
+   Object Renaming
+   
+
+    
+     
+      Tighten enforcement of column renaming when a child table inherits
+      the renamed column from an unrelated parent (KaiGai Kohei)
+     
+    
+
+    
+     
+      No longer rename index names and index column names when table
+      columns are renamed (Tom Lane)
+     
+
+     
+      Administrators still can rename such columns manually. Expression
+      index names are also not renamed. WHY ARE EXPRESSION INDEXES
+      SIGNIFICANT?
+     
+    
+
+   
+
+  
+
+  
+   PL/pgSQL Variables
+   
+
+
+    
+     
+      Have PL/pgSQL throw an error if a variable name conflicts with a
+      column name used in a query (Tom Lane)
+     
+
+     
+      This behavior can be changed via the server variable 
+      linkend="plpgsql-var-subst">plpgsql.variable_conflict,
+      or by the per-function option #variable_conflict.
+      The former behavior was to bind to variable names over
+      column names.
+     
+    
+
+    
+     
+      Remove PL/pgSQL's RENAME declaration option (Tom Lane)
+     
+
+     
+      Instead, use 
+      linkend="plpgsql-declaration-parameters">ALIAS,
+      which can now alias any variable, not just dollar sign
+      variables, e.g. $1.
+     
+    
+
+    
+     
+      PL/pgSQL no longer allows unquoted variables names that match SQL
+      reserved words (Tom Lane)
+     
+
+     
+      Variables can be double-quoted to avoid this restriction.
+     
+    
+   
+
+  
+
+  Changes
+
+  
+   Server
+
+   
+    Continuous Archiving
+    
+
+     
+      
+       Allow continuous archive standby systems to accept read-only queries
+       (Simon Riggs, Heikki Linnakangas)
+      
+
+      
+       This feature is called Hot Standby. There are new
+       postgresql.conf and recovery.conf
+       settings to enable this feature, as well as extensive
+       documentation.
+      
+     
+
+     
+      
+       Allow continuous archive (WAL) files to be streamed to a
+       standby system (Fujii Masao, Heikki Linnakangas)
+      
+
+      
+       Previously WAL files could be sent to standby systems only
+       as 16 megabytes files; this allows master changes to be sent to the
+       slave with very little delay. There are new postgresql.conf
+       and recovery.conf settings to enable this
+       feature, as well as extensive 
+       linkend="streaming-replication">documentation.
+      
+     
+
+     
+      
+       Add 
+       linkend="functions-recovery-info-table">pg_last_xlog_receive_location()
+       and pg_last_xlog_replay_location(), which
+       can be used to monitor standby server WAL
+       activity (Simon Riggs, Fujii Masao, Heikki Linnakangas)
+      
+     
+
+    
+
+   
+
+   
+    Performance
+    
+
+     
+      
+       Improve performance of finding inherited child tables (Tom Lane)
+      
+     
+
+     
+      
+       Allow per-tablespace sequential and random page cost variables
+       (seq_page_cost/random_page_cost) via
+       ALTER TABLESPACE
+       ... SET/RESET (Robert Haas)
+      
+     
+
+     
+      
+       Improve performance of 
+       linkend="SQL-TRUNCATE">TRUNCATE when
+       used in the same transaction as table creation (Tom Lane)
+      
+     
+
+     
+
+   
+
+   
+    Optimizer
+
+    
+     
+      
+       Allow IS NOT NULL restrictions to use indexes (Tom Lane)
+      
+
+      
+       This is particularly useful for finding
+       MAX()/MIN() values in indexes that also
+       contain NULLs.
+      
+     
+
+     
+      
+       Remove unnecessary outer
+       joins (Robert Haas)
+      
+
+      
+       Outer joins where the inner side is unique and not referenced in
+       the query are unnecessary and are therefore now removed.
+      
+     
+
+     
+      
+       Improve optimizer equivalence detection of <> boolean
+       tests (Tom Lane)
+      
+     
+    
+   
+
+   
+    <link linkend="geqo">GEQO</link>
+    
+
+     
+      
+       Use the same random seed everytime GEQO plans a query (Andres
+       Freund)
+      
+
+      
+       While the Genetic Query Optimizer (GEQO) still selects
+       random plans, it now selects the same random plans for
+       identical queries. You can modify 
+       linkend="guc-geqo-seed">geqo_seed to randomize
+       the starting value of the random plan generator.
+      
+     
+
+     
+      
+       Improve GEQO plan selection (Tom Lane).
+      
+
+      
+       This avoids the rare error, "failed to make a valid plan".
+      
+     
+
+    
+
+   
+
+   
+    Optimizer Statistics
+    
+
+     
+      
+       Improve ANALYZE
+       to support inheritance-tree statistics (Tom Lane)
+      
+
+      
+       This is particularly useful for partitioned tables.
+      
+     
+
+     
+      
+       Improve autovacuum
+       detection of when re-analyze is necessary (Tom Lane)
+      
+     
+
+     
+      
+       Improve optimizer statistics for greater/less-than comparisons
+       (Tom Lane)
+      
+
+      
+       When looking up optimizer statistics for greater/less-than comparisons,
+       if the comparison value is in the first or last histogram bucket,
+       use an index to generate the actual statistics. This is particularly
+       useful for columns that are always increasing, and hence often have
+       inaccurate statistics.
+      
+     
+
+     
+      
+       Allow setting of distinct statistics using 
+       linkend="SQL-ALTERTABLE">ALTER TABLE
+       (Robert Haas)
+      
+
+      
+       This allows user-override of the number or percentage of distinct
+       values for a column and optionally its child tables. This value
+       is normally computed by ANALYZE.
+      
+     
+
+    
+
+   
+
+   
+    Authentication
+    
+
+     
+      
+       Add support for 
+       linkend="auth-radius">RADIUS (Remote
+       Authentication Dial In User Service) authentication
+       (Magnus Hagander)
+      
+     
+
+
+     
+      
+       Allow LDAP
+       (Lightweight Directory Access Protocol) authentication
+       to operate in "search/bind" mode (Robert Fleming, Magnus)
+      
+
+      
+       This allows the user to be looked up first, then the system uses
+       the DN (Distinguished Name) returned for that user.
+      
+     
+
+     
+      
+       Add 
+       linkend="auth-pg-hba-conf">samehost
+       and samenet designations to
+       pg_hba.conf (Stef Walter)
+      
+
+      
+       These match the server's IP address and network address
+       respectively.
+      
+     
+
+    
+
+   
+
+   
+    Monitoring
+    
+
+     
+      
+       Add the ability for clients to set an 
+       linkend="libpq-connect-application-name">application
+       name, which is displayed in
+       pg_stat_activity (Dave Page)
+      
+     
+
+     
+      
+       Add an SQL state option (%e) to 
+       linkend="guc-log-line-prefix">log_line_prefix
+       (Guillaume Smet)
+      
+     
+
+     
+      
+       Write to the Windows event log in UTF16 encoding
+       (Itagaki Takahiro)
+      
+     
+
+    
+
+   
+
+   
+    Statistics Counters
+    
+
+     
+      
+       Add 
+       linkend="monitoring-stats-funcs-table">pg_stat_reset_shared('bgwriter')
+       to reset the cluster-wide shared statistics of the
+       bgwriter (Greg Smith)
+      
+     
+
+     
+      
+       Add 
+       linkend="monitoring-stats-funcs-table">pg_stat_reset_single_table_counters()
+       and pg_stat_reset_single_function_counters()
+       to allow the reseting of statistics counters for individual
+       tables and indexes (Magnus Hagander)
+      
+     
+
+    
+
+   
+
+   
+    Server Settings
+    
+
+     
+      
+       Allow setting of configuration variables based on 
+       linkend="sql-alterrole">database/role
+       combinations (Alvaro Herrera)
+      
+
+      
+       Previously only per-database and per-role setting were possible,
+       not combinations. All role and database settings are now stored
+       in the new pg_db_role_setting system table. A new
+       psql \drds command shows these settings.
+       Backwards-compatible system views do not show this information.
+      
+     
+
+     
+      
+       Add boolean variable 
+       linkend="guc-bonjour">bonjour, which
+       controls whether a Bonjour-enabled binary advertises
+       itself via Bonjour (Tom Lane)
+      
+
+      
+       The default is off, meaning it does not advertise.
+      
+     
+
+     
+      
+       Add boolean variable 
+       linkend="guc-enable-material">enable_material, which
+       controls the use of materialize nodes in the optimizer
+       (Robert Haas)
+      
+
+      
+       The default is on.
+      
+     
+
+     
+      
+       Log changed parameter values when postgresql.conf is
+       reloaded (Peter Eisentraut)
+      
+     
+
+     
+      
+       Add proper permissions for custom variables (Tom Lane)
+      
+
+      
+       Custom variables can now only be created by super-users,
+       but can be modified by ordinary users if variable
+       permissions allow it. This makes custom variables
+       appropriate for security settings. Previously, any user
+       could create or modify custom variables.
+      
+     
+
+    
+
+   
+
+  
+
+  
+   Queries
+   
+
+    
+     
+      Do SELECT
+      FOR UPDATE/SHARE processing after
+      applying LIMIT, so the number of rows returned
+      is always predictable (Tom Lane)
+     
+
+     
+      Previously, concurrent transactions could potentially cause
+      SELECT to return fewer rows than specified by
+      LIMIT. FOR UPDATE can still affect
+      ORDER BY ordering, but this can be corrected by using
+      FOR UPDATE in a subquery.
+     
+    
+
+    
+     
+      Allow mixing of traditional and SQL-standard 
+      linkend="SQL-LIMIT">LIMIT/OFFSET
+      syntax in the same query (Tom Lane)
+     
+    
+
+    
+     
+      Increase the supported frame options in 
+      linkend="SQL-WINDOW">window functions (Hitoshi
+      Harada)
+     
+
+     
+      This allows frames (RANGE or ROWS) to start
+      with CURRENT ROW, and to use the ROWS n
+      PRECEDING/FOLLOWING clause.
+     
+    
+
+    
+     
+      Have SELECT and CREATE TABLE AS return
+      row counts to the client
+      (Boszormenyi Zoltan)
+     
+
+     
+      psql does not display these counts.
+     
+    
+
+   
+
+   
+    Unicode Strings
+    
+
+     
+      
+       Add Unicode surrogate pair (dual 16-bit) support to
+       
+       linkend="sql-syntax-strings-uescape">U&
+       strings and identifiers (Peter Eisentraut)
+      
+     
+
+     
+      
+       Allow Unicode escapes in 
+       linkend="sql-syntax-strings-escape">E'...'
+       strings (Marko Kreen)
+      
+     
+
+    
+
+   
+
+  
+
+  
+   Object Manipulation
+   
+
+    
+     
+      Speed up CREATE
+      DATABASE by deferring flushes to disk (Andres
+      Freund, Greg Stark)
+     
+    
+
+    
+     
+      Allow comments only on
+      columns of tables, views, and composite types, not other
+      objects like indexes and TOAST tables (Tom Lane)
+     
+    
+
+    
+     
+      Allow the creation of 
+      linkend="SQL-CREATETYPE-enum">enumerate types with
+      no labels (Bruce Momjian)
+     
+
+     
+      This is useful for supporting binary upgrades.
+     
+    
+
+    
+     
+      Have columns defined with storage type MAIN remain on
+      the main heap page unless it cannot fit (Kevin Grittner)
+     
+
+     
+      Previously MAIN values were forced to TOAST
+      tables until the row size was one-quarter of the page size.
+     
+    
+
+   
+
+   
+    <command>ALTER</>
+    
+
+     
+      
+       Add ALTER
+       DEFAULT PRIVILEGES command to control privileges
+       of all newly-created objects (Petr Jelinek)
+      
+
+      
+       It currently supports tables, views, sequences, and functions, and
+       also has per-schema control.
+      
+     
+
+     
+      
+       Implement IF EXISTS for DROP COLUMN and
+       DROP CONSTRAINT  (Andres Freund)
+      
+     
+
+     
+      
+       Allow ALTER TABLE commands which rewrite tables to skip
+       WAL logging (Itagaki Takahiro)
+      
+
+      
+       Such operations either complete fully or are rolled back, so
+       WAL archiving can be skipped, unless running in continuous
+       archiving mode.
+      
+     
+
+    
+
+   
+
+   
+    <link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link>
+    
+
+     
+      
+       Add support for copying COMMENTS and STORAGE
+       to the CREATE TABLE ... LIKE INCLUDING command (Itagaki
+       Takahiro)
+      
+     
+
+     
+      
+       Add support for copying all attributes to the CREATE
+       TABLE LIKE INCLUDING command (Itagaki Takahiro)
+      
+     
+
+     
+      
+       Add the SQL-standard CREATE TABLE ... OF type command
+       (Peter Eisentraut)
+      
+
+      
+       This allows the creation of a table to match an existing composite
+       type. Additional constraints and defaults can be specified in the
+       command.
+      
+     
+
+    
+
+   
+
+   
+    Constraints
+    
+
+     
+      
+       Add deferrable
+       unique constraints (Dean Rasheed)
+      
+
+      
+       This allows UPDATE tab SET col = col + 1 to work on
+       columns that have a unique indexes or are marked as primary keys,
+       but DEFERRABLE INITIALLY DEFERRED must be used to mark
+       the constraint as deferred.
+      
+     
+
+     
+      
+       Generalize uniqueness constraints by allowing arbitrary operator
+       comparisons, not just equality (Jeff Davis)
+      
+
+      
+       This is enabled with the 
+       linkend="SQL-CREATETABLE-EXCLUDE">CREATE
+       TABLE CONSTRAINT ... EXCLUDE clause. While
+       uniqueness checks could be specified using this syntax,
+       the real value of this feature is in using complex
+       operators that do not have built-in constraints.
+      
+     
+
+     
+      
+       Improve the constraint violation error message to report the values
+       causing the failure (Itagaki Takahiro)
+      
+
+      
+       For example, a uniqueness constraint violation now reports Key
+       (x)=(2) already exists.
+      
+     
+
+    
+
+   
+
+   
+    Object Permissions
+    
+
+     
+      
+       Add the ability to make mass permission changes per
+       schema using the new 
+       linkend="SQL-GRANT">GRANT/REVOKE
+       IN SCHEMA clause (Petr Jelinek)
+      
+     
+
+     
+      
+       Add the ability to control large object permissions with
+       GRANT/REVOKE (KaiGai Kohei)
+      
+     
+
+    
+
+   
+
+  
+
+  
+   Utility Operations
+
+   
+
+    
+     
+      Have LISTEN/
+      linkend="SQL-NOTIFY">NOTIFY store events
+      in a memory queue, rather than a system table (Joachim
+      Wieland)
+     
+
+     
+      This greatly improves performance for these operations.
+     
+    
+
+    
+     
+      Allow NOTIFY
+      to pass an optional string to listeners (Joachim Wieland)
+     
+    
+
+    
+     
+      Allow CLUSTER
+      on all system tables (Tom Lane)
+     
+
+     
+      Global system tables still cannot be clustered.
+     
+    
+
+   
+
+   
+    <link linkend="SQL-COPY"><command>COPY</></link>
+    
+
+     
+      
+       Allow * as a parameter in FORCE QUOTE for
+       COPY CSV (Itagaki Takahiro)
+      
+
+      
+       This forces quotes for all CSV output columns.
+      
+     
+
+     
+      
+       Add new COPY syntax that allows parameters to be
+       specified in parentheses (Robert Haas, Emmanuel Cecchet)
+      
+
+      
+       This allows greater flexibility for future COPY options.
+       The old syntax is still supported.
+      
+     
+
+    
+
+   
+
+   
+    <link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link>
+    
+
+     
+      
+       Add new EXPLAIN (BUFFERS) to report query buffer
+       activity (Itagaki Takahiro)
+      
+
+      
+       log_*_stats log output, e.g. 
+       linkend="runtime-config-statistics-monitor">log_statement_stats,
+       no longer shows this information.
+      
+     
+
+     
+      
+       Add hash usage information to EXPLAIN output (Robert
+       Haas)
+      
+     
+
+     
+      
+       Allow EXPLAIN output in XML, JSON,
+       and YAML formats (Robert Haas, Greg Sabino Mullane)
+      
+     
+
+     
+      
+       Allow EXPLAIN options to be specified inside parentheses
+       (Robert Haas)
+      
+
+      
+       This allows for the expansion of EXPLAIN options. The
+       old syntax is still supported.
+      
+     
+
+    
+
+   
+
+   
+    <link linkend="SQL-VACUUM"><command>VACUUM</></link>
+    
+
+     
+      
+       Change VACUUM FULL to rewrite the entire table and
+       indexes, rather than moving around single rows to compact space
+       (Itagaki Takahiro, Tom Lane)
+      
+
+      
+       The previous method was usually slower and caused index bloat.
+      
+     
+
+     
+      
+       Add new VACUUM syntax that allows parameters to be
+       specified in parentheses (Itagaki Takahiro)
+      
+
+      
+       This allows greater flexibility for future VACUUM
+       options. The old syntax is still supported.
+      
+     
+
+    
+
+   
+
+   
+    Indexes
+    
+
+     
+      
+       Allow an index to be auto-named by not supplying an index name to
+       CREATE INDEX (Tom Lane)
+      
+     
+
+     
+      
+       Allow REINDEX
+       on system indexes (Tom Lane)
+      
+
+      
+       WAS THIS POSSIBLE ON ANY SYSTEM TABLE BEFORE? NON-HARDWIRED ONES?
+      
+     
+
+     
+      
+       Add point_ops opclass for GiST (Teodor Sigaev)
+      
+
+      
+       DETAILS?
+      
+     
+
+     
+      
+       Use red-black trees for GIN index creation
+       (Teodor Sigaev)
+      
+
+      
+       Red-black trees are self-balanced so allow for faster index
+     creation.
+      
+     
+
+    
+
+   
+
+  
+
+  
+   Data Types
+   
+
+    
+     
+      Allow hex values to be specified in 
+      linkend="datatype-binary">bytea strings
+      (Peter Eisentraut)
+     
+
+     
+      The variable 
+      linkend="guc-bytea-output">bytea_output controls
+      if hex (default) or octal escapes are used for bytea
+      output. (SWITCH DEFAULT FOR BETA? PETER) Libpq's
+      PQescapeByteaConn() now uses the hex format
+      for PostgreSQL 9.0 servers.
+     
+    
+
+    
+     
+      Allow 
+      linkend="guc-extra-float-digits">extra_float_digits
+      to be increased to 3 (Tom Lane)
+     
+
+     
+      The previous maximum extra_float_digits was 2.
+     
+    
+
+   
+
+   
+    <link linkend="textsearch">Full Text Search</link>
+    
+
+     
+      
+       Add prefix support for the full text search synonym dictionary
+       (Teodor Sigaev)
+      
+     
+
+     
+      
+       Add full text search filtering dictionaries (Teodor Sigaev)
+      
+
+      
+       Filtering dictionaries allow tokens to be modified and passed to
+       subsequent dictionaries.
+      
+     
+
+     
+      
+       Allow underscores in full text email addresses (Teodor Sigaev)
+      
+     
+
+     
+      
+       Use more standards-compliant rules for URL
+       parsing (Tom Lane)
+      
+     
+
+    
+
+   
+
+  
+
+  
+   Functions
+   
+
+    
+     
+      Allow case-insensitive 
+      linkend="functions-posix-regexp">regular expression
+      matching with UTF-8 server encodings.
+     
+
+     
+      Previously, only ASCII characters and single-byte
+      encodings worked properly. Other multi-byte, non-UTF-8
+      encodings are still broken for case-insensitive regular expression
+      matching.
+     
+    
+
+    
+     
+      Allow function calls to supply parameter names and match them to named
+      parameters in the function definition (Pavel Stehule)
+     
+
+     
+      For example, if a function is defined to take parameters a
+      and b, it can be called with func(7 AS a, 12
+      AS b) or func(12 AS b, 7 AS a).
+     
+    
+
+    
+     
+      Add support for 
+      linkend="functions-formatting">to_char()
+      scientific notation output (
+      linkend="functions-formatting-numeric-table">'EEEE')
+      (Pavel Stehule, Brendan Jurd)
+     
+    
+
+    
+     
+      Have to_char() honor 
+      linkend="functions-formatting-datetimemod-table">'FM'
+      (fill mode) in 'Y', 'YY', and
+      'YYY' specifications (Bruce Momjian, Tom Lane)
+     
+
+     
+      It was already honored by 'YYYY'.
+     
+    
+
+    
+     
+      Fix to_char() to output the proper localized
+      numeric and monetary characters on Windows
+      (Hiroshi Inoue, Itagaki Takahir, Bruce Momjian)
+     
+    
+
+    
+     
+      Correct calculations of 
+      linkend="functions-geometry-op-table">"overlap"
+      and "contains" operations over polygons (Teodor Sigaev)
+     
+    
+
+   
+
+   
+    Aggregates
+    
+
+     
+      
+       Allow aggregate functions to use ORDER BY (Andrew
+       Gierth)
+      
+
+      
+       For example, this is now supported, array_agg(a ORDER BY
+       b). This is useful for aggregates where the order of values is
+       significant.
+      
+     
+
+     
+      
+       Add the 
+       linkend="functions-aggregate-table">string_agg()
+       aggregate function which aggregates values into a single
+       string (Pavel Stehule)
+      
+
+      
+       An optional second argument allows specification of a delimiter.
+      
+     
+
+     
+      
+       Aggregate functions that are called with DISTINCT are
+       now passed NULL values if the aggregate transition function is
+       not marked as STRICT (Andrew Gierth)
+      
+
+      
+       For example, agg(DISTINCT x) might pass NULL x
+       values to agg().
+      
+     
+
+    
+
+   
+
+   
+    Bit Strings
+    
+
+     
+      
+       Add 
+       linkend="functions-binarystring-other">get_bit()
+       and set_bit() functions for bit
+       strings, mirroring those for bytea (Leonardo
+       F)
+      
+     
+
+     
+      
+       Implement 
+       linkend="functions-string-sql">OVERLAY()
+       (replace) for bit strings and bytea
+       (Leonardo F)
+      
+     
+
+    
+
+   
+
+   
+    Object Information Functions
+    
+
+     
+      
+       Add 
+       linkend="functions-admin-dbsize">pg_table_size()
+       and pg_indexes_size() to provide a more
+       user-friendly interface to the pg_relation_size()
+       function (Bernd Helmle)
+      
+     
+
+     
+      
+       Add 
+       linkend="functions-info-access-table">has_sequence_privilege()
+       for sequence permission checking (Abhijit Menon-Sen)
+      
+     
+
+     
+      
+       Have information
+       schema properly display date type octet lengths
+       (Peter Eisentraut)
+      
+
+      
+       The reported length is now the maximum octet length; previously,
+       a huge value was reported.
+      
+     
+
+     
+      
+       Speed up information schema privilege views (Joachim Wieland)
+      
+     
+
+    
+
+   
+
+   
+    Function and Trigger Creation
+    
+
+     
+      
+       Implement anonymous functions using the 
+       linkend="SQL-DO">DO statement (Petr
+       Jelinek, Joshua Tolley, Hannu Valtonen)
+      
+
+      
+       This allows execution of server-side code without the need to create
+       a new function and execute it.
+      
+     
+
+     
+      
+       Allow SQL-compliant 
+       linkend="SQL-CREATETRIGGER">per-column triggers
+       (Itagaki Takahiro)
+      
+
+      
+       Such triggers are fired only if the specified columns are affected
+       by the query, e.g. in UPDATE's SET list.
+       information_schema now also shows this information.
+      
+     
+
+     
+      
+       Add WHERE clause to 
+       linkend="SQL-CREATETRIGGER">CREATE TRIGGER
+       to allow control over whether a trigger is fired (Takahiro
+       Itagaki)
+      
+
+      
+       While a check can be performed inside the trigger, doing it in an
+       external WHERE clause has performance benefits.
+      
+     
+
+    
+
+   
+
+  
+
+  
+   Server-Side Languages
+
+   
+
+    
+     
+      Add the OR REPLACE clause to 
+      linkend="SQL-CREATELANGUAGE">CREATE LANGUAGE
+      (Tom Lane)
+     
+
+     
+      This is helpful to optionally install a language if it does not
+      already exist, and is particularly helpful now that PL/pgSQL is
+      installed by default.
+     
+    
+
+    
+
+    
+    <link linkend="plpgsql">PL/PgSQL</link> Server-Side</div> <div class="diff add">+    Language
+
+    
+
+     
+      
+       Install server-side language PL/pgSQL by default (Bruce Momjian)
+      
+     
+
+     
+      
+       Allow PL/pgSQL to handle row types with dropped columns (Pavel Stehule)
+      
+     
+
+     
+      
+       Allow IN parameters to be assigned values within
+       PL/pgSQL functions (Steve Prentice)
+      
+     
+
+     
+      
+       Improve error location reporting in PL/pgSQL (Tom Lane)
+      
+     
+
+     
+      
+       Have PL/pgSQL use the main lexer, rather than a custom version (Tom Lane)
+      
+     
+
+    
+
+   
+
+   
+    <link linkend="plpgsql-cursors">PL/pgSQL Cursors</link>
+    
+
+     
+      
+       Add count and ALL options to MOVE
+       FORWARD/BACKWARD in PL/pgSQL (Pavel Stehule)
+      
+     
+
+     
+      
+       Allow PL/pgSQL's WHERE CURRENT OF to use a cursor
+       variable (Tom Lane)
+      
+     
+
+     
+      
+       Add PL/pgSQL's OPEN cursor FOR EXECUTE to use parameters
+       (Pavel Stehule, Itagaki Takahiro)
+      
+
+      
+       This is accomplished with a new USING clause.
+      
+     
+
+    
+
+   
+
+   
+    <link linkend="plperl">PL/Perl</link> Server-Side Language
+    
+
+     
+      
+       Add new PL/Perl functions: 
+       linkend="plperl-utility-functions">quote_literal(),
+       quote_nullable(), quote_ident(),
+       encode_bytea(), decode_bytea(),
+       looks_like_number(),
+       encode_array_literal(),
+       encode_array_constructor() (Tim Bunce)
+      
+     
+
+     
+      
+       Add server variable 
+       linkend="guc-plperl-on-init">plperl.on_init to
+       specify a PL/Perl Perl initialization function (Tim
+       Bunce)
+      
+
+      
+       
+       linkend="guc-plperl-on-plperl-init">plperl.on_plperl_init
+       and plperl.on_plperlu_init are also available
+       for trusted/untrusted-specific initialization.
+      
+     
+
+     
+      
+       Improve error context support in PL/Perl (Alexey Klyukin)
+      
+     
+
+     
+      
+       Support END blocks in PL/Perl (Tim Bunce)
+      
+
+      
+       END blocks do not currently allow database access.
+      
+     
+
+     
+      
+       Allow use strict in PL/Perl (Tim Bunce)
+      
+
+      
+       This can be enabled with the server variable 
+       linkend="guc-plperl-use-strict">plperl.use_strict.
+      
+     
+
+     
+      
+       Allow require in PL/Perl (Tim Bunce)
+      
+
+      
+       This basically tests to see if the module is loaded, and if not,
+       generates an error.
+      
+     
+
+     
+      
+       Allow use feature in PL/Perl if Perl version 5.10 or
+       later is used (Tim Bunce)
+      
+     
+
+     
+      
+       Verify that PL/Perl return values are valid in the server encoding
+       (Andrew Dunstan)
+      
+     
+
+     
+      
+       Improve PL/Perl code structure (Tim Bunce)
+      
+     
+
+     
+      
+       PL/Perl subroutines are now given names (Tim Bunce)
+      
+
+      
+       This is for the use of profiling and code coverage tools. DIDN'T
+       THEY HAVE NAMES BEFORE?
+      
+     
+
+     
+      
+       PL/Perl no longer allows Safe version 2.20 because
+       it is unsafe (Tim Bunce)
+      
+     
+
+    
+
+   
+
+   
+    <link linkend="plpython">PL/Python</link> Server-Side Language
+    
+
+     
+      
+       Add Unicode support in PL/Python (Peter Eisentraut)
+      
+
+      
+       Strings are automatically converted from/to the server encoding as
+       necessary.
+      
+     
+
+     
+      
+       Improve bytea support in PL/Python (Caleb Welton)
+      
+
+      
+       Bytea values passed into PL/Python now are represented as
+       binary, rather than the Postgres bytea text format. Null
+       bytes are now also output properly from PL/Python. Boolean
+       and numeric value passing in PL/Python was also improved.
+      
+     
+
+     
+      
+       Add array parameter/return
+       support to PL/Python (Peter Eisentraut)
+      
+     
+
+     
+      
+       Improve mapping of domains to Python base types in PL/Python (Peter Eisentraut)
+      
+     
+
+     
+      
+       Add Python 3 support to PL/Python (Peter Eisentraut)
+      
+
+      
+       The new server-side language is called 
+       linkend="plpython-python23">plpython3u.
+      
+     
+
+     
+      
+       Improve error location and exception reporting in PL/Python (Peter Eisentraut)
+      
+     
+
+    
+
+   
+
+  
 
-  
-    Overview
+  
+   Client Applications
+   
 
+    
     
-      Based on overwhelming user demand, this release of
-      PostgreSQL adds features that have been requested
-      for years, like easy-to-use replication, a mass permission
-      facility, and anonymous blocks.  While past major releases have
-      been quite conservative in their scope, this release shows a
-      bold new desire to provide facilities that every new and existing
-      user of PostgreSQL will embrace.  This has all
-      been done with few incompatibilities.  The major areas of
-      enhancement are:
-    
+     Add vacuumdb
+     
+     
+    
 
+   
+
+   
+    <link linkend="APP-PSQL"><application>psql</></link>
     
 
-      
+     
+      
+       Properly escape psql 
+       linkend="APP-PSQL-variables">variables and
+       identifiers (Pavel Stehule, Robert Haas)
+      
 
-      <listitem>
-        
-          Allow continuous archive standby systems to accept read-only queries
-        
-      
+      <para>
+       For example, :'var' will be escaped as a literal string, and
+       :"var" will be escaped as an SQL identifier.
+      
+     
 
-      
-        
-          Allow continuous archive (WAL) files to be streamed to a
-          standby system
-        
-      
+     
+      
+       Ignore leading UTF-8-encoded Unicode byte-order marker in
+       psql (Itagaki Takahiro)
+      
 
-      
-        
-          Add the ability to make mass permission changes per
-           schema using the new 
-           linkend="SQL-GRANT">GRANT/REVOKE
-           IN SCHEMA clause
-        
-      
+      
+       This is enabled when the client encoding is UTF-8.
+      
+     
 
-      
-        
-          Add the ability to control large object permissions with
-          GRANT/REVOKE
-        
-      
+     
+      
+       Fix psql --file - to properly honor 
+       linkend="R1-APP-PSQL-3">
+       (Bruce Momjian)
+      
+     
 
-      
-        
-          Implement anonymous functions using the 
-          linkend="SQL-DO">DO statement
-        
-      
+     
+      
+       Prevent overwriting of psql's command-line history
+       if two psql sessions are run simultaneously (Tom Lane)
+      
+     
 
-      
-        
-          Allow function calls to supply parameter names and match them to named
-          parameters in the function definition (Pavel Stehule)
-        
-      
+     
+      
+       Improve psql's tab completion support (Itagaki
+       Takahiro)
+      
+     
 
-      
-        
-          Install server-side language PL/pgSQL by default
-        
-      
+    
 
-      
-        
-          Major PL/Perl enhancements
-        
-      
+    
+    <application>psql</> Display
+     
 
       
-        
-          Allow SQL-compliant 
-          linkend="SQL-CREATETRIGGER">per-column triggers
-        
+       
+        Allow psql to use fancy Unicode line-drawing
+        characters via \pset linestyle unicode (Roger Leigh)
+       
       
 
       
-        
-          Add deferrable
-          unique constraints
-        
-      
+       
+        Improve display of wrapped columns in psql (Roger
+        Leigh)
+       
 
-      
-        
-          Have LISTEN/
-          linkend="SQL-NOTIFY">NOTIFY store events
-          in a memory queue, rather than a system table
-        
+       
+        The previous format is available by using \pset linestyle
+        old-ascii.
+       
       
 
-      
-        
-          Allow NOTIFY
-          to pass an optional string to listeners
-        
-      
+     
 
-      
-        
-          Change VACUUM FULL to rewrite the entire table and
-          indexes, rather than moving around single rows to compact space
-        
-      
+    
 
-      >
-        
-          Add prefix support for the full text search synonym dictionary
-        >
-      >
+    >
+     <application>psql</> <link</div> <div class="diff add">+     linkend="APP-PSQL-meta-commands"><command>\d</></link></div> <div class="diff add">+     <span class="marked">Commands</title</span>></div> <div class="diff add">+     <span class="marked"><itemizedlist</span>></div> <div class="diff ctx"> </div> <div class="diff ctx">       <listitem></div> <div class="diff rem">-       <span class="marked"> </span><para></div> <div class="diff rem">-          Use red-black trees for <acronym>GIN</> index creation</div> <div class="diff rem">-        </para></div> <div class="diff rem">-      <span class="marked"></listitem</span>></div> <div class="diff add">+       <para></div> <div class="diff add">+        Have <command>\d</> show child tables that inherit from the specified</div> <div class="diff add">+        parent (Damien Clochard)</div> <div class="diff add">+      <span class="marked"> </para</span>></div> <div class="diff ctx"> </div> <div class="diff rem">-      <listitem></div> <div class="diff rem">-        <para></div> <div class="diff rem">-          Add <link</div> <div class="diff rem">-          linkend="functions-binarystring-other"><function>get_bit()</></link></div> <div class="diff rem">-          and <function>set_bit()</> functions for <type>bit</></div> <div class="diff rem">-          strings, mirroring those for <type>bytea</></div> <div class="diff rem">-        </para></div> <div class="diff add">+       <para></div> <div class="diff add">+        <command>\d</> shows only the number of child tables, while</div> <div class="diff add">+        <command>\d+</> shows the names of all child tables.</div> <div class="diff add">+       </para></div> <div class="diff ctx">       </listitem></div> <div class="diff ctx"> </div> <div class="diff ctx">       <listitem></div> <div class="diff rem">-        <para></div> <div class="diff rem">-          Add the ability for clients to set an <link</div> <div class="diff rem">-          linkend="libpq-connect-application-name">application</div> <div class="diff rem">-          name</link>, which is displayed in</div> <div class="diff rem">-          <structname>pg_stat_activity</></div> <div class="diff rem">-        </para></div> <div class="diff rem">-      </listitem></div> <div class="diff add">+       <para></div> <div class="diff add">+        Show definition of indexes in <command>\d index_name</> (Khee Chin)</div> <div class="diff add">+       </para></div> <div class="diff ctx"> </div> <div class="diff rem">-      <listitem></div> <div class="diff rem">-        <para></div> <div class="diff rem">-          Add support for compiling on <link</div> <div class="diff rem">-          linkend="install-win32-full">64-bit</div> <div class="diff rem">-          <productname>Windows</></link> and running in 64-bit</div> <div class="diff rem">-          mode</div> <div class="diff rem">-        </para></div> <div class="diff add">+       <para></div> <div class="diff add">+        The definition is useful for expression indexes.</div> <div class="diff add">+       </para></div> <div class="diff ctx">       </listitem></div> <div class="diff ctx"> </div> <div class="diff ctx">       <listitem></div> <div class="diff rem">-        <para></div> <div class="diff rem">-          The above items are explained in more detail in the sections below.</div> <div class="diff rem">-        </para></div> <div class="diff add">+       <para></div> <div class="diff add">+        In <application>psql</>, show the view definition only with <command>\d+</>,</div> <div class="diff add">+        not with <command>\d</> (Peter Eisentraut)</div> <div class="diff add">+       </para></div> <div class="diff ctx">       </listitem></div> <div class="diff ctx"> </div> <div class="diff rem">-    </itemizedlist></div> <div class="diff rem">-</div> <div class="diff rem">-  </sect2></div> <div class="diff add">+     </itemizedlist></div> <div class="diff ctx"> </div> <div class="diff rem">-  <sect2></div> <div class="diff add">+    </sect5></div> <div class="diff add">+   </sect4></div> <div class="diff ctx"> </div> <div class="diff rem">-    <title>Migration to Version 9.0
-    CURRENT AS OF 2010-04-29
+   
+    <link linkend="APP-PGDUMP"><application>pg_dump</></link>
+    
 
-    
-      A dump/restore using pg_dump is
-      required for those wishing to migrate data from any previous
-      release.
-    
+     
+      
+       Have pg_dump/pg_restore
+       
+       also remove large objects (Itagaki Takahiro)
+      
+     
 
-    
-      Observe the following incompatibilities:
-    
+     
+      
+       Fix pg_dump to properly dump large objects if
+       standard_conforming_strings is enabled (Tom Lane)
+      
 
-    
-      Server Settings
+      
+       Large objects dumps now use hex format for output. (SWITCH DEFAULT
+       FOR BETA? TOM)
+      
+     
 
-      
+     
+      
+       Allow pg_dump to dump comments attached to columns
+       of composite types (Taro Minowa (Higepon))
+      
+     
+
+     
+      
+       Have pg_dump 
+       linkend="pg-dump-options">
+       output the pg_dump and server versions
+       in text output mode (Jim Cox, Tom Lane)
+      
 
-        
-          
-            Remove server variable add_missing_from, which was
-            defaulted to off for many years (Tom Lane)
-          
-        
-
-        
-          
-            Remove server variable regex_flavor, which
-            was defaulted to 
-            linkend="posix-syntax-details">advanced
-            (e.g. Perl-regex compatible) for many years (Tom Lane)
-          
-        
-
-        
-          
-            It is now necessary to set 
-            linkend="guc-wal-level">wal_level to
-            archive to do continuous archiving.
-            (Heikki Linnakangas)
-          
-        
-
-      
-
-    
-
-    
-      Queries
-      
+      
+       These were already present in custom output mode.
+      
+     
 
-      
-        
-          When querying a parent table,
-          do not do additional permission checks on child tables
-          returned as part of the query (Peter Eisentraut)
-        
-
-        
-          The SQL standard specifies this behavior.
-        
-      
+    
 
-      
-        
-          Have fractional seconds conversion truncate rather than
-          round when using float-based dates/times (Tom Lane)
-        
-      
+   
 
-      
+   
+    <link</div> <div class="diff add">+    linkend="app-pg-ctl"><application>pg_ctl</></link>
+    
 
-    
+     
+      
+       Allow pg_ctl to be safely used to start the
+       postmaster at boot-time (Tom Lane)
+      
 
-    
-      String Handling
-      
+      
+       Previously the pg_ctl process could have been mistakenly
+       identified as a running postmaster based on a stale
+       postmaster lock file.
+      
+     
 
-      
-        
-          Improve standards compliance of 
-          linkend="functions-similarto-regexp">SIMILAR TO
-          patterns and SQL-style substring() patterns (Tom Lane)
-        
-
-        
-          This includes treating ? and {...} as
-          pattern metacharacters, while they were simple literal characters
-          before; that corresponds to new features added in SQL:2008.
-          Also, ^ and $ are now treated as simple
-          literal characters; formerly they were treated as metacharacters,
-          as if the pattern were following POSIX rather than SQL rules.
-          Also, in SQL-standard substring(), use of parentheses
-          for nesting no longer interferes with capturing of a substring.
-          Also, processing of bracket expressions (character classes) is
-          now more standards-compliant.
-        
-      
+     
+      
+       Give pg_ctl the ability to initialize the database
+       (like initdb) (Zdenek Kotala)
+      
+     
 
-      
-        
-         Reject negative length values in 3-parameter 
-         linkend="functions-string-sql">substring()
-         for bit strings, per the SQL standard (Tom Lane)
-        
-      
 
     
 
-    >
+   >
 
-    
-      Object Renaming
-      
+  
 
-        
-          
-            Tighten enforcement of column renaming when a child table inherits
-            the renamed column from an unrelated parent (KaiGai Kohei)
-          
-        
+  
+   <application>Development Tools</>
 
-        
-          
-            No longer rename index names and index column names when table
-            columns are renamed (Tom Lane)
-          
+   
+    <link linkend="libpq"><application>libpq</></link>
 
-          
-            Administrators still can rename such columns manually.  Expression
-            index names are also not renamed.  WHY ARE EXPRESSION INDEXES
-            SIGNIFICANT?
-          
-        
+    
 
-      
+     
+      
+       Add new libpq functions
+       
+       linkend="libpq-connect">PQconnectdbParams()
+       and PQconnectStartParams() (Guillaume
+       Lelarge)
+      
 
-    
+      
+       These functions are similar to PQconnectdb() and
+       PQconnectStart() except they allow a null-terminated
+       array of connection options, rather than requiring all options to
+       be sent in a single string.
+      
+     
 
-    
-      PL/pgSQL Variables
-      
+     
+      
+       Add libpq functions 
+       linkend="libpq-exec-escape-string">PQescapeLiteral()
+       and PQescapeIdentifier() (Robert Haas)
+      
 
+      
+       These functions return appropriately quoted and escaped literal
+       strings and identifiers. The caller is not required to pre-allocate
+       the string result, as is required by PQescapeStringConn().
+      
+     
+
+     
+      
+       Add checking for a per-user service file (
+       linkend="libpq-pgservice">.pg_service.conf),
+       which is checked before the site-wide service file
+       (Peter Eisentraut)
+      
 
-        
-          
-            Have PL/pgSQL throw an error if a variable name conflicts with a
-            column name used in a query (Tom Lane)
-          
-
-          
-            This behavior can be changed via the server variable 
-            linkend="plpgsql-var-subst">plpgsql.variable_conflict,
-            or by the per-function option #variable_conflict.
-            The former behavior was to bind to variable names over
-            column names.
-          
-        
-
-        
-          
-            Remove PL/pgSQL's RENAME declaration option (Tom Lane)
-          
-
-          
-            Instead, use 
-            linkend="plpgsql-declaration-parameters">ALIAS,
-            which can now alias any variable, not just dollar sign
-            variables, e.g. $1.
-          
-        
-
-        
-          
-            PL/pgSQL no longer allows unquoted variables names that match SQL
-            reserved words (Tom Lane)
-          
-
-          
-            Variables can be double-quoted to avoid this restriction.
-          
-        
-      
-
-    
-  
+      
+       The file .pg_service.conf is assumed to be in the
+       user's home directory.
+      
+     
 
-  
-    Changes
-
-    
-      Server
-
-      
-        Continuous Archiving
-        
-
-          
-            
-              Allow continuous archive standby systems to accept read-only queries
-              (Simon Riggs, Heikki Linnakangas)
-            
-
-            
-              This feature is called Hot Standby.  There are new
-              postgresql.conf and recovery.conf
-              settings to enable this feature, as well as extensive
-              documentation.
-            
-          
-
-          
-            
-              Allow continuous archive (WAL) files to be streamed to a
-              standby system (Fujii Masao, Heikki Linnakangas)
-            
-
-            
-              Previously WAL files could be sent to standby systems only
-              as 16 megabytes files;  this allows master changes to be sent to the
-              slave with very little delay.  There are new postgresql.conf
-              and recovery.conf settings to enable this
-              feature, as well as extensive 
-              linkend="streaming-replication">documentation.
-            
-          
-
-          
-            
-              Add 
-              linkend="functions-recovery-info-table">pg_last_xlog_receive_location()
-              and pg_last_xlog_replay_location(), which
-              can be used to monitor standby server WAL
-              activity (Simon Riggs, Fujii Masao, Heikki Linnakangas)
-            
-          
-
-        
-
-      
-
-      
-        Performance
-        
-
-          
-            
-              Improve performance of finding inherited child tables (Tom Lane)
-            
-          
-
-          
-            
-              Allow per-tablespace sequential and random page cost variables
-              (seq_page_cost/random_page_cost) via
-              ALTER TABLESPACE
-              ...  SET/RESET (Robert Haas)
-            
-          
-
-          
-            
-              Improve performance of 
-              linkend="SQL-TRUNCATE">TRUNCATE when
-              used in the same transaction as table creation (Tom Lane)
-            
-          
-
-          
-
-      
-
-      
-        Optimizer
-
-        
-          
-            
-              Allow IS NOT NULL restrictions to use indexes (Tom Lane)
-            
-
-            
-              This is particularly useful for finding
-              MAX()/MIN() values in indexes that also
-              contain NULLs.
-            
-          
-
-          
-            
-              Remove unnecessary outer
-              joins (Robert Haas)
-            
-
-            
-              Outer joins where the inner side is unique and not referenced in
-              the query are unnecessary and are therefore now removed.
-            
-          
-
-          
-            
-              Improve optimizer equivalence detection of <> boolean
-              tests (Tom Lane)
-            
-          
-        
-      
-
-      
-        <link linkend="geqo">GEQO</link>
-        
-
-          
-            
-              Use the same random seed everytime GEQO plans a query (Andres
-              Freund)
-            
-
-            
-              While the Genetic Query Optimizer (GEQO) still selects
-              random plans, it now selects the same random plans for
-              identical queries.  You can modify 
-              linkend="guc-geqo-seed">geqo_seed to randomize
-              the starting value of the random plan generator.
-            
-          
-
-          
-            
-              Improve GEQO plan selection (Tom Lane).
-            
-
-            
-              This avoids the rare error, "failed to make a  valid plan".
-            
-          
-
-        
-
-      
-
-      
-        Optimizer Statistics
-        
-
-          
-            
-              Improve ANALYZE
-              to support inheritance-tree statistics (Tom Lane)
-            
-
-            
-              This is particularly useful for partitioned tables.
-            
-          
-
-          
-            
-              Improve autovacuum
-              detection of when re-analyze is necessary (Tom Lane)
-            
-          
-
-          
-            
-              Improve optimizer statistics for greater/less-than comparisons
-              (Tom Lane)
-            
-
-            
-              When looking up optimizer statistics for greater/less-than comparisons,
-              if the comparison value is in the first or last histogram bucket,
-              use an index to generate the actual statistics.  This is particularly
-              useful for columns that are always increasing, and hence often have
-              inaccurate statistics.
-            
-          
-
-          
-            
-              Allow setting of distinct statistics using 
-              linkend="SQL-ALTERTABLE">ALTER TABLE
-              (Robert Haas)
-            
-
-            
-              This allows user-override of the number or percentage of distinct
-              values for a column and optionally its child tables.  This value
-              is normally computed by ANALYZE.
-            
-          
-
-        
-
-      
-
-      
-        Authentication
-        
-
-          
-            
-              Add support for 
-              linkend="auth-radius">RADIUS (Remote
-              Authentication Dial In User Service) authentication
-              (Magnus Hagander)
-            
-          
-
-
-          
-            
-              Allow LDAP
-              (Lightweight Directory Access Protocol) authentication
-              to operate in "search/bind" mode (Robert Fleming, Magnus)
-            
-
-            
-              This allows the user to be looked up first, then the system uses
-              the DN (Distinguished Name) returned for that user.
-            
-          
-
-          
-            
-              Add 
-              linkend="auth-pg-hba-conf">samehost
-              and samenet designations to
-              pg_hba.conf (Stef Walter)
-            
-
-            
-              These match the server's IP address and network address
-              respectively.
-            
-          
-
-        
-
-      
-
-      
-        Monitoring
-        
-
-          
-            
-              Add the ability for clients to set an 
-              linkend="libpq-connect-application-name">application
-              name, which is displayed in
-              pg_stat_activity (Dave Page)
-            
-          
-
-          
-            
-              Add an SQL state option (%e) to 
-              linkend="guc-log-line-prefix">log_line_prefix
-              (Guillaume Smet)
-            
-          
-
-          
-            
-              Write to the Windows event log in UTF16 encoding
-              (Itagaki Takahiro)
-            
-          
-
-        
-
-      
-
-      
-        Statistics Counters
-        
-
-          
-            
-              Add 
-              linkend="monitoring-stats-funcs-table">pg_stat_reset_shared('bgwriter')
-              to reset the cluster-wide shared statistics of the
-              bgwriter (Greg Smith)
-            
-          
-
-          
-            
-              Add 
-              linkend="monitoring-stats-funcs-table">pg_stat_reset_single_table_counters()
-              and pg_stat_reset_single_function_counters()
-              to allow the reseting of statistics counters for individual
-              tables and indexes (Magnus Hagander)
-            
-          
-
-        
-
-      
-
-      
-        Server Settings
-        
-
-          
-            
-              Allow setting of configuration variables based on 
-              linkend="sql-alterrole">database/role
-              combinations (Alvaro Herrera)
-            
-
-            
-              Previously only per-database and per-role setting were possible,
-              not combinations.  All role and database settings are now stored
-              in the new pg_db_role_setting system table.  A new
-              psql \drds command shows these settings.
-              Backwards-compatible system views do not show this information.
-            
-          
-
-          
-            
-              Add boolean variable 
-              linkend="guc-bonjour">bonjour, which
-              controls whether a Bonjour-enabled binary advertises
-              itself via Bonjour (Tom Lane)
-            
-
-            
-              The default is off, meaning it does not advertise.
-            
-          
-
-          
-            
-              Add boolean variable 
-              linkend="guc-enable-material">enable_material, which
-              controls the use of materialize nodes in the optimizer
-              (Robert Haas)
-            
-
-            
-              The default is on.
-            
-          
-
-          
-            
-              Log changed parameter values when postgresql.conf is
-              reloaded (Peter Eisentraut)
-            
-          
-
-          
-            
-              Add proper permissions for custom variables (Tom Lane)
-            
-
-            
-              Custom variables can now only be created by super-users,
-              but can be modified by ordinary users if variable
-              permissions allow it.  This makes custom variables
-              appropriate for security settings.  Previously, any user
-              could create or modify custom variables.
-            
-          
-
-        
-
-      
-
-    
-
-    
-      Queries
-      
+     
+      
+       Properly report an error if the specified libpq service
+       cannot be found (Peter Eisentraut)
+      
+     
 
-        
-          
-            Do SELECT
-            FOR UPDATE/SHARE processing after
-            applying LIMIT, so the number of rows returned
-            is always predictable (Tom Lane)
-          
-
-          
-            Previously, concurrent transactions could potentially cause
-            SELECT to return fewer rows than specified by
-            LIMIT.  FOR UPDATE can still affect
-            ORDER BY ordering, but this can be corrected by using
-            FOR UPDATE in a subquery.
-          
-        
-
-        
-          
-            Allow mixing of traditional and SQL-standard 
-            linkend="SQL-LIMIT">LIMIT/OFFSET
-            syntax in the same query (Tom Lane)
-          
-        
-
-        
-          
-            Increase the supported frame options in 
-            linkend="SQL-WINDOW">window functions (Hitoshi
-            Harada)
-          
-
-          
-            This allows frames (RANGE or ROWS) to start
-            with CURRENT ROW, and to use the ROWS n
-            PRECEDING/FOLLOWING clause.
-          
-        
-
-        
-          
-            Have SELECT and CREATE TABLE AS return
-            row counts to the client
-            (Boszormenyi Zoltan)
-          
-
-          
-            psql does not display these counts.
-          
-        
-
-      
-
-      
-        Unicode Strings
-        
-
-          
-            
-              Add Unicode surrogate pair (dual 16-bit) support to
-              
-              linkend="sql-syntax-strings-uescape">U&
-              strings and identifiers (Peter Eisentraut)
-            
-          
-
-          
-            
-              Allow Unicode escapes in 
-              linkend="sql-syntax-strings-escape">E'...'
-              strings (Marko Kreen)
-            
-          
-
-        
-
-      
-
-    
-
-    
-      Object Manipulation
-      
+     
+      
+       Issue a warning if the 
+       linkend="libpq-pgpass">.pgpass-retrieved
+       password fails (Bruce Momjian)
+      
+     
 
-        
-          
-            Speed up CREATE
-            DATABASE by deferring flushes to disk (Andres
-            Freund, Greg Stark)
-          
-        
-
-        
-          
-            Allow comments only on
-            columns of tables, views, and composite types, not other
-            objects like indexes and TOAST tables (Tom Lane)
-          
-        
-
-        
-          
-            Allow the creation of 
-            linkend="SQL-CREATETYPE-enum">enumerate types with
-            no labels (Bruce Momjian)
-          
-
-          
-            This is useful for supporting binary upgrades.
-          
-        
-
-        
-          
-            Have columns defined with storage type MAIN remain on
-            the main heap page unless it cannot fit (Kevin Grittner)
-          
-
-          
-            Previously MAIN values were forced to TOAST
-            tables until the row size was one-quarter of the page size.
-          
-        
-
-      
-
-      
-       <command>ALTER</>
-        
-
-          
-            
-              Add ALTER
-              DEFAULT PRIVILEGES command to control privileges
-              of all newly-created objects (Petr Jelinek)
-            
-
-            
-              It currently supports tables, views, sequences, and functions, and
-              also has per-schema control.
-            
-          
-
-          
-            
-              Implement IF EXISTS for DROP COLUMN and
-              DROP CONSTRAINT  (Andres Freund)
-            
-          
-
-          
-            
-              Allow ALTER TABLE commands which rewrite tables to skip
-              WAL logging (Itagaki Takahiro)
-            
-
-            
-              Such operations either complete fully or are rolled back, so
-              WAL archiving can be skipped, unless running in continuous
-              archiving mode.
-            
-          
-
-        
-
-      
-
-      
-        <link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link>
-        
-
-          
-            
-              Add support for copying COMMENTS and STORAGE
-              to the CREATE TABLE ... LIKE INCLUDING command (Itagaki
-              Takahiro)
-            
-          
-
-          
-            
-              Add support for copying all attributes to the CREATE
-              TABLE LIKE INCLUDING command (Itagaki Takahiro)
-            
-          
-
-          
-            
-              Add the SQL-standard CREATE TABLE ... OF type command
-              (Peter Eisentraut)
-            
-
-            
-              This allows the creation of a table to match an existing composite
-              type.  Additional constraints and defaults can be specified in the
-              command.
-            
-          
-
-        
-
-      
-
-      
-        Constraints
-        
-
-          
-            
-              Add deferrable
-              unique constraints (Dean Rasheed)
-            
-
-            
-              This allows UPDATE tab SET col = col + 1 to work on
-              columns that have a unique indexes or are marked as primary keys,
-              but DEFERRABLE INITIALLY DEFERRED must be used to mark
-              the constraint as deferred.
-            
-          
-
-          
-            
-              Generalize uniqueness constraints by allowing arbitrary operator
-              comparisons, not just equality (Jeff Davis)
-            
-
-            
-              This is enabled with the 
-              linkend="SQL-CREATETABLE-EXCLUDE">CREATE
-              TABLE CONSTRAINT ...  EXCLUDE clause.  While
-              uniqueness checks could be specified using this syntax,
-              the real value of this feature is in using complex
-              operators that do not have built-in constraints.
-            
-          
-
-          
-            
-              Improve the constraint violation error message to report the values
-              causing the failure (Itagaki Takahiro)
-            
-
-            
-              For example, a uniqueness constraint violation now reports Key
-              (x)=(2) already exists.
-            
-          
-
-        
-
-      
-
-      
-        Object Permissions
-        
-
-          
-            
-              Add the ability to make mass permission changes per
-              schema using the new 
-              linkend="SQL-GRANT">GRANT/REVOKE
-              IN SCHEMA clause (Petr Jelinek)
-            
-          
-
-          
-            
-              Add the ability to control large object permissions with
-              GRANT/REVOKE (KaiGai Kohei)
-            
-          
-
-        
-
-      
-
-    
-
-    
-      Utility Operations
+    
 
-      >
+   >
 
-        
-          
-            Have LISTEN/
-            linkend="SQL-NOTIFY">NOTIFY store events
-            in a memory queue, rather than a system table (Joachim
-            Wieland)
-          
-
-          
-            This greatly improves performance for these operations.
-          
-        
-
-        
-          
-            Allow NOTIFY
-            to pass an optional string to listeners (Joachim Wieland)
-          
-        
-
-        
-          
-            Allow CLUSTER
-            on all system tables (Tom Lane)
-          
-
-          
-            Global system tables still cannot be clustered.
-          
-        
-
-      
-
-      
-        <link linkend="SQL-COPY"><command>COPY</></link>
-        
-
-          
-            
-              Allow * as a parameter in FORCE QUOTE for
-              COPY CSV (Itagaki Takahiro)
-            
-
-            
-              This forces quotes for all CSV output columns.
-            
-          
-
-          
-            
-              Add new COPY syntax that allows parameters to be
-              specified in parentheses (Robert Haas, Emmanuel Cecchet)
-            
-
-            
-              This allows greater flexibility for future COPY options.
-              The old syntax is still supported.
-            
-          
-
-        
-
-      
-
-      
-        <link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link>
-        
-
-          
-            
-              Add new EXPLAIN (BUFFERS) to report query buffer
-              activity (Itagaki Takahiro)
-            
-
-            
-              log_*_stats log output, e.g. 
-              linkend="runtime-config-statistics-monitor">log_statement_stats,
-              no longer shows this information.
-            
-          
-
-          
-            
-              Add hash usage information to EXPLAIN output (Robert
-              Haas)
-            
-          
-
-          
-            
-              Allow EXPLAIN output in XML, JSON,
-              and YAML formats (Robert Haas, Greg Sabino Mullane)
-            
-          
-
-          
-            
-              Allow EXPLAIN options to be specified inside parentheses
-              (Robert Haas)
-            
-
-            
-              This allows for the expansion of EXPLAIN options.  The
-              old syntax is still supported.
-            
-          
-
-        
-
-      
-
-      
-        <link linkend="SQL-VACUUM"><command>VACUUM</></link>
-        
-
-          
-            
-              Change VACUUM FULL to rewrite the entire table and
-              indexes, rather than moving around single rows to compact space
-              (Itagaki Takahiro, Tom Lane)
-            
-
-            
-              The previous method was usually slower and caused index bloat.
-            
-          
-
-          
-            
-              Add new VACUUM syntax that allows parameters to be
-              specified in parentheses (Itagaki Takahiro)
-            
-
-            
-              This allows greater flexibility for future VACUUM
-              options.  The old syntax is still supported.
-            
-          
-
-        
-
-      
-
-      
-        Indexes
-        
-
-          
-            
-              Allow an index to be auto-named by not supplying an index name to
-              CREATE INDEX (Tom Lane)
-            
-          
-
-          
-            
-              Allow REINDEX
-              on system indexes (Tom Lane)
-            
-
-            
-              WAS THIS POSSIBLE ON ANY SYSTEM TABLE BEFORE?  NON-HARDWIRED ONES?
-            
-          
-
-          
-            
-              Add point_ops opclass for GiST (Teodor Sigaev)
-            
-
-            
-              DETAILS?
-            
-          
-
-          
-            
-              Use red-black trees for GIN index creation
-             (Teodor Sigaev)
-            
-
-            
-              Red-black trees are self-balanced so allow for faster index
-          creation.
-            
-          
-
-        
-
-      
-
-    
-
-    
-      Data Types
-      
+   
+    <link linkend="ecpg"><application>ecpg</></link>
+    
 
-        
-          
-            Allow hex values to be specified in 
-            linkend="datatype-binary">bytea strings
-            (Peter Eisentraut)
-          
-
-          
-            The variable 
-            linkend="guc-bytea-output">bytea_output controls
-            if hex (default) or octal escapes are used for bytea
-            output.  (SWITCH DEFAULT FOR BETA?  PETER) Libpq's
-            PQescapeByteaConn() now uses the hex format
-            for PostgreSQL 9.0 servers.
-          
-        
-
-        
-          
-            Allow 
-            linkend="guc-extra-float-digits">extra_float_digits
-            to be increased to 3 (Tom Lane)
-          
-
-          
-            The previous maximum extra_float_digits was 2.
-          
-        
-
-      
-
-      
-        <link linkend="textsearch">Full Text Search</link>
-        
-
-          
-            
-              Add prefix support for the full text search synonym dictionary
-              (Teodor Sigaev)
-            
-          
-
-          
-            
-              Add full text search filtering dictionaries (Teodor Sigaev)
-            
-
-            
-              Filtering dictionaries allow tokens to be modified and passed to
-              subsequent dictionaries.
-            
-          
-
-          
-            
-              Allow underscores in full text email addresses (Teodor Sigaev)
-            
-          
-
-          
-            
-              Use more standards-compliant rules for URL
-              parsing (Tom Lane)
-            
-          
-
-        
-
-      
-
-    
-
-    
-      Functions
-      
+     
+      
+       Add SQLDA
+       (SQL Descriptor Area) support to ecpg
+       (Boszormenyi Zoltan)
+      
+     
 
-        
-          
-            Allow case-insensitive 
-            linkend="functions-posix-regexp">regular expression
-            matching with UTF-8 server encodings.
-          
-
-          
-            Previously, only ASCII characters and single-byte
-            encodings worked properly.  Other multi-byte, non-UTF-8
-            encodings are still broken for case-insensitive regular expression
-            matching.
-          
-        
-
-        
-          
-            Allow function calls to supply parameter names and match them to named
-            parameters in the function definition (Pavel Stehule)
-          
-
-          
-            For example, if a function is defined to take parameters a
-            and b, it can be called with func(7 AS a, 12
-            AS b) or func(12 AS b, 7 AS a).
-          
-        
-
-        
-          
-            Add support for 
-            linkend="functions-formatting">to_char()
-            scientific notation output (
-            linkend="functions-formatting-numeric-table">'EEEE')
-            (Pavel Stehule, Brendan Jurd)
-          
-        
-
-        
-          
-            Have to_char() honor 
-            linkend="functions-formatting-datetimemod-table">'FM'
-            (fill mode) in 'Y', 'YY', and
-            'YYY' specifications (Bruce Momjian, Tom Lane)
-          
-
-          
-            It was already honored by 'YYYY'.
-          
-        
-
-        
-          
-            Fix to_char() to output the proper localized
-            numeric and monetary characters on Windows
-            (Hiroshi Inoue, Itagaki Takahir, Bruce Momjian)
-          
-        
-
-        
-          
-            Correct calculations of 
-            linkend="functions-geometry-op-table">"overlap"
-            and "contains" operations over polygons (Teodor Sigaev)
-          
-        
-
-      
-
-      
-        Aggregates
-        
-
-          
-            
-              Allow aggregate functions to use ORDER BY (Andrew
-              Gierth)
-            
-
-            
-              For example, this is now supported, array_agg(a ORDER BY
-              b).  This is useful for aggregates where the order of values is
-              significant.
-            
-          
-
-          
-            
-              Add the 
-              linkend="functions-aggregate-table">string_agg()
-              aggregate function which aggregates values into a single
-              string (Pavel Stehule)
-            
-
-            
-              An optional second argument allows specification of a delimiter.
-            
-          
-
-          
-            
-              Aggregate functions that are called with DISTINCT are
-              now passed NULL values if the aggregate transition function is
-              not marked as STRICT (Andrew Gierth)
-            
-
-            
-              For example, agg(DISTINCT x) might pass NULL x
-              values to agg().
-            
-          
-
-        
-
-      
-
-      
-        Bit Strings
-        
-
-          
-            
-              Add 
-              linkend="functions-binarystring-other">get_bit()
-              and set_bit() functions for bit
-              strings, mirroring those for bytea (Leonardo
-              F)
-            
-          
-
-          
-            
-              Implement 
-              linkend="functions-string-sql">OVERLAY()
-              (replace) for bit strings and bytea
-              (Leonardo F)
-            
-          
-
-        
-
-      
-
-      
-        Object Information Functions
-        
-
-          
-            
-              Add 
-              linkend="functions-admin-dbsize">pg_table_size()
-              and pg_indexes_size() to provide a more
-              user-friendly interface to the pg_relation_size()
-              function (Bernd Helmle)
-            
-          
-
-          
-            
-              Add 
-              linkend="functions-info-access-table">has_sequence_privilege()
-              for sequence permission checking (Abhijit Menon-Sen)
-            
-          
-
-          
-            
-              Have information
-              schema properly display date type octet lengths
-              (Peter Eisentraut)
-            
-
-            
-              The reported length is now the maximum octet length;  previously,
-              a huge value was reported.
-            
-          
-
-          
-            
-              Speed up information schema privilege views (Joachim Wieland)
-            
-          
-
-        
-
-      
-
-      
-        Function and Trigger Creation
-        
-
-          
-            
-              Implement anonymous functions using the 
-              linkend="SQL-DO">DO statement (Petr
-              Jelinek, Joshua Tolley, Hannu Valtonen)
-            
-
-            
-              This allows execution of server-side code without the need to create
-              a new function and execute it.
-            
-          
-
-          
-            
-              Allow SQL-compliant 
-              linkend="SQL-CREATETRIGGER">per-column triggers
-              (Itagaki Takahiro)
-            
-
-            
-              Such triggers are fired only if the specified columns are affected
-              by the query, e.g. in UPDATE's SET list.
-              information_schema now also shows this information.
-            
-          
-
-          
-            
-              Add WHERE clause to 
-              linkend="SQL-CREATETRIGGER">CREATE TRIGGER
-              to allow control over whether a trigger is fired (Takahiro
-              Itagaki)
-            
-
-            
-              While a check can be performed inside the trigger, doing it in an
-              external WHERE clause has performance benefits.
-            
-          
-
-        
-
-      
-
-    
-
-    
-      Server-Side Languages
+     
+      
+       Add the DESCRIBE
+       [OUTPUT] statement to ecpg
+       (Boszormenyi Zoltan)
+      
+     
 
-      
+     
+      
+       Add an ecpg 
+       linkend="ecpg-library">function to return the
+       current transaction status (Bernd Helmle)
+      
+     
 
-        
-          
-            Add the OR REPLACE clause to 
-            linkend="SQL-CREATELANGUAGE">CREATE LANGUAGE
-            (Tom Lane)
-          
-
-          
-            This is helpful to optionally install a language if it does not
-            already exist, and is particularly helpful now that PL/pgSQL is
-            installed by default.
-          
-        
-
-        
-
-        
-        <link linkend="plpgsql">PL/PgSQL</link> Server-Side</div> <div class="diff rem">-        Language
-
-        
-
-          
-            
-              Install server-side language PL/pgSQL by default (Bruce Momjian)
-            
-          
-
-          
-            
-              Allow PL/pgSQL to handle row types with dropped columns (Pavel Stehule)
-            
-          
-
-          
-            
-              Allow IN parameters to be assigned values within
-              PL/pgSQL functions (Steve Prentice)
-            
-          
-
-          
-            
-              Improve error location reporting in PL/pgSQL (Tom Lane)
-            
-          
-
-          
-            
-              Have PL/pgSQL use the main lexer, rather than a custom version (Tom Lane)
-            
-          
-
-        
-
-      
-
-      
-        <link linkend="plpgsql-cursors">PL/pgSQL Cursors</link>
-        
-
-          
-            
-              Add count and ALL options to MOVE
-              FORWARD/BACKWARD in PL/pgSQL (Pavel Stehule)
-            
-          
-
-          
-            
-              Allow PL/pgSQL's WHERE CURRENT OF to use a cursor
-              variable (Tom Lane)
-            
-          
-
-          
-            
-              Add PL/pgSQL's OPEN cursor FOR EXECUTE to use parameters
-              (Pavel Stehule, Itagaki Takahiro)
-            
-
-            
-              This is accomplished with a new USING clause.
-            
-          
-
-        
-
-      
-
-      
-        <link linkend="plperl">PL/Perl</link> Server-Side Language
-        
-
-          
-            
-              Add new PL/Perl functions:  
-              linkend="plperl-utility-functions">quote_literal(),
-              quote_nullable(), quote_ident(),
-              encode_bytea(), decode_bytea(),
-              looks_like_number(),
-              encode_array_literal(),
-              encode_array_constructor() (Tim Bunce)
-            
-          
-
-          
-            
-              Add server variable 
-              linkend="guc-plperl-on-init">plperl.on_init to
-              specify a PL/Perl Perl initialization function (Tim
-              Bunce)
-            
-
-            
-              
-              linkend="guc-plperl-on-plperl-init">plperl.on_plperl_init
-              and plperl.on_plperlu_init are also available
-              for trusted/untrusted-specific initialization.
-            
-          
-
-          
-            
-              Improve error context support in PL/Perl (Alexey Klyukin)
-            
-          
-
-          
-            
-              Support END blocks in PL/Perl (Tim Bunce)
-            
-
-            
-              END blocks do not currently allow database access.
-            
-          
-
-          
-            
-              Allow use strict in PL/Perl (Tim Bunce)
-            
-
-            
-              This can be enabled with the server variable 
-              linkend="guc-plperl-use-strict">plperl.use_strict.
-            
-          
-
-          
-            
-              Allow require in PL/Perl (Tim Bunce)
-            
-
-            
-              This basically tests to see if the module is loaded, and if not,
-              generates an error.
-            
-          
-
-          
-            
-              Allow use feature in PL/Perl if Perl version 5.10 or
-              later is used (Tim Bunce)
-            
-          
-
-          
-            
-              Verify that PL/Perl return values are valid in the server encoding
-              (Andrew Dunstan)
-            
-          
-
-          
-            
-              Improve PL/Perl code structure (Tim Bunce)
-            
-          
-
-          
-            
-              PL/Perl subroutines are now given names (Tim Bunce)
-            
-
-            
-              This is for the use of profiling and code coverage tools.  DIDN'T
-              THEY HAVE NAMES BEFORE?
-            
-          
-
-          
-            
-              PL/Perl no longer allows Safe version 2.20 because
-              it is unsafe (Tim Bunce)
-            
-          
-
-        
-
-      
-
-      
-        <link linkend="plpython">PL/Python</link> Server-Side Language
-        
-
-          
-            
-              Add Unicode support in PL/Python (Peter Eisentraut)
-            
-
-            
-              Strings are automatically converted from/to the server encoding as
-              necessary.
-            
-          
-
-          
-            
-              Improve bytea support in PL/Python (Caleb Welton)
-            
-
-            
-              Bytea values passed into PL/Python now are represented as
-              binary, rather than the Postgres bytea text format.  Null
-              bytes are now also output properly from PL/Python.  Boolean
-              and numeric value passing in PL/Python was also improved.
-            
-          
-
-          
-            
-              Add array parameter/return
-              support to PL/Python (Peter Eisentraut)
-            
-          
-
-          
-            
-              Improve mapping of domains to Python base types in PL/Python (Peter Eisentraut)
-            
-          
-
-          
-            
-              Add Python 3 support to PL/Python (Peter Eisentraut)
-            
-
-            
-              The new server-side language is called 
-              linkend="plpython-python23">plpython3u.
-            
-          
-
-          
-            
-              Improve error location and exception reporting in PL/Python (Peter Eisentraut)
-            
-          
-
-        
-
-      
-
-    
-
-    
-      Client Applications
-      
+     
+      
+       Add the string data type in ecpg
+       Informix-compatibility mode (Zoltan Boszormenyi)
+      
+     
 
-        
-        
-          Add vacuumdb
-          
-          
-        
-
-      
-
-      
-        <link linkend="APP-PSQL"><application>psql</></link>
-        
-
-          
-            
-              Properly escape psql 
-              linkend="APP-PSQL-variables">variables and
-              identifiers (Pavel Stehule, Robert Haas)
-            
-
-            
-              For example, :'var' will be escaped as a literal string, and
-              :"var" will be escaped as an SQL identifier.
-            
-          
-
-          
-            
-              Ignore leading UTF-8-encoded Unicode byte-order marker in
-              psql (Itagaki Takahiro)
-            
-
-            
-              This is enabled when the client encoding is UTF-8.
-            
-          
-
-          
-            
-              Fix psql --file - to properly honor 
-              linkend="R1-APP-PSQL-3">
-              (Bruce Momjian)
-            
-          
-
-          
-            
-              Prevent overwriting of psql's command-line history
-              if two psql sessions are run simultaneously (Tom Lane)
-            
-          
-
-          
-            
-              Improve psql's tab completion support (Itagaki
-              Takahiro)
-            
-          
-
-        
-
-        
-        <application>psql</> Display
-          
-
-            
-              
-                Allow psql to use fancy Unicode line-drawing
-                characters via \pset linestyle unicode (Roger Leigh)
-              
-            
-
-            
-              
-                Improve display of wrapped columns in psql (Roger
-                Leigh)
-              
-
-              
-                The previous format is available by using \pset linestyle
-                old-ascii.
-              
-            
-
-          
-
-        
-
-        
-          <application>psql</> <link</div> <div class="diff rem">-          linkend="APP-PSQL-meta-commands"><command>\d</></link></div> <div class="diff rem">-          Commands
-          
-
-            
-              
-                Have \d show child tables that inherit from the specified
-                parent (Damien Clochard)
-              
-
-              
-                \d shows only the number of child tables, while
-                \d+ shows the names of all child tables.
-              
-            
-
-            
-              
-                Show definition of indexes in \d index_name (Khee Chin)
-              
-
-              
-                The definition is useful for expression indexes.
-              
-            
-
-            
-              
-                In psql, show the view definition only with \d+,
-                not with \d (Peter Eisentraut)
-              
-            
-
-          
-
-        
-      
-
-      
-        <link linkend="APP-PGDUMP"><application>pg_dump</></link>
-        
-
-          
-            
-              Have pg_dump/pg_restore
-              
-              also remove large objects (Itagaki Takahiro)
-            
-          
-
-          
-            
-              Fix pg_dump to properly dump large objects if
-              standard_conforming_strings is enabled (Tom Lane)
-            
-
-            
-              Large objects dumps now use hex format for output.  (SWITCH DEFAULT
-              FOR BETA? TOM)
-            
-          
-
-          
-            
-              Allow pg_dump to dump comments attached to columns
-              of composite types (Taro Minowa (Higepon))
-            
-          
-
-          
-            
-              Have pg_dump 
-              linkend="pg-dump-options">
-              output the pg_dump and server versions
-              in text output mode (Jim Cox, Tom Lane)
-            
-
-            
-              These were already present in custom output mode.
-            
-          
-
-        
-
-      
-
-      
-        <link</div> <div class="diff rem">-        linkend="app-pg-ctl"><application>pg_ctl</></link>
-        
-
-          
-            
-              Allow pg_ctl to be safely used to start the
-              postmaster at boot-time (Tom Lane)
-            
-
-            
-              Previously the pg_ctl process could have been mistakenly
-              identified as a running postmaster based on a stale
-              postmaster lock file.
-            
-          
-
-          
-            
-              Give pg_ctl the ability to initialize the database
-              (like initdb) (Zdenek Kotala)
-            
-          
-
-
-        
-
-      
-
-    
-
-    
-      <application>Development Tools</>
-
-      
-        <link linkend="libpq"><application>libpq</></link>
-
-        
-
-          
-            
-              Add new libpq functions
-              
-              linkend="libpq-connect">PQconnectdbParams()
-              and PQconnectStartParams() (Guillaume
-              Lelarge)
-            
-
-            
-              These functions are similar to PQconnectdb() and
-              PQconnectStart() except they allow a null-terminated
-              array of connection options, rather than requiring all options to
-              be sent in a single string.
-            
-          
-
-          
-            
-              Add libpq functions 
-              linkend="libpq-exec-escape-string">PQescapeLiteral()
-              and PQescapeIdentifier() (Robert Haas)
-            
-
-            
-              These functions return appropriately quoted and escaped literal
-              strings and identifiers.  The caller is not required to pre-allocate
-              the string result, as is required by PQescapeStringConn().
-            
-          
-
-          
-            
-              Add checking for a per-user service file (
-              linkend="libpq-pgservice">.pg_service.conf),
-              which is checked before the site-wide service file
-              (Peter Eisentraut)
-            
-
-            
-              The file .pg_service.conf is assumed to be in the
-              user's home directory.
-            
-          
-
-          
-            
-              Properly report an error if the specified libpq service
-              cannot be found (Peter Eisentraut)
-            
-          
-
-          
-            
-              Issue a warning if the 
-              linkend="libpq-pgpass">.pgpass-retrieved
-              password fails (Bruce Momjian)
-            
-          
-
-        
-
-      
-
-      
-        <link linkend="ecpg"><application>ecpg</></link>
-        
-
-          
-            
-              Add SQLDA
-              (SQL Descriptor Area) support to ecpg
-              (Boszormenyi Zoltan)
-            
-          
-
-          
-            
-              Add the DESCRIBE
-              [OUTPUT] statement to ecpg
-              (Boszormenyi Zoltan)
-            
-          
-
-          
-            
-              Add an ecpg 
-              linkend="ecpg-library">function to return the
-              current transaction status (Bernd Helmle)
-            
-          
-
-          
-            
-              Add the string data type in ecpg
-              Informix-compatibility mode (Zoltan Boszormenyi)
-            
-          
-
-          
-            
-              Allow ecpg to use new and old
-              variable names without restriction (Michael Meskes)
-            
-          
-
-          
-            
-              Allow ecpg to use variable names in
-              free()(Michael Meskes)
-            
-          
-
-          
-            
-              Have ecpg return zero for non-SQL3 data types
-             (Michael Meskes))
-            
-
-            
-              Previously it returned the negative of the data type oid.
-            
-          
-
-          
-
-          
-            <application>ecpg</> Cursors
-            
-
-            
-              
-                Add ecpg out-of-scope cursor support in native mode
-                (Boszormenyi Zoltan)
-              
-
-              
-                This allows DECLARE to use variables that are not in
-                scope when OPEN is called.  This facility already existed
-                in ecpg Informix-compatibility mode.
-              
-            
-
-            
-              
-                Allow dynamic ecpg cursor names (Boszormenyi Zoltan)
-              
-            
-
-            
-              
-                Allow ecpg to use noise words FROM and
-                IN in FETCH and MOVE (Zoltan
-                Boszormenyi)
-              
-            
-
-          
-
-        
-
-      
-
-    
-
-    
-      Build Options
-      
+     
+      
+       Allow ecpg to use new and old
+       variable names without restriction (Michael Meskes)
+      
+     
 
-        
-          
-            Enable client thread safety by default (Bruce Momjian)
-          
-
-          
-            Thread-safe builds can be disabled with 
-            linkend="configure">configure
-            
-          
-        
-
-        
-          
-            Add a compile-time option to allow the Linux out-of-memory killer
-            to kill backends (Alex Hunsaker, Tom Lane)
-          
-
-          
-            Now that /proc/self/oom_adj allows disabling
-            of the Linux out-of-memory (OOM)
-            killer for the postmaster and its children, the new
-            compile-time option 
-            linkend="linux-memory-overcommit">-DLINUX_OOM_ADJ=0
-            allows the killer to be enabled for postmaster
-            children.  pg_config shows if this flag
-            was used during compilation.
-          
-        
-
-        
-          
-            Use DocBook XSL stylesheets for man page
-            building (Peter Eisentraut)
-          
-        
-
-      
-
-      
-        Makefiles
-        
-
-          
-            
-              New Makefile targets 
-              linkend="build">world,
-              install-world, and installcheck-world
-              (Andrew Dunstan)
-            
-
-            
-              These are similar to the existing all, install,
-              and installcheck targets, but they build HTML
-              documentation, build and test /contrib, and test
-              server-side languages and ecpg.
-            
-          
-
-          
-            
-              Add data and documentation location control to 
-              linkend="xfunc-c-pgxs">PGXS Makefiles
-              (Mark Cave-Ayland)
-            
-          
-
-          
-            
-              Restructure the HTML documentation build
-              Makefile rules (Peter Eisentraut)
-            
-          
-
-        
-
-      
-
-      
-        New Requirements
-        
-
-          
-            
-              Require Autoconf 2.63 for building from source (Peter Eisentraut)
-            
-          
-
-          
-            
-              Require Flex 2.5.31 or later to build from source
-              (Tom Lane)
-            
-          
-
-          
-            
-              Require Perl version 5.8 or greater to build the server
-              from a CVS copy (John Naylor, Andrew)
-            
-          
-
-        
-
-      
-
-      
-        Windows
-        
-
-          
-            
-              Add support for compiling on 
-              linkend="install-win32-full">64-bit
-              Windows and running in 64-bit
-              mode (Tsutomu Yamada, Magnus)
-            
-
-            
-              This allows for large shared memory sizes on Windows.
-            
-          
-
-          
-            
-              Allow server builds using 
-              linkend="install-win32-full">Visual Studio
-              2008 (Magnus Hagander)
-            
-          
-
-          
-            
-              Allow multi-processor compilation using Microsoft Visual
-              C (Magnus Hagander)
-            
-          
-
-        
-
-      
-
-    
-
-    
-      Source Code
-      
+     
+      
+       Allow ecpg to use variable names in
+       free()(Michael Meskes)
+      
+     
 
-        
-          
-            Distribute documentation in a proper directory tree, rather than
-            as tar archive files inside the main distribution tarball (Peter Eisentraut)
-          
-
-          
-            For example, the HTML documentation is now in
-            doc/src/sgml/html;  the manual pages are packaged
-            similarly.
-          
-        
-
-        
-          
-            Enable the server lexer to be reentrant (Tom Lane)
-          
-
-          
-            This was needed for use of the lexer by PL/pgSQL.
-          
-        
-
-        
-          
-            Improve speed of memory allocation (Tom Lane, Greg Stark)
-          
-        
-
-        
-          
-            Add system columns to better document the use of indexes for constraint
-            enforcement (Tom Lane)
-          
-        
-
-        
-          
-            Allow multiple actions to be communicated using the same operating
-            system signal (Fujii Masao)
-          
-
-          
-            This allows improved backend communication as new features are
-            added.
-          
-        
-
-        
-          
-            Improve source code test coverage, including /contrib, PL/Python,
-            and PL/Perl (Peter Eisentraut, Andrew Dustan)
-          
-        
-
-        
-          
-            Remove the use of flat files for system table bootstrapping
-           (Tom Lane, Alvaro Herrera)
-          
-
-          
-            This also improves performance when using millions of users and
-            databases.
-          
-        
-
-        
-          
-            Improve the ability to translate psql strings
-            (Peter Eisentraut)
-          
-        
-
-        
-          
-            Reduce the length of some file names so file paths are less than
-            100 characters (Tom Lane)
-          
-
-          
-            Some decompression programs have problems with long file names.
-          
-        
-
-        
-          
-            Tighten input requirements for int2 vector input (Caleb
-            Welton)
-          
-        
-
-        
-          
-            Add a new 
-            linkend="errcodes-table">ERRCODE_INVALID_PASSWORD
-            SQLSTATE error code (Bruce Momjian)
-          
-        
-
-        
-          
-            Properly remove the few remaining personal source code copyright
-            entries (Bruce Momjian)
-          
-
-          
-            The personal copyright notices were insignificant but the community
-            occasionally had to answer questions about them.
-          
-        
-
-      
-
-      
-        Feature Support
-        
-
-          
-            
-              Use a more modern API for Bonjour (Tom Lane)
-            
-
-            
-              Bonjour now requires OS X 10.3 or later.
-            
-          
-
-          
-            
-              Add processor test-and-test lock support for the SuperH
-              architecture (Nobuhiro Iwamatsu)
-            
-          
-
-          
-            
-              Allow non-GCC compilers to use inline functions if
-              they support them (Kurt Harriman)
-            
-          
-
-          
-            
-              Remove support for platforms that don't have a working 64-bit
-              integer data types (Tom Lane)
-            
-
-            
-              It is believed all supported platforms have working 64-bit integer
-              data types.
-            
-          
-
-
-        
-
-      
-
-      
-        Server Programming
-        
-
-          
-            
-              Allow use of C++ functions in backend code  (Kurt
-              Harriman, Peter Eisentraut)
-            
-
-            
-              This removes keyword conflicts that previously made C++
-              usage difficult in backend code.  extern "C" { } might still
-              be necessary.
-            
-          
-
-          
-            
-              Add 
-              linkend="xaggr">AggCheckCallContext()
-              for use in detecting if a C function is
-              being called as an aggregate (Hitoshi Harada)
-            
-          
-
-          
-            
-              Require fastgetattr() and heap_getattr()
-              backend macros to use a non-NULL fourth argument (Robert Haas)
-              KEEP?
-            
-          
-
-        
-
-      
-
-      
-        Server Hooks
-        
-
-          
-            
-              Add parser hooks to access column and parameter references in
-              queries (Tom Lane)
-            
-          
-
-          
-            
-              Add a hook so loadable modules can control utility commands (Itagaki
-              Takahiro)
-            
-          
-
-          
-            
-              Allow the calling of parser hooks from SPI and cached
-              plans (Tom Lane)
-            
-          
-
-        
-
-      
-
-      
-        Binary Upgrade Support
-        
-
-          
-            
-              Add support for preservation of all 
-              linkend="catalog-pg-class">relfilenodes,
-              for use during binary upgrades (Bruce Momjian)
-            
-          
-
-          
-            
-              Add support for binary upgrades to preserve pg_type
-              and pg_enum oids (Bruce Momjian)
-            
-
-            
-              This is needed to allow binary upgrades of user-defined composite
-              types, arrays, and enums (enumerated types).
-            
-          
-
-          
-            
-              Move tablespace data directories into their own
-              PostgreSQL version-specific subdirectory (Bruce Momjian)
-            
-
-            
-              This simplifies binary upgrades.
-            
-          
-
-        
-
-      
-
-    
-
-    
-      Contrib
-      
+     
+      
+       Have ecpg return zero for non-SQL3 data types
+       (Michael Meskes))
+      
 
-        
-          
-            Add multi-threaded option (