-
+
-
+
+
+
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.
+
+
+
+
+
+
+
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.
+
+
+
+
+
+
+
+
+
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.
+
+
+
+
+
+
+
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.
+
+
+
+
+
+
+
+
+
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.
+
+
+
+
+
+
+
+
+
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)
+
+
+
+
+
+
+
+
+
+ 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)
+
+
+
+
+
+
+
+
+
+ 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>.
+
+
+
+
+
+
+
+
+
+
+
+ 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)
+
+
+
+
+
+
+
+
+
+
+
+
+ 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.
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+
+
+ Give
pg_ctl> the ability to initialize the database
+ (like
initdb>) (Zdenek Kotala)
+
+
+
+
+
+
+
+
+
+
+
+
+ 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)
+
+
+
+
+
+
+
+
+
+
+
+ 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>.
+
+
+
+
+
+
+
+
+
+ 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
CPU>s 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