LISTEN>/
+ linkend="SQL-NOTIFY">NOTIFY> feature.
+ Pending events are now stored in a memory-based queue rather than
+ a table. Also, a payload> string can be sent with each
+ event, rather than transmitting just an event name as before.
- Multiple performance enhancements for specific types of queries,
- including join elimination, which optimizes automatically generated
- queries, such as those produced by object-relational mappers (ORMs).
+ New implementation of
+ VACUUM FULL>.
+ This command now rewrites the entire table and indexes, rather than
+ moving individual rows to compact space. It is substantially faster
+ in most cases, and no longer results in index bloat.
- Exclusion constraints
- let database designers define uniqueness based on complex
- criteria, including for non-scalar data such as time periods,
- ranges and arrays.
+ New contrib module
+ pg_upgrade>
+ to support in-place upgrades from 8.3 or 8.4 to 9.0.
- As part of our decade-long effort to eliminate the pain of VACUUM,
- VACUUM FULL>
- is now substantially faster by rewriting the entire table and
- indexes, rather than moving around single rows to compact space.
+ Multiple performance enhancements for specific types of queries,
+ including elimination of unnecessary joins. This helps optimize some
+ automatically-generated queries, such as those produced by
+ object-relational mappers (ORMs).
- using-explain">EXPLAIN
- plans are now available in JSON, XML and YAML format, and include
+ SQL-EXPLAIN ">EXPLAIN> enhancements.
+ The output is now available in JSON, XML, or YAML format, and includes
buffer utilization and other data not previously available.
- The HStore optional module has been improved with new functions and greater
- data capacity to make it a high-performance key-value store.
+ hstore> improvements,
+ including new functions and greater data capacity.
- wal_level> should now be
- set to archive>, not on>, to do continuous
- archiving (Heikki Linnakangas)
+ Replace server parameter archive_mode> with
+ wal_level>
+ (Heikki Linnakangas)
-
- Make date_trunc> truncate rather than round when reducing
- fractional-seconds precision (Tom Lane)
-
-
- The code always acted this way for integer-based dates/times.
- Now float-based dates/times behave similarly.
-
-
-
+
+ Make date_trunc> truncate rather than round when reducing
+ precision of fractional seconds (Tom Lane)
+
+
+ The code always acted this way for integer-based dates/times.
+ Now float-based dates/times behave similarly.
+
+
+
+
+ Improve performance and reliability of EvalPlanQual rechecks in join
+ queries (Tom Lane)
+
+
+ UPDATE>, DELETE>, and SELECT FOR
+ UPDATE/SHARE> queries that involve joins will now behave much better
+ when encountering freshly-updated rows.
+
+
+
Improve performance of
linkend="SQL-TRUNCATE">TRUNCATE> when
- used in the same transaction as table creation (Tom Lane)
+ the table was created or truncated earlier in the same transaction
+ (Tom Lane)
- Outer joins where the inner side is unique and not referenced in
- the query are unnecessary and are therefore now removed. This will
+ Outer joins where the inner side is unique and not referenced above
+ the join are unnecessary and are therefore now removed. This will
accelerate many automatically generated queries, such as those created
by object-relational mappers (ORMs).
+
+ Improve the optimizer's choices about when to use materialize nodes,
+ and when to use sorting versus hashing for DISTINCT>
+ (Tom Lane)
+
+
+
Improve the optimizer's equivalence detection for expressions involving
- This avoids the rare error failed to make a valid plan>.
+ This avoids the rare error failed to make a valid plan>,
+ and should also improve planning speed.
Add
linkend="monitoring-stats-funcs-table">pg_stat_reset_single_table_counters()>
and pg_stat_reset_single_function_counters()>
- to allow resetting of the statistics counters for individual
+ to allow resetting the statistics counters for individual
tables and indexes (Magnus Hagander)
not combinations. All role and database settings are now stored
in the new pg_db_role_setting> system table. A new
psql> command \drds> shows these settings.
- Backwards-compatible system views do not show combination settings.
+ The legacy system views pg_roles>,
+ pg_shadow>, and pg_user>
+ do not show combination settings, and therefore no longer
+ completely represent the configuration for a user or database.
-
+
+ Change server parameter
+ linkend="guc-log-temp-files">log_temp_files> to
+ use default file size units of kilobytes (Robert Haas)
+
+
+ Previously this setting was interpreted in bytes if no units were
+ specified.
+
+
+
Log changes of parameter values when postgresql.conf> is
settings, and is also very convenient for checking the effects of
postgresql.conf> edits.
-
- Add proper permissions for custom server parameters (Tom Lane)
+ Properly enforce superuser permissions for custom server parameters
+ (Tom Lane)
- Custom parameters can now only be created by super-users,
- but then can be modified by ordinary users if the parameter's
- permissions allow it. This makes custom parameters
- appropriate for security-related settings. Previously, any user
- could create or modify custom parameters.
+ Non-superusers can no longer issue ALTER
+ ROLE>/DATABASE SET> for parameters that are not currently
+ known to the server. This allows the server to correctly check that
+ superuser-only parameters are only set by superusers. Previously,
+ the SET> would be allowed and then ignored at session start,
+ making superuser-only custom parameters practically useless.
-
- Change server parameter
- linkend="guc-log-temp-files">log_temp_files> to
- use default file size units of kilobytes (Robert Haas)
-
-
- Previously this setting was interpreted in bytes if no units were
- specified.
-
-
-
Allow mixing of traditional and SQL-standard
linkend="SQL-LIMIT">LIMIT>/OFFSET>
- syntax in the same query (Tom Lane)
+ syntax (Tom Lane)
-
ALTER>
+
ALTER TABLE>
- Add ALTER
- DEFAULT PRIVILEGES> command to control privileges
- of objects created later (Petr Jelinek)
-
-
- This greatly simplifies the assignment of object privileges in a
- complex database application. Default privileges can be set for
- tables, views, sequences, and functions. Defaults may be assigned on a
- per-schema basis, or database-wide.
-
-
-
-
- Implement IF EXISTS> for DROP COLUMN> and
- DROP CONSTRAINT > (Andres Freund)
+ Implement IF EXISTS> for ALTER TABLE DROP COLUMN>
+ and ALTER TABLE DROP CONSTRAINT > (Andres Freund)
and makes it easier to utilize database roles for application
data security.
+
+
+ Add ALTER
+ DEFAULT PRIVILEGES> command to control privileges
+ of objects created later (Petr Jelinek)
+
+
+ This greatly simplifies the assignment of object privileges in a
+ complex database application. Default privileges can be set for
+ tables, views, sequences, and functions. Defaults may be assigned on a
+ per-schema basis, or database-wide.
+
Formerly, any database user could read or modify any large object.
Read and write permissions can now be granted and revoked per
- large object.
+ large object, and the ownership of large objects is tracked.
- Global catalogs still cannot be clustered.
+ Shared catalogs still cannot be clustered.
+
+ By default, multicolumn indexes are now named after all their columns;
+ and index expression columns are now named based on their expressions
+ (Tom Lane)
+
+
+
Reindexing shared system catalogs is now fully transactional
- Tighten input requirements for int2vector> input (Caleb
+ Tighten input checking for int2vector> values (Caleb
Welton)
- Fix to_char()> to output the proper localized
-
numeric and monetary characters on
Windows>
- (Hiroshi Inoue, Itagaki Takahir, Bruce Momjian)
+ Fix to_char()> to output localized numeric and monetary
+
strings in the correct encoding on
Windows>
+ (Hiroshi Inoue, Itagaki Takahiro, Bruce Momjian)
Allow aggregate functions to use
- linkend="syntax-aggregates">ORDER BY>> (Andrew
- Gierth)
+ linkend="syntax-aggregates">ORDER BY>> (Andrew Gierth)
+
+ Multi-argument aggregate functions can now use DISTINCT>
+ (Andrew Gierth)
+
+
+
Add the
- Make the information_schema
- views properly display maximum octet lengths for char> and
- varchar> columns, as well as the proper precision for datetime
- columns (Peter Eisentraut)
+ Update the information_schema
+ views to conform to SQL:2008
+ (Peter Eisentraut)
+
+
+
+
+ Make the information_schema> views correctly display maximum
+ octet lengths for char> and varchar> columns (Peter
+ Eisentraut)
- Speed up information_schema privilege views (Joachim Wieland)
+ Speed up information_schema> privilege views
+ (Joachim Wieland)
+
+ Avoid throwing an unnecessary error for an invalid record reference
+ (Tom Lane)
+
+
+ An error is now thrown only if the reference is actually fetched,
+ rather than whenever the enclosing expression is reached. For
+ example, many people have tried to do this in triggers:
+if TG_OP = 'INSERT' AND NEW.col1 = ... then
+
+ This will now actually work as expected.
+
+
+
Improve PL/pgSQL's ability to handle row types with dropped columns
Bytea> values passed into PL/Python are now represented as
- binary, rather than the PostgreSQL bytea> text format. Null
- bytes are now also output properly from PL/Python. boolean>
- and numeric> value passing in PL/Python was also improved.
+ binary, rather than the PostgreSQL bytea> text format.
+ Bytea> values containing null bytes are now also output
+ properly from PL/Python. Passing of boolean, integer, and float
+ values was also improved.
- Add array parameter/return
- support to PL/Python (Peter Eisentraut)
+ Support arrays as parameters and
+ return values in PL/Python (Peter Eisentraut)
- Improve mapping of domains to Python base types in PL/Python (Peter Eisentraut)
+ Improve mapping of SQL domains to Python types (Peter Eisentraut)
- Previously
the pg_ctl> process could have been mistakenly
- identified as a running
postmaster> based on a stale
-
postmaster> lock file, resulting in a transient failure
- to start the database.
+ Previously
, pg_ctl>'s parent process could have been
+ mistakenly identified as a running
postmaster> based on
+ a stale
postmaster> lock file, resulting in a transient
+ failure to start the database.
+
+ Avoid extra system calls to block and unblock SIGPIPE>
+ in
libpq>, on platforms that offer alternative methods
+ (Jeremy Kerr)
+
+
+
When a .pgpass>-supplied
- Add
ecpg> out-of-scope cursor support in native mode
+ Add
out-of-scope cursor support in ecpg>'s 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.
+ in
ecpg>'s Informix-compatibility mode.
- Allow dynamic
ecpg> cursor names (Boszormenyi Zoltan)
+ Allow dynamic
cursor names in ecpg> (Boszormenyi Zoltan)
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>.
+ and installcheck> targets, but they also build
+
HTML> documentation, build and test contrib>,
+
and test server-side languages and
ecpg>.
- Add data and documentation location control to
+ Add data and documentation
installation location control to
linkend="xfunc-c-pgxs">
PGXS> Makefiles
(Mark Cave-Ayland)
- Add a Makefile rule to build documentation as a single text file
- (Bruce Momjian)
+ Add Makefile rules to build documentation as a single
HTML>
+ file or as a single plain-text file
+ (Peter Eisentraut, Bruce Momjian)
-
- Support multiprocessor compilation using
Microsoft Visual
- C> (Magnus Hagander)
-
-
-
- Improve the ability to translate
psql> strings
+ Automatically generate the initial contents of
+ pg_attribute> for bootstrapped> catalogs
+ (John Naylor)
+
+
+ This greatly simplifies changes to these catalogs.
+
+
+
+
+ Split the processing of
+ INSERT>/UPDATE>/DELETE> operations out
+ of execMain.c> (Marko Tiikkaja)
+
+
+ Updates are now executed in a separate ModifyTable node. This change is
+ necessary infrastructure for future improvements.
+
+
+
+
+ Simplify translation of
psql>'s SQL help text
(Peter Eisentraut)
- Reduce the length of some file names so that all file paths in the
+ Reduce the lengths of some file names so that all file paths in the
distribution tarball are less than 100 characters (Tom Lane)
- Restructure the
HTML> documentation build
- Makefile> rules (Peter Eisentraut)
+ Restructure the
HTML> documentation
+ Makefile> rules to make their dependency checks work
+ correctly, avoiding unnecessary rebuilds (Peter Eisentraut)
Use
DocBook> XSL> stylesheets for man page
- building (Peter Eisentraut)
+ building, rather than
Docbook2X> (Peter Eisentraut)
+
+
+ This changes the set of tools needed to build the man pages.
- Improve error context support in PL/Perl (Alexey Klyukin)
+ Improve error context reports in PL/Perl (Alexey Klyukin)
Restructure use of LDFLAGS> to be more consistent
across platforms (Tom Lane)
+
+ LDFLAGS> is now used for linking both executables and shared
+ libraries, and we add on LDFLAGS_EX> when linking
+ executables, or LDFLAGS_SL> when linking shared libraries.
+
- Simplify use of
C++> functions in backend code (Kurt
- Harriman, Peter Eisentraut)
+ Make backend header files safe to include in
C++>
+ (Kurt Harriman, Peter Eisentraut)
+
+ Change calling convention for SearchSysCache()> and related
+ functions to avoid hard-wiring the maximum number of cache keys
+ (Robert Haas)
+
+
+ Existing calls will still work for the moment, but can be expected to
+ break in 9.1 or later if not converted.
+
+
+
Require calls of fastgetattr()> and
- heap_getattr()> backend macros to use a non-NULL fourth
+ heap_getattr()> backend macros to provide a non-NULL fourth
argument (Robert Haas)
- Add parser hooks to access column and parameter references in
- queries (Tom Lane)
+ Add parser hooks for processing ColumnRef and ParamRef nodes
+ (Tom Lane)
- This filter dictionary removes accents from letters, which
+ This filtering dictionary removes accents from letters, which
makes full-text searches over multiple languages much easier.