Create 9.0 release notes; keep 9.0-alpha release notes in place.
authorBruce Momjian
Sat, 20 Mar 2010 03:30:12 +0000 (03:30 +0000)
committerBruce Momjian
Sat, 20 Mar 2010 03:30:12 +0000 (03:30 +0000)
doc/src/sgml/release-9.0.sgml

index cb07f37fef9357ff1cba620d58edfd9b06b77c2b..71bae0d496bdba784eacd779c6973447a52567d5 100644 (file)
-
+
 
-
+
+  Release 9.0
+
+  
+   Release date
+   2010-??-??
+  
+
+  
+    Overview
+
+    
+    ADD HERE
+    
+
+    
+
+    
+      The above items are explained in more detail in the sections below.
+    
+
+  
+
+  
+
+    Migration to Version 9.0
+    CURRENT AS OF 2010-03-15
+
+    
+      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)
+          
+        
+  
+        
+          
+            Remove server variable regex_flavor, which was defaulted
+            to advanced (e.g. Perl-regex compatible) for many
+            years (Tom)
+          
+        
+      
+      
+      
+    
+
+    
+      Queries
+      
+
+      
+        
+          When querying a parent table, do not do additional permission
+          checks on child tables returned as part of the query (Peter)
+        
+
+        
+          The SQL standard specifies this behavior.
+        
+      
+
+      
+        
+          Have fractional seconds truncate rather than round when using
+          float-based dates/times (Tom)
+        
+      
+
+      
+
+    
+
+    
+      String Handling
+      
+
+      
+        
+          Fix SIMILAR TO to match the SQL standard-specified behavior
+          by processing ? and {} the same way they are
+          processed in regular expressions (Tom)
+        
+      
+
+      
+        
+          Properly treat ^ and $ as literals in
+          SIMILAR TO patterns, to match the SQL standard (Tom)
+        
+
+        
+          Previously these were treated using regular expression syntax.  This
+          change breaks backward compatibility.  This also affects
+          substring()'s interpretation of regular expressions.
+        
+      
+
+      
+        
+          Process parentheses as literals in SIMILAR TO expressions;
+          also make character class handling more standards-compliant (Tom)
+        
+
+        
+          This also affects substring()'s handling of regular
+          expressions.
+        
+      
+
+      
+        
+          Do not allow substring() to have a negative third
+          length, per the SQL standard (Tom)
+        
+      
+
+    
+
+    
+
+    
+      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)
+          
+
+          
+            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)
+          
+
+          
+            This behavior can be changed via the server variable
+            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)
+          
+
+          
+            Instead, use 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)
+          
+
+          
+            Variables can be double-quoted to avoid this restriction.
+          
+        
+      
+
+    
+  
+
+  
+    Changes
+
+    
+      Server
+
+      
+        Continuous Archiving
+        
+
+          
+            
+              Allow continuous archive standby systems to accept read-only queries
+              (Simon, Heikki)
+            
+
+            
+              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)
+            
+
+            
+              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 documentation.
+            
+          
+
+          
+            
+              Add pg_last_xlog_receive_location() and
+              pg_last_xlog_replay_location(), which can be used to
+              monitor standby server WAL activity (Fujii Masao,
+              Heikki)
+            
+          
+
+        
+
+      
+
+      
+        Performance
+        
+
+          
+            
+              Improve performance of finding inherited child tables (Tom)
+            
+          
+
+          
+            
+              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 TRUNCATE when used in the same
+              transaction as table creation (Tom)
+            
+          
+
+          
+
+      
+
+      
+        Optimizer
+
+        
+          
+            
+              Allow IS NOT NULL restrictions to use indexes (Tom)
+            
+
+            
+              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)
+            
+          
+        
+      
+
+      
+        GEQO
+        
+
+          
+            
+              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 geqo_seed to randomize the starting value
+              of the random plan generator.
+            
+          
+
+          
+            
+              Improve GEQO plan selection (Tom).
+            
+
+            
+              This avoids the rare error, "failed to make a  valid plan".
+            
+          
+
+        
+
+      
+
+      
+        Optimizer Statistics
+        
+
+          
+            
+              Improve ANALYZE to support inheritance-tree statistics
+          (Tom)
+            
+
+            
+              This is particularly useful for partitioned tables.
+            
+          
+
+          
+            
+              Improve autovacuum detection of when re-analyze is necessary (Tom)
+            
+          
+
+          
+            
+              Improve optimizer statistics for greater/less-than comparisons
+          (Tom)
+            
+
+            
+              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 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 RADIUS (Remote Authentication Dial In
+              User Service) authentication (Magnus)
+            
+          
+
+
+          
+            
+              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 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 application name, which is
+              displayed in pg_stat_activity (Dave Page)
+            
+          
+
+          
+            
+              Add an SQL state option (%e) to log_line_prefix
+              (Guillaume Smet)
+            
+          
+
+          
+            
+              Write to the Windows event log in UTF16 encoding
+              (Itagaki Takahiro)
+            
+          
+
+        
+
+      
+
+      
+        Statistics Counters
+        
+
+          
+            
+              Add pg_stat_reset_shared('bgwriter') to reset the
+              cluster-wide shared statistics of the bgwriter (Greg Smith)
+            
+          
+
+          
+            
+              Add 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)
+            
+          
+
+        
+
+      
+
+      
+        Server Settings
+        
+
+          
+            
+              Allow setting of configuration variables based on database/role
+              combinations (Alvaro)
+            
+
+            
+              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 bonjour, which controls whether
+              a Bonjour-enabled binary advertises itself via Bonjour
+              (Tom)
+            
+
+            
+              The default is off, meaning it does not advertise.
+            
+          
+
+          
+            
+              Log changed parameter values when postgresql.conf is
+              reloaded (Peter)
+            
+          
+
+        
+
+      
+
+    
+
+    
+      Queries
+      
+
+        
+          
+            Do SELECT FOR UPDATE/SHARE processing
+            after applying LIMIT, so the number of rows returned
+            is always predictable (Tom)
+          
+
+          
+            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
+            LIMIT/OFFSET syntax in the same query (Tom)
+          
+        
+
+        
+          
+            Increase the supported frame options in window functions (Hitoshi
+            Harada)
+          
+
+          
+            This allows frames (RANGE or ROWS) to start
+            with CURRENT ROW, and to use the ROWS n
+            PRECEDING/FOLLOWING clause.
+          
+        
+
+
+      
+
+      
+        Unicode Strings
+        
+
+          
+            
+              Add Unicode surrogate pair (dual 16-bit) support to U&
+              strings and identifiers (Peter)
+            
+          
+
+          
+            
+              Allow Unicode escapes in 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)
+          
+        
+
+        
+          
+            Allow the creation of enumerate types with no labels (Bruce)
+          
+
+          
+            This is useful for supporting binary upgrades.
+          
+        
+
+        
+          
+            Have columns defined with storage type MAIN remain on
+            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.
+            
+          
+
+        
+
+      
+
+      
+        <command>CREATE TABLE</>
+        
+
+          
+            
+              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)
+            
+
+            
+              This allows the creation of a table to match an existing composite
+              type.  Additional constraints and defaults can be specified in the
+              command.
+            
+          
+
+          
+            
+              Have SELECT and CREATE TABLE AS return
+              row counts to the client
+              (Boszormenyi Zoltan)
+            
+
+            
+              psql does not display these counts.
+            
+          
+
+        
+
+      
+
+      
+        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 CREATE TABLE CONSTRAINT ...
+              EXCLUDE clause.  While uniqueness checks could be specified
+              using this syntax, the real value of this features 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 GRANT/REVOKE IN SCHEMA clause
+              (Petr Jelinek)
+            
+          
+
+          
+            
+              Add the ability to control large object permissions with
+              GRANT/REVOKE (KaiGai Kohei)
+            
+          
+
+        
+
+      
+
+    
+
+    
+      Utility Operations
+
+      
+
+        
+          
+            Have LISTEN/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)
+          
+
+          
+            Global system tables still cannot be clustered.
+          
+        
+
+      
+
+      
+        <command>COPY</>
+        
+
+          
+            
+              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.
+            
+          
+
+        
+
+      
+
+      
+        <command>EXPLAIN</>
+        
+
+          
+            
+              Add new EXPLAIN (BUFFERS) to report query buffer
+              activity (Itagaki Takahiro)
+            
+
+            
+              log_*_stats log output, e.g. 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.
+            
+          
+
+        
+
+      
+
+      
+        <command>VACUUM</>
+        
+
+          
+            
+              Change VACUUM FULL to rewrite the entire table and
+              indexes, rather than moving around single rows to compact space
+              (Itagaki Takahiro, Tom)
+            
+
+            
+              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)
+            
+          
+
+          
+            
+              Allow REINDEX on system indexes (Tom)
+            
+
+            
+              WAS THIS POSSIBLE ON ANY SYSTEM TABLE BEFORE?  NON-HARDWIRED ONES?
+            
+          
+
+          
+            
+              Add point_ops opclass for GiST (Teodor)
+            
+
+            
+              DETAILS?
+            
+          
+
+          
+            
+              Use red-black trees for GIN index creation (Teodor)
+            
+
+            
+              Red-black trees are self-balanced so allow for faster index
+          creation.
+            
+          
+
+        
+
+      
+
+    
+
+    
+      Data Types
+      
+
+        
+          
+            Allow hex values to be specified in bytea strings (Peter)
+          
+
+          
+            The variable 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 extra_float_digits to be increased to 3
+        (Tom)
+          
+
+          
+            The previous maximum extra_float_digits was 2.
+          
+        
+
+      
+
+      
+        Full Text Search
+        
+
+          
+            
+              Add prefix support for the full text search synonym dictionary
+          (Teodor)
+            
+          
+
+          
+            
+              Add full text search filtering dictionaries (Teodor)
+            
+
+            
+              Filtering dictionaries allow tokens to be modified and passed to
+              subsequent dictionaries.
+            
+          
+
+          
+            
+              Allow underscores in full text email addresses (Teodor)
+            
+          
+
+        
+
+      
+
+    
+
+    
+      Functions
+      
+
+        
+          
+            Allow case-insensitive 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 to_char() scientific notation output
+            ('EEEE') (Pavel Stehule, Brendan Jurd)
+          
+        
+
+        
+          
+            Have to_char() honor 'FM' (fill mode) in
+            'Y', 'YY', and 'YYY' specifications
+            (Bruce)
+          
+
+          
+            It was already honored by 'YYYY'.
+          
+        
+
+        
+          
+            Correct calculations of "overlap" and "contains" operations over
+            polygons (Teodor)
+          
+        
+
+      
+
+      
+        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 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 get_bit() and set_bit() functions
+              for bit strings, mirroring those for bytea
+              (Leonardo F)
+            
+          
+
+          
+            
+              Implement OVERLAY() (replace) for bit strings
+              and bytea (Leonardo F)
+            
+          
+
+        
+
+      
+
+      
+        Object Information Functions
+        
+
+          
+            
+              Add pg_table_size() and pg_indexes_size()
+              to provide a more user-friendly interface to the
+              pg_relation_size() function (Bernd Helmle)
+            
+          
+
+          
+            
+              Add has_sequence_privilege() for sequence permission
+              checking (Abhijit Menon-Sen)
+            
+          
+
+          
+            
+              Have information schema properly display date type octet lengths
+          (Peter)
+            
+
+            
+              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 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 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 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 CREATE
+              LANGUAGE (Tom)
+            
+
+            
+              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.
+            
+          
+
+          
+
+          
+          PL/PgSQL Server-Side Language
+
+          
+
+            
+              
+                Install server-side language PL/pgSQL by default (Bruce) 
+              
+            
+
+            
+              
+                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)
+              
+            
+
+            
+              
+                Have PL/pgSQL use the main lexer, rather than a custom version (Tom)
+              
+            
+
+          
+
+        
+
+        
+          PL/pgSQL Cursors
+          
+
+            
+              
+                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)
+              
+            
+
+            
+              
+                Add PL/pgSQL's OPEN cursor FOR EXECUTE to use parameters
+                (Pavel Stehule, Itagaki Takahiro)
+              
+
+              
+                This is accomplished with a new USING clause.
+              
+            
+
+          
+
+        
+
+        
+          PL/Perl Server-Side Language
+          
+
+            
+              
+                Add new PL/Perl 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 plperl.on_init to specify a PL/Perl
+                Perl initialization function (Tim Bunce)
+              
+
+              
+                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)
+              
+            
+
+            
+              
+                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)
+              
+            
+
+            
+              
+                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)
+              
+            
+
+          
+
+        
+
+        
+          PL/Python Server-Side Language
+          
+
+            
+              
+                Add Unicode support in PL/Python (Peter)
+              
+
+              
+                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) 
+              
+            
+
+            
+              
+                Improve mapping of domains to Python base types in PL/Python (Peter)
+              
+            
+
+            
+              
+                Add Python 3 support to PL/Python (Peter)
+              
+
+              
+                The new server-side language is called plpython3u.
+              
+            
+
+            
+              
+                Improve error location and exception reporting in PL/Python (Peter)
+              
+            
+
+          
+
+        
+
+      
+
+    
+
+    
+      Client Applications
+      
+
+        
+          
+            Add vacuumdb 
+            analyze (Bruce)
+          
+        
+
+      
+
+      
+        <application>psql</>
+        
+
+          
+            
+              Properly escape psql 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
+              
+            
+          
+
+          
+            
+              Prevent overwriting of psql's command-line history
+              if two psql sessions are run simultaneously (Tom)
+            
+          
+
+          
+            
+              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</> <command>\d</> 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)
+              
+            
+
+          
+
+        
+      
+
+      
+        <application>pg_dump</>
+        
+
+          
+            
+              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)
+            
+
+            
+              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 
+              pg_dump and server versions in text output mode (Jim
+              Cox, Tom)
+            
+
+            
+              These were already present in custom output mode.
+            
+          
+
+        
+
+      
+
+      
+        <application>pg_ctl</>
+        
+
+          
+            
+              Allow pg_ctl to be safely used to start the
+              postmaster at boot-time (Tom)
+            
+
+            
+              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>libpq</>
+        
+
+          
+            
+              Add new libpq functions
+              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 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 (.pg_service.conf),
+              which is checked before the site-wide service file (Peter)
+            
+
+            
+              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)
+            
+          
+
+          
+            
+              Issue a warning if the .pgpass-retrieved password fails
+              (Bruce)
+            
+          
+
+        
+
+      
+
+      
+        <application>ecpg</>
+        
+
+          
+            
+              Add SQLDA (SQL Descriptor Area) support to ecpg
+              (Boszormenyi Zoltan)
+            
+          
+
+          
+            
+              Add the DESCRIBE [OUTPUT] statement to
+              ecpg (Boszormenyi Zoltan)
+            
+          
+
+          
+            
+              Add an ecpg 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)
+            
+          
+
+          
+            
+              Have ecpg return zero for non-SQL3 data types (Michael)
+            
+
+            
+              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
+      
+
+        
+          
+            Enable client thread safety by default (Bruce)
+          
+
+          
+            Thread-safe builds can be disabled with configure
+            
+          
+        
+
+        
+          
+            Add a compile-time option to allow the Linux out-of-memory killer
+            to kill backends (Alex Hunsaker, Tom)
+          
+
+          
+            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
+            -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)
+          
+        
+
+      
+
+      
+        Makefiles
+        
+
+          
+            
+              New Makefile targets world,
+              install-world, and installcheck-world (Andrew)
+            
+
+            
+              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 PGXS
+              Makefiles (Mark Cave-Ayland)
+            
+          
+
+          
+            
+              Restructure the HTML documentation build
+              Makefile rules (Peter)
+            
+          
+
+        
+
+      
+
+      
+        New Requirements
+        
+
+          
+            
+              Require Autoconf 2.63 for building from source (Peter)
+            
+          
+
+          
+            
+              Require Flex 2.5.31 or later to build from source
+              (Tom)
+            
+          
+
+          
+            
+              Require Perl version 5.8 or greater to build the server
+              from a CVS copy (John Naylor, Andrew)
+            
+          
+
+        
+
+      
+
+      
+        Windows
+        
+
+          
+            
+              Add support for compiling on 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 Visual Studio 2008 (Magnus)
+            
+          
+
+          
+            
+              Allow multi-processor compilation using Microsoft Visual
+              C (Magnus)
+            
+          
+
+        
+
+      
+
+    
+
+    
+      Source Code
+      
+
+        
+          
+            Distribute documentation in a proper directory tree, rather than
+            as tar archive files inside the main distribution tarball (Peter)
+          
+
+          
+            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)
+          
+
+          
+            This was needed for use of the lexer by PL/pgSQL.
+          
+        
+
+        
+          
+            Improve speed of memory allocation (Tom, Greg Stark)
+          
+        
+
+        
+          
+            Add system columns to better document the use of indexes for constraint
+            enforcement (Tom)
+          
+        
+
+        
+          
+            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, Andrew)
+          
+        
+
+        
+          
+            Remove the use of flat files for system table bootstrapping (Tom,
+            Alvaro)
+          
+
+          
+            This also improves performance when using millions of users and
+            databases.
+          
+        
+
+        
+          
+            Improve the ability to translate psql strings
+            (Peter)
+          
+        
+
+        
+          
+            Reduce the length of some file names so file paths are less than
+            100 characters (Tom)
+          
+
+          
+            Some decompression programs have problems with long file names.
+          
+        
+
+        
+          
+            Tighten input requirements for int2 vector input (Caleb
+            Welton)
+          
+        
+
+        
+          
+            Properly remove the few remaining personal source code copyright
+            entries (Bruce)
+          
+
+          
+            The personal copyright notices were insignificant but the community
+            occasionally had to answer questions about them.
+          
+        
+
+        
+          
+            Add a new ERRCODE_INVALID_PASSWORD SQLSTATE error
+            code (Bruce)
+          
+        
+
+      
+
+      
+        Feature Support
+        
+
+          
+            
+              Use a more modern API for Bonjour (Tom)
+            
+
+            
+              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)
+            
+
+            
+              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)
+            
+
+            
+              This removes keyword conflicts that previously made C++
+              usage difficult in backend code.  extern "C" { } might still
+              be necessary.
+            
+          
+
+          
+            
+              Add 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)
+            
+          
+
+          
+            
+              Add a hook so loadable modules can control utility commands (Itagaki
+              Takahiro)
+            
+          
+
+          
+            
+              Allow the calling of parser hooks from SPI and cached
+              plans (Tom)
+            
+          
+
+        
+
+      
+
+      
+        Binary Upgrade Support
+        
+
+          
+            
+              Add support for preservation of all relfilenodes, for
+              use during binary upgrades (Bruce)
+            
+          
+
+          
+            
+              Add support for binary upgrades to preserve pg_type
+              and pg_enum oids (Bruce)
+            
+
+            
+              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)
+            
+
+            
+              This simplifies binary upgrades.
+            
+          
+
+        
+
+      
+
+    
+
+    
+      Contrib
+      
+
+        
+          
+            Add multi-threaded option (
+            /contrib/pgbench (Itagaki Takahiro)
+          
+
+          
+            This allows multiple CPUs to be used for pgbench tests.
+          
+        
+
+        
+          
+            Add \shell and \setshell meta commands to
+            /contrib/pgbench (Michael Paquier)
+          
+        
+
+        
+          
+            New features for /contrib/dict_xsyn (Sergey Karpov)
+          
+
+          
+            The new options are matchorig, matchsynonyms,
+            and keepsynonyms.
+          
+        
+
+        
+          
+            Add full text dictionary /contrib/unaccent (Teodor)
+          
+
+          
+            This filter dictionary removes accents from tokens.
+          
+        
+
+        
+          
+            Add dblink_get_notify() to /contrib/dblink
+            (Marcus Kempe)
+          
+
+          
+            This allows async notifications in dblink.
+          
+        
+
+        
+          
+            Greatly increase /contrib/hstore's length limit and add
+            btree and hash abilities so GROUP BY and
+            DISTINCT operations are possible (Andrew Gierth)
+          
+
+          
+            New functions and operators were also added.
+          
+        
+
+        
+          
+            Add /contrib/passwordcheck which can check the strength of
+            assigned passwords (Laurenz Albe)
+          
+
+          
+            The source code of this module should be modified to implement
+            site-specific password policies.
+          
+        
+
+        
+          
+            Add query text to /contrib/auto_explain output (Andrew)
+          
+        
+
+        
+          
+            Add buffer access counters to /contrib/pg_stat_statements
+            (Itagaki Takahiro)
+          
+        
+
+        
+          
+            Update /contrib/start-scripts/linux to use
+            /proc/self/oom_adj to disable the Linux
+            out-of-memory (OOM) killer (Alex Hunsaker, Tom)
+          
+        
+
+      
+
+    
+  
+
+
+
+
   Release 9.0alpha4
   
     Overview