PostgreSQL 9.4

Major features

Backend changes

Loadable modules

  • function prototypes no longer required for functions marked with PG_FUNCTION_INFO_V1 (commit e7128e8d)

Memory management

  • Linux huge TLB page support added (initial commit 1a3458b6)

Performance

  • the following ALTER TABLE commands no longer require an ACCESS EXCLUSIVE lock (commit e5550d5f):
    • ALTER COLUMN [RE]SET attribute_option
    • ALTER COLUMN SET STATISTICS
    • CLUSTER ON
    • SET WITHOUT CLUSTER
    • VALIDATE CONSTRAINT

Storage parameters

  • user_catalog_table added (commit 66abc260)

System catalog

  • enable modification of user-defined tables in the pg_catalog schema (commit 8e18d04d)

Triggers

Views

  • materialized views can be refreshed concurrently (commit cc1965a9)
  • check_option option added (commit 4cbe3ac3)
  • views containing non-updatable columns can be automatically updated (commit cab5dc5d)
  • securiy barrier views can be updated (commit 842faa71)

Source configuration

  • option --enable-tap-tests added (commit 16381b2a)
  • option --with-extra-version added (commit 46328916)
  • option --with-krb5 removed (commit 98de86e4)

Supported platform changes

  • IRIX support removed (commit ea91a6be)

SQL changes

General

  • WITH ORDINALITY syntax added (commit c62736cc)
  • FILTER clause for aggregate function calls (commit b560ec1b)
  • support for ordered-set (WITHIN GROUP) aggregates (commit 8d65da1f)
  • support for VARIADIC aggregate functions (commit 0d3f4406)
  • polymorphic aggregates can have non-polymorphic state data types (commit f0fedfe8)

Modified:

  • ALTER AGGREGATE
    • support for VARIADIC aggregate functions (commit 0d3f4406)
    • support for ordered-set (WITHIN GROUP) aggregate functions (commit 8d65da1f)
  • ALTER FOREIGN TABLE
    • support for enabling/disabling triggers added (commit 7cbe57c3)
  • ALTER INDEX
    • ALTER INDEX ... ALL IN TABLESPACE ... syntax added (initial commit fbe19ee3)
  • ALTER MATERIALIZED VIEW
    • ALTER MATERIALIZED VIEW ALL IN TABLESPACE ... SET TABLESPACE ... syntax added (commit d9b2bc45)
  • ALTER TABLE
    • ALTER TABLE ... ALL IN TABLESPACE ... syntax added (initial commit fbe19ee3)
    • ALTER TABLE ... REPLICA IDENTITY ...  syntax added (initial commit 07cacba9)
  • COPY
    • FORCE NULL option added (commit 3b5e03dc)
    • COPY operations into tables with DEFAULT nextval() speeded up (commit 4d1e2aeb)
  • CREATE AGGREGATE
    • options for moving-aggregate optimization added (commit a9d9acbf)
    • options enabling polymorphic aggregates to have non-polymorphic state data types added (commit f0fedfe8)
    • support for VARIADIC aggregate functions (commit 0d3f4406)
    • support for ordered-set (WITHIN GROUP) aggregate functions (commit 8d65da1f)
    • option SSPACE added forproviding the approximate average size of the aggregate's state value (commit 6cb86143)
  • CREATE TABLESPACE
    • CREATE TABLESPACE ... WITH ( options ) syntax added (commit 5254958e)
  • CREATE VIEW
    • WITH [ CASCADED | LOCAL ] CHECK OPTION syntax added (commit 4cbe3ac3)
  • DISCARD
    • DISCARD SEQUENCES syntax added (commit d90ced8b)
  • DROP AGGREGATE
    • support for VARIADIC aggregates added (commit 0d3f4406)
  • EXPLAIN
    • EXPLAIN ANALYZE now shows planning time (commit 9347baa5)
    • EXPLAIN ANALYZE now shows exact and lossy block counts in bitmap heap scans (commit 2bb1f14b)
    • total runtime label renamed to execution time (commit 5f86cbd7)
    • now shows  the grouping columns in Agg and Group nodes (commit f2609905)
  • REFRESH MATERIALIZED VIEW
    • REFRESH MATERIALIZED VIEW CONCURRENTLY added (commit cc1965a9)
  • SET
    • when SET LOCAL ... is executed outside of a transaction block, a WARNING (instead of an ERROR) will be issued (commit a6542a4b)
  • SET CONSTRAINTS
    • when executed outside of a transaction block, a WARNING (instead of an ERROR) will be issued (commit a6542a4b)
  • SET TRANSACTION
    • when executed outside of a transaction block, a WARNING (instead of an ERROR) will be issued (commit a6542a4b)

