-
+
-
Release 8.5alpha2
+
Release 8.5alpha3
Overview
- Add SQL-compliant triggers on columns, which fire only if
- certain columns are named in the UPDATE's SET list.>
+ Remove previously deprecated configuration
+ parameter add_missing_from. The system now always behaves as
+ though add_missing_from were off.
- Add CREATE LIKE INCLUDING COMMENTS and STORAGE, and INCLUDING
+ Performance and behavioral improvements in UPDATE,
+ DELETE, and SELECT FOR UPDATE/SHARE queries with
+ joins. Various corner-cases could result in duplicated output
+ rows. Set-returning functions are now prohibited in the
+ target list of SELECT FOR UPDATE/SHARE. FOR UPDATE does not
+ propagate into a WITH query anymore.
+
+
+
+ Fixed for SELECT FOR UPDATE/SHARE in conjuction with LIMIT.
+ Previously, it could return fewer rows than the limit specified.
+
+
+
+ Add a WHEN clause to CREATE TRIGGER, allowing a boolean expression
+ to be checked to determine whether the trigger should be fired.
+
+ For BEFORE triggers this is mostly a matter of spec compliance; but
+ for AFTER triggers it can provide a noticeable performance
+ improvement, since queuing of a deferred trigger event and
+ re-fetching of the row(s) at end of statement can be
+ short-circuited if the trigger does not need to be fired.
+
+
+
+ Add exclusion constraints, which generalize the concept of
+ uniqueness to support any indexable commutative operator, not just
+ equality. Two rows violate the exclusion constraint if
+ "row1.col OP row2.col" is TRUE for each of the columns in
+ the constraint.
+
+
+
+ Support ORDER BY within aggregate function calls, at long last
+ providing a non-kluge method for controlling the order in which
+ values are fed to an aggregate function. At the same time eliminate
+ the old implementation restriction that DISTINCT was only supported
+ for single-argument aggregates.
+
+ Behavioral change: formerly, agg(DISTINCT x) dropped null values of
+ x unconditionally. Now, it does so only if the agg transition
+ function is strict; otherwise nulls are treated as DISTINCT
+ normally would, i.e., you get one copy.
+
+
+
+ Add SQL-compliant triggers on columns, which fire only if
+ certain columns are named in the UPDATE's SET list.
+
+
+
+ Add CREATE LIKE INCLUDING COMMENTS and STORAGE, and INCLUDING
ALL shortcut to allow users to make an exact copy of a table including
- all options and features.>
+ all options and features.
- Define a new, more extensible syntax for COPY options
- in order to support additional COPY options in the future.>
+ Define a new, more extensible syntax for COPY options
+ in order to support additional COPY options in the future.
- Modify the definition of window-function PARTITION
+ Modify the definition of window-function PARTITION
BY and ORDER BY clauses so that their elements are always
taken as simple expressions over the query's input
- columns. This fixes a bug.>
+ columns. This fixes a bug.
- Fix bug with nested WITH RECURSIVE statements.>
+ Fix bug with nested WITH RECURSIVE statements.
- Add surrogate pair support for U& string and identifier
- syntax.>
+ Add surrogate pair support for U& string and identifier
+ syntax.
- Add Unicode escapes in E'...' strings.>
+ Add Unicode escapes in E'...' strings.
- Make TRUNCATE do truncate-in-place when processing
+ Allow rewriting ALTER TABLE to skip WAL logging.
+
+
+
+ Speed up information schema privilege views.
+
+
+
+ Make TRUNCATE do truncate-in-place when processing
a relation that was created or previously truncated in the
- current (sub)transaction.>
+ current (sub)transaction.
- Implement "join removal" for cases where the inner side
+ Implement "join removal" for cases where the inner side
of a left join is unique and is not referenced above the join. This should
- speed up many ORM-generated and reporting tool queries.
+ speed up many ORM-generated and reporting tool queries.
- Remove the use of the flat files pg_auth and
+ Remove the use of the flat files pg_auth and
pg_database in order to improve performance. (Warning: pgbouncer
and possibly other tools currently suggest referring to the pg_auth
- file for its user database. Such schemes will no longer work.)
+ file for its user database. Such schemes will no longer work.)
- Add a Boolean server configuration parameter
+ Provide a parenthesized-options syntax for VACUUM, analogous to
+ that recently adopted for EXPLAIN. This will allow additional
+ options to be implemented in future without having to make them
+ fully-reserved keywords. The old syntax remains available for
+ existing options, however.
+
+
+
+ Add support for an application_name parameter, which is displayed
+ in pg_stat_activity and recorded in log entries.
+
+
+
+ Fix longstanding problems in VACUUM caused by untimely
+ interruptions.
+
+
+
+ Error when a specified connection service is not found in
+ pg_service.conf, instead of ignoring it.
+
+
+
+ Add YAML to list of EXPLAIN formats.
+
+
+
+ Add an EXPLAIN (BUFFERS) option to show buffer-usage statistics.
+
+
+
+ Add a hook to let loadable modules get control at ProcessUtility
+ execution, and use it to extend contrib/pg_stat_statements to track
+ utility commands.
+
+
+
+ Add a Boolean server configuration parameter
"bonjour" to control whether a Bonjour-enabled
- build actually attempts to advertise itself via Bonjour.>
+ build actually attempts to advertise itself via Bonjour.
- When reloading postgresql.conf, log what parameters actually
- changed.>
+ When reloading postgresql.conf, log what parameters actually
+ changed.
- Make it possibly to specify server configuration parameters
+ Make it possibly to specify server configuration parameters
per user-database combination. Add a \drds command to psql to
- display the settings.>
+ display the settings.
- Allow the collection of statistics on sequences.>
+ Allow the collection of statistics on sequences.
- Increase the maximum value of extra_float_digits to
+ Increase the maximum value of extra_float_digits to
3, and have pg_dump use that value when the backend is new
enough to allow it, because it is possible to need 3 extra
- digits for float4 values (but not for float8 values).>
+ digits for float4 values (but not for float8 values).
- Add ALTER DEFAULT PRIVILEGES command, which allows
+ When querying a table with child tables, do not check permissions
+ on the child tables, only on the parent table. The old behavior was
+ found to be useless and confusing in virtually all cases, and also
+ contrary to the SQL standard.
+
+
+
+ Add a hook to CREATE/ALTER ROLE to allow an external module to
+ check the strength of database passwords, and create a sample
+ implementation of such a hook as a new contrib module
+ "passwordcheck".
+
+
+
+ Add large object access control.
+
+
+
+ Allow LDAP authentication to operate in search+bind
+ mode, meaning it does a search for the user in the directory
+ first, and then binds with the DN found for this user. This
+ allows for LDAP logins in scenarios where the DN of the user
+ cannot be determined simply by prefix and suffix, such as the
+ case where different users are located in different
+ containers. The old way of authentication can be
+ significantly faster, so it's kept as an option.
+
+
+
+ Add ALTER DEFAULT PRIVILEGES command, which allows
users to adjust the privileges that will be applied to
- subsequently-created objects.>
+ subsequently-created objects.
- Add GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS IN SCHEMA.
- This makes it easier to manage permissions on database objects.
+ Add GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS IN SCHEMA.
+ This makes it easier to manage permissions on database objects.
- Support "samehost" and "samenet" specifications
+ Support "samehost" and "samenet" specifications
in pg_hba.conf. This allows users with dynamic server addresses to run
- PostgreSQL without frequently modifying pg_hba.conf
+ PostgreSQL without frequently modifying pg_hba.conf.
- Support POSIX-compatible interpretation of ? as well as {m,n}
- and related constructs in SIMILAR TO, per SQL:2008.>
+ Remove configuration parameter regex_flavor. It is now always
+ "advanced".
+
+
+
+ Teach the regular expression functions to do case-insensitive
+ matching and locale-dependent character classification properly
+ when the database encoding is UTF8. This previously only worked
+ correct for single-byte encodings and is still broken for other
+ multibyte encodings.
+
+
+
+ Support POSIX-compatible interpretation of ? as well as {m,n}
+ and related constructs in SIMILAR TO, per SQL:2008.
- Fix encoding handling in binary input function of xml type.>
+ When doing "ARRAY[...]::domain", where domain is a domain
+ over an array type, we need to check domain constraints. Regression
+ introduced in 8.4.
+
+
+
+ Fix integer-to-bit-string conversions to handle the first
+ fractional byte correctly when the output bit width is wider than
+ the given integer by something other than a multiple of 8 bits.
- Tighten binary receive functions so that they reject values
- that the text input functions don't accept either.>
+ Fix encoding handling in binary input function of xml type.
+
+
+
+ Tighten binary receive functions so that they reject values
+ that the text input functions don't accept either.
- It is now reasonably safe to use pg_ctl to start
- the postmaster from a boot-time script.
+ initdb now selects the encoding SQL_ASCII when the locale specifies
+ US-ASCII. This case previously failed.
+
+
+
+ Add init[db] option to pg_ctl.
+
+
+
+ It is now reasonably safe to use pg_ctl to start
+ the postmaster from a boot-time script.
- Implement significantly saner behavior when two or
- more psql sessions overlap in their use of the history file.>
+ In psql, show view definition only with \d+, not with \d.
+
+
+
+ In psql, ignore UTF-8-encoded Unicode byte-order mark at the
+ beginning of a file if the client encoding is UTF-8.
+
+
+
+ Improve psql's tabular display of wrapped-around data by inserting
+ markers in the formerly-always-blank columns just to left and right
+ of the data. "pset linestyle old-ascii" is added to make
+ the previous behavior available if anyone really wants it.
+
+
+
+ Simplify psql's new linestyle behavior to default to
+ linestyle=ascii all the time, rather than hoping we can tell
+ whether the terminal supports UTF-8 characters.
+
+
+
+ Implement significantly saner behavior when two or
+ more psql sessions overlap in their use of the history file.
- Add "pset linestyle ascii/unicode" option to psql,
+ Add "pset linestyle ascii/unicode" option to psql,
allowing our traditional ASCII-art style of table output to
be upgraded to use Unicode box drawing characters if
- desired.>
+ desired.
- Add DO statement to support execution of procedural language
- code without having to create a function for it.>
+ PL/pgSQL is installed by default.
- Support use of function argument names to identify which
+ Remove PL/pgSQL's RENAME declaration, which has
+ bizarre and mostly nonfunctional behavior, and is so little
+ used that no one has been interested in fixing it. To ensure
+ that possible uses are covered, remove the ALIAS declaration's
+ arbitrary restriction that only $n identifiers can be
+ aliased.
+
+
+
+ The PL/pgSQL parser and scanner were reworked to behave much more
+ sanely:
+
+ A variable reference will only be recognized where it can validly
+ go, ie, a place where a column value or parameter would be legal,
+ instead of the former behavior that would replace any textual match
+ including table names and column aliases (leading to syntax errors
+ later on). PL/pgSQL variable names that match fully-reserved words
+ will now need to be quoted. An the other hand, a number of
+ PL/pgSQL-specific words were de-reserved.
+
+ The variable resolution behavior is by default not backward
+ compatible, but can be configured; see documentation.
+
+ Error reporting is much nicer and accurate.
+
+ The argument of WHERE CURRENT OF can be a PL/pgSQL cursor variable.
+
+
+
+ Add support for anonymous code blocks (DO blocks) to PL/Perl.
+
+
+
+ Support arrays as parameters and return values of PL/Python
+ functions.
+
+
+
+ Python 3 support in PL/Python; behaves more or less unchanged
+ compared to Python 2, but the new language variant is called
+ plpython3u.
+
+
+
+ Add DO statement to support execution of procedural language
+ code without having to create a function for it.
+
+
+
+ Support use of function argument names to identify which
actual arguments match which function parameters. The syntax
uses AS, for example funcname(value AS arg1, anothervalue AS
- arg2).>
+ arg2).
- Fix/improve bytea and boolean support in PL/Python. Data type
+ Fix/improve bytea and boolean support in PL/Python. Data type
conversion into and out of PL/Python previously went through
an intermediate string representation, which caused various
discrepancies especially with bytea and boolean data. This is
- now fixed by converting the values directly.>
+ now fixed by converting the values directly.
- PL/Python now accepts Unicode objects where it previously
+ PL/Python now accepts Unicode objects where it previously
only accepted string objects (for example, as return
value). Unicode objects are converted to the PostgreSQL
- server encoding as necessary.>
+ server encoding as necessary.
- Improve error context reporting in PL/Perl, for
- easier debugging.>
+ Improve error context reporting in PL/Perl, for
+ easier debugging.
- PL/pgSQL IN parameters now accept value assignments.>
+ PL/pgSQL IN parameters now accept value assignments.
- Convert a Perl array to a PostgreSQL array when returned by
- set-returning functions as well as non-SRFs.>
+ Convert a Perl array to a PostgreSQL array when returned by
+ set-returning functions as well as non-SRFs.
- Allow cursor commands MOVE FORWARD n, MOVE BACKWARD n,
- MOVE FORWARD ALL, MOVE BACKWARD ALL in PL/pgSQL.>
+ Allow cursor commands MOVE FORWARD n, MOVE BACKWARD n,
+ MOVE FORWARD ALL, MOVE BACKWARD ALL in PL/pgSQL.
- Multiple improvements in contrib/hstore, including
+ Add \shell and \setshell meta commands to pgbench.
+
+ \shell command runs an external shell command. \setshell also does
+ the same and sets the result to a variable.
+
+
+
+ Multiple improvements in contrib/hstore, including
raising limits on keys and values, conversions to and from
- records and arrays, and support for GROUP BY and DISTINCT.
+ records and arrays, and support for GROUP BY and DISTINCT.
Development
+
+ Refactor ECPG grammar so that it uses the core grammar's
+ unreserved_keyword list, minus a few specific words that have to be
+ treated specially. This de-reserves a number of works in ECPG.
+
+
+
+ Added dynamic cursor names to ECPG.
+
+
- Add ECPG function that returns the current transaction status.>
+ Add ECPG function that returns the current transaction status.
- Make ECPG more robust against applications freeing strings.>
+ Make ECPG more robust against applications freeing strings.
- Make libpq reject non-numeric and out-of-range port numbers with a
- suitable error message.
+ Make libpq reject non-numeric and out-of-range port numbers with a
+ suitable error message.
- Change the WIN32 API version to be 5.01 (Windows XP), to
- bring in the proper IPv6 headers in newer SDKs.>
+ Disable triggering failover with a signal in pg_standby on Windows.
+ It never really worked before anyway.>
- Write to the Windows eventlog in UTF-16, converting the
- message encoding as necessary.>
+ Change the WIN32 API version to be 5.01 (Windows XP), to
+ bring in the proper IPv6 headers in newer SDKs.
- Replace use of the long-deprecated Bonjour API
- DNSServiceRegistrationCreate with the not-so-deprecated
- DNSServiceRegister. The new code will fail on Mac OS X
- releases before 10.3.>
+ Write to the Windows eventlog in UTF-16, converting the
+ message encoding as necessary.
- Install a hopefully-temporary workaround for Mac OS X Snow Leopard
- readdir() bug.>
+ Replace use of the long-deprecated Bonjour API
+ DNSServiceRegistrationCreate with the not-so-deprecated
+ DNSServiceRegister. The new code will fail on Mac OS X
+ releases before 10.3.
-
Source code, build options
+
Source Code, Build Options
- Fix inclusions of readline/editline header files so that we
+ configure --enable-thread-safety is now the default (but can still
+ be turned off).
+
+
+
+ Fix inclusions of readline/editline header files so that we
only attempt to #include the version of history.h that is in
the same directory as the readline.h we are using. This
avoids problems in some scenarios where both readline and
- editline are installed.>
+ editline are installed.
- Derived files that are shipped in the distribution used to be
+ Derived files that are shipped in the distribution used to be
built in the source directory even for out-of-tree
builds. They are now also built in the build tree. This
- should be more convenient for certain developers' workflows.>
+ should be more convenient for certain developers' workflows.
- Translations were updated.>
+ Translations were updated.