WAL changes

Data types

Added:

System catalogue changes

Tables

Modified:

Views

Added:

Modified:

System function changes

Added:

Modified:

Configuration changes

Added:

Modified:

Indexing changes

GIN

  • index size reduced through compression of GIN posting lists (commit 36a35c55)
  • speed of multi-key lookups improved (commits e20c70cb, 25b1dafa and 626a1206)
  • improved search speed where one item is rare and the other is frequent (commit dbc649fd)

Authentication changes

SSL

Kerberos

  • native support for Kerberos removed (commit 98de86e4)

Replication changes

Replication configuration changes

Added:

libpq changes

  • function PQhostaddr() added (commit 9f80f483)
  • function PQconndefaults() now ignores invalid service files ((commit 9e0a97f1)
  • support for TLS protocol versions beyond TLSv1 added (commit 820f08ca)

ECPG changes

  • sizeof() operators can be used as array dimensions (commit 08d1b22b)
  • properly handle nested C-style comments in C and SQL (commit 05b476c2)

Procedural language changes

PL/pgSQL

  • the current PL/pgSQL call stack can be retrieved using GET DIAGNOSTICS (commit 83128325)
  • option print_strict_params for displaying the parameters passed to a query which violated a STRICT constraint (commit 689746c0)
  • configuration parameters plpgsql.extra_warnings and plpgsql.extra_errors for enabling additional PL/pgSQL warnings and errors (commit 7d8f1de1)

PL/Perl

PL/Python

  • PostgreSQL numeric values now converted to Python decimal (commit 7919398b)

PL/Tcl

Foreign data wrapper changes

Information schema

  • column parameter_default added to view information_schema.parameters (commit 85ed91ee)
  • information_schema.schemata now shows all accessible schemas, not just those owned by the current user (commit b34f8f40)

Server utilities

Modified:

  • initdb
    • now throws error for incorrect locale settings, instead of silently falling back to a default setting (commit 31a26323)
  • pg_ctl
    • now returns exit code 4 if the specified data directory is inaccessible (commit 11d205e2)
  • pg_xlogdump
    • --follow option added, making it possible to report a live log stream

Core utilities

Added:

Modified:

psql

  • SSL compression status now shown in login banner (commit d3c98069)
  • \pset without arguments now shows all settings (commit c64e68fd)

Contrib modules

Added:

Modified:

  • auto_explain
    • option auto_explain.log_trigger added, which logs trigger execution time (commit e2a0fc53)
  • cube
    • data stored more compactly (commit 08612f45)
  • file_fdw
    • force_null option added (commit 3b5e03dc)
  • hstore
    • following functions added (commit d9134d0a):
      • hstore_to_jsonb()
      • hstore_to_jsonb_loose()
  • pgbench
    • --rate option added (initial commit fc9f4e9f)
    • --progress option added (initial commit 4a87f308)
    • hard-wired line length limit in custom script files removed (commit 61a07bae)
    • long options added (commit 79cddb18)
  • pgcrypto
    • function gen_random_uuid() added (commit e6170126)
  • pg_stat_statements
    • query text stored in file (commit f0d6f202)
    • records can be returned without the query text (commit f0d6f202)
    • internal query hash identifier exposed (commit 91484409)
    • DEALLOCATE no longer tracked (commit 3cd934f6)
    • statistics file saved to pg_stat directory instead of global (commit 654e8e44)
  • pgstattuple
    • functions converted to use regclass types as the argument (commit 1dc11866)
    • rows from uncommitted transactions no longer counted as dead (commit 80c79ab2)
  • pg_trgm
    • improved heuristics for regular expression index searches (commit 80a5cf64)
  • pg_upgrade
    • -u/--user options renamed to -U/--username for consistency with other utilties (commit 457d6cf0)
    • memory consumption significantly reduced (commit 2a2e40aa)
  • pg_xlogdump
    • --follow option added, making it possible to report a live log stream (commit ce9bb92f)
  • postgres_fdw
    • extended pushdown of VARCHAR columns through improved handling of collation-related decisions (commit 76f965ff)
  • uuid-ossp
    • support for BSD and e2fsprogs UUID libraries added (commit b8cc8f94)
  • vacuumlo
    • cursor used to limit client-side memory usage (commit 67ccbb08)

Testing

Pre-release test versions

Initial commit marking the start of PostgreSQL 9.4 development is 58ae1f45 (2013-06-14).