Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
12222967
Commit
12222967
authored
Feb 19, 2010
by
Peter Eisentraut
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Preliminary release notes for 9.0alpha4
parent
a70d0391
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
598 additions
and
118 deletions
+598
-118
doc/src/sgml/release-9.0.sgml
doc/src/sgml/release-9.0.sgml
+598
-118
No files found.
doc/src/sgml/release-9.0.sgml
View file @
12222967
<!-- $PostgreSQL: pgsql/doc/src/sgml/release-9.0.sgml,v 2.
1 2010/02/17 04:19:37 tgl
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/release-9.0.sgml,v 2.
2 2010/02/19 00:35:18 petere
Exp $ -->
<sect1 id="release-9-0">
<sect1 id="release-9-0">
<title>Release 9.0alpha
3
</title>
<title>Release 9.0alpha
4
</title>
<sect2>
<sect2>
<title>Overview</title>
<title>Overview</title>
<para>
<para>
...
@@ -69,62 +69,155 @@
...
@@ -69,62 +69,155 @@
<itemizedlist>
<itemizedlist>
<listitem>
<listitem>
<para>
<para>
<emphasis>Remove previously deprecated configuration
<emphasis>Disallow comments on columns of relation types
other than tables, views, and composite types, that is,
sequences and TOAST tables.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Adjust naming of indexes and their columns. Index
expression columns are now named after the FigureColname
result for their expressions, rather than always being
"pg_expression_N". Digits are appended to this name if
needed to make the column name unique within the index.
Default names for indexes and associated constraints now
include the column names of all their columns, not only the
first one as in previous practice.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Allow the index name to be omitted in CREATE INDEX,
causing the system to choose an index name the same as it
would do for an unnamed index constraint. A necessary
side-effect is to promote the word CONCURRENTLY to a more
reserved status; it can't be a table/column/index name
anymore unless quoted.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Improve the handling of SET CONSTRAINTS commands by
having them search pg_constraint before searching pg_trigger.
This allows saner handling of corner cases.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Typed table feature; this adds the CREATE TABLE
name OF type command.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Tighten integrity checks on ALTER TABLE ... RENAME
COLUMN in inheritance hierarchies.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Replace the pg_listener-based LISTEN/NOTIFY
mechanism with an in-memory queue. In addition, add support
for a "payload" string to be passed along with each notify
event.</emphasis>
</para>
<para>
<emphasis>This implementation should be significantly more
efficient than the old one, and is also more compatible with
Hot Standby usage. There is not yet any facility for HS
slaves to receive notifications generated on the master,
although such a thing is possible in future.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Have SELECT and CREATE TABLE AS queries return a
row count. While this is invisible in psql, other
interfaces, like libpq, make this value visible.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Extend the set of frame options supported for
window functions. This allows the frame to start from
CURRENT ROW (in either RANGE or ROWS mode), and it also adds
support for ROWS n PRECEDING and ROWS n FOLLOWING start and
end points.</emphasis>
</para>
</listitem>
<listitem>
<para>
Add DO statement to support execution of procedural language
code without having to create a function for it.
</para>
</listitem>
<listitem>
<para>
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).
</para>
</listitem>
<listitem>
<para>
Remove previously deprecated configuration
parameter add_missing_from. The system now always behaves as
parameter add_missing_from. The system now always behaves as
though add_missing_from were off.
</emphasis>
though add_missing_from were off.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>
Performance and behavioral improvements in UPDATE,
Performance and behavioral improvements in UPDATE,
DELETE, and SELECT FOR UPDATE/SHARE queries with joins.
DELETE, and SELECT FOR UPDATE/SHARE queries with joins.
Fix various corner cases that could have resulted in duplicated output
Fix various corner cases that could have resulted in duplicated output
rows. Set-returning functions are now prohibited in the
rows. Set-returning functions are now prohibited in the
target list of SELECT FOR UPDATE/SHARE. FOR UPDATE does not
target list of SELECT FOR UPDATE/SHARE. FOR UPDATE does not
propagate into a WITH query anymore.
</emphasis>
propagate into a WITH query anymore.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>
Fix SELECT FOR UPDATE/SHARE in conjunction with LIMIT.
Fix SELECT FOR UPDATE/SHARE in conjunction with LIMIT.
Previously, it could return fewer rows than the limit specified.
</emphasis>
Previously, it could return fewer rows than the limit specified.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>
Add a WHEN clause to CREATE TRIGGER, allowing a boolean expression
Add a WHEN clause to CREATE TRIGGER, allowing a boolean expression
to be checked to determine whether the trigger should be fired.
</emphasis>
to be checked to determine whether the trigger should be fired.
</para>
</para>
<para>
<para>
<emphasis>
For BEFORE triggers this is mostly a matter of spec compliance; but
For BEFORE triggers this is mostly a matter of spec compliance; but
for AFTER triggers it can provide a noticeable performance
for AFTER triggers it can provide a noticeable performance
improvement, since queuing of a deferred trigger event and
improvement, since queuing of a deferred trigger event and
re-fetching of the row(s) at end of statement can be
re-fetching of the row(s) at end of statement can be
short-circuited if the trigger does not need to be fired.
</emphasis>
short-circuited if the trigger does not need to be fired.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>
Add exclusion constraints, which generalize the concept of
Add exclusion constraints, which generalize the concept of
uniqueness to support any indexable commutative operator, not just
uniqueness to support any indexable commutative operator, not just
equality. Two rows violate the exclusion constraint if
equality. Two rows violate the exclusion constraint if
"row1.col OP row2.col" is TRUE for each of the columns in
"row1.col OP row2.col" is TRUE for each of the columns in
the constraint.
</emphasis>
the constraint.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>
Support ORDER BY within aggregate function calls, at long last
Support ORDER BY within aggregate function calls, at long last
providing a non-kluge method for controlling the order in which
providing a non-kluge method for controlling the order in which
values are fed to an aggregate function. At the same time eliminate
values are fed to an aggregate function. At the same time eliminate
the old implementation restriction that DISTINCT was only supported
the old implementation restriction that DISTINCT was only supported
for single-argument aggregates.
</emphasis>
for single-argument aggregates.
</para>
</para>
<para>
<para>
<emphasis>
Behavioral change: formerly, agg(DISTINCT x) dropped null values of
Behavioral change: formerly, agg(DISTINCT x) dropped null values of
x unconditionally. Now, it does so only if the aggregate's transition
x unconditionally. Now, it does so only if the aggregate's transition
function is strict; otherwise nulls are treated as DISTINCT
function is strict; otherwise nulls are treated as DISTINCT
normally would, i.e., you get one copy.
</emphasis>
normally would, i.e., you get one copy.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
...
@@ -214,13 +307,41 @@
...
@@ -214,13 +307,41 @@
<itemizedlist>
<itemizedlist>
<listitem>
<listitem>
<para>
<para>
<emphasis>Allow rewriting forms of ALTER TABLE to skip WAL
<emphasis>Support "x IS NOT NULL" clauses as index-scan
logging.</emphasis>
conditions.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>When estimating the selectivity of an inequality
"column > constant" or "column < constant", and the
comparison value is in the first or last histogram bin or
outside the histogram entirely, try to fetch the actual
column min or max value using an index scan (if there is an
index on the column). If successful, replace the lower or
upper histogram bound with that value before carrying on with
the estimate. This limits the estimation error caused by
moving min/max values when the comparison value is close to
the min or max.</emphasis>
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>Speed up INFORMATION_SCHEMA's privilege views.</emphasis>
<emphasis>Generic implementation of red-black binary tree.
For now, only GIN uses it during index creation. Using
self-balanced tree greatly speeds up index creation in corner
cases with preordered data.</emphasis>
</para>
</listitem>
<listitem>
<para>
Allow rewriting forms of ALTER TABLE to skip WAL
logging.
</para>
</listitem>
<listitem>
<para>
Speed up INFORMATION_SCHEMA's privilege views.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
...
@@ -306,47 +427,171 @@
...
@@ -306,47 +427,171 @@
<itemizedlist>
<itemizedlist>
<listitem>
<listitem>
<para>
<para>
<emphasis>Allow read-only connections during recovery, also
<emphasis>Add the ability to store inheritance-tree
statistics in pg_statistic, and teach ANALYZE to compute such
stats for tables that have subclasses.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Revise pgstat's tracking of tuple changes to
improve the reliability of decisions about when to
auto-analyze. The previous code depended on n_live_tuples +
n_dead_tuples - last_anl_tuples, where all three of these
numbers could be bad estimates from ANALYZE itself. Even
worse, in the presence of a steady flow of HOT updates and
matching HOT-tuple reclamations, auto-analyze might never
trigger at all, even if all three numbers are exactly right,
because n_dead_tuples could hold steady.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Support ALTER TABLESPACE name SET/RESET (
tablespace_options ), currently supporting seq_page_cost and
random_page_cost as parameters.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>New faster implementation of VACUUM FULL. The old
idiom of using CLUSTER instead of VACUUM FULL for speed is
now obsolete.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Add buffer access counters to
pg_stat_statements.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Add some simple support and documentation for using
process-specific oom_adj settings to prevent the postmaster
from being OOM-killed on Linux systems.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Place tablespace directories in their own
subdirectory so pg_migrator can upgrade clusters without
renaming the tablespace directories.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Introduce Streaming Replication.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Add pg_table_size() and pg_indexes_size() to
provide more user-friendly wrappers around the
pg_relation_size() function.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Add pg_stat_reset_shared('bgwriter') to reset the
cluster-wide shared statistics of the bgwriter.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Replace ALTER TABLE ... SET STATISTICS DISTINCT
with a more general mechanism. Attributes can now have
options, just as relations and tablespaces do, and the
reloptions code is used to parse, validate, and store
them.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Fix longstanding gripe that we check for
0000000001.history at start of archive recovery, even when we
know it is never present.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Make standby server continuously retry restoring
the next WAL segment with restore_command, if the connection
to the primary server is lost. This ensures that the standby
can recover automatically, if the connection is lost for a
long time and standby falls behind so much that the required
WAL segments have been archived and deleted in the
master.</emphasis>
</para>
<para>
<emphasis>This also makes standby_mode useful without
streaming replication; the server will keep retrying
restore_command every few seconds until the trigger file is
found. That's the same basic functionality pg_standby
offers, but without the bells and whistles.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Add functions to reset the statistics counter for a
single table/index or a single function.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Augment EXPLAIN output with more details on Hash
nodes.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Reindexing shared system catalogs is now fully
transactional and crash-safe.</emphasis>
</para>
</listitem>
<listitem>
<para>
Allow read-only connections during recovery, also
known as Hot Standby. This provides a built-in master-slave
known as Hot Standby. This provides a built-in master-slave
replication solution.
</emphasis>
replication solution.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>
Provide a parenthesized-options syntax for VACUUM, analogous to
Provide a parenthesized-options syntax for VACUUM, analogous to
that recently adopted for EXPLAIN. This will allow additional
that recently adopted for EXPLAIN. This will allow additional
options to be implemented in future without having to make them
options to be implemented in future without having to make them
fully-reserved keywords. The old syntax remains available for
fully-reserved keywords. The old syntax remains available for
existing options, however.
</emphasis>
existing options, however.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>
Add support for an application_name parameter, which is displayed
Add support for an application_name parameter, which is displayed
in pg_stat_activity and recorded in log entries.
</emphasis>
in pg_stat_activity and recorded in log entries.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>
Fix longstanding problems in VACUUM caused by untimely
Fix longstanding problems in VACUUM caused by untimely
interruptions.
</emphasis>
interruptions.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>Add YAML to list of EXPLAIN formats.</emphasis>
Add YAML to list of EXPLAIN formats.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>Add an EXPLAIN (BUFFERS) option to show buffer-usage statistics.</emphasis>
Add an EXPLAIN (BUFFERS) option to show buffer-usage statistics.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>
Add a hook to let loadable modules get control at ProcessUtility
Add a hook to let loadable modules get control at ProcessUtility
execution, and use it to extend contrib/pg_stat_statements to track
execution, and use it to extend contrib/pg_stat_statements to track
utility commands.
</emphasis>
utility commands.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
...
@@ -403,35 +648,40 @@
...
@@ -403,35 +648,40 @@
<itemizedlist>
<itemizedlist>
<listitem>
<listitem>
<para>
<para>
<emphasis>When querying a table with child tables, do not check permissions
<emphasis>Add support for RADIUS authentication.</emphasis>
</para>
</listitem>
<listitem>
<para>
When querying a table with child tables, do not check permissions
on the child tables, only on the parent table. The old behavior was
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
found to be useless and confusing in virtually all cases, and also
contrary to the SQL standard.
</emphasis>
contrary to the SQL standard.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>
Add a hook to CREATE/ALTER ROLE to allow an external module to
Add a hook to CREATE/ALTER ROLE to allow an external module to
check the strength of database passwords, and create a sample
check the strength of database passwords, and create a sample
implementation of such a hook as a new contrib module
implementation of such a hook as a new contrib module
"passwordcheck".
</emphasis>
"passwordcheck".
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>Add large object access control.</emphasis>
Add large object access control.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>
Allow LDAP authentication to operate in search+bind
Allow LDAP authentication to operate in search+bind
mode, meaning it does a search for the user in the directory
mode, meaning it does a search for the user in the directory
first, and then binds with the DN found for this user. This
first, and then binds with the DN found for this user. This
allows for LDAP logins in scenarios where the DN of the user
allows for LDAP logins in scenarios where the DN of the user
cannot be determined simply by prefix and suffix, such as the
cannot be determined simply by prefix and suffix, such as the
case where different users are located in different
case where different users are located in different
containers. The old way of authentication can be
containers. The old way of authentication can be
significantly faster, so it's kept as an option.
</emphasis>
significantly faster, so it's kept as an option.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
...
@@ -467,17 +717,45 @@
...
@@ -467,17 +717,45 @@
<itemizedlist>
<itemizedlist>
<listitem>
<listitem>
<para>
<para>
<emphasis>Remove configuration parameter regex_flavor. It is now always
<emphasis>Fix 3-parameter form of bit substring() to throw
"advanced".</emphasis>
error for negative length, as required by SQL
standard.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Add get_bit/set_bit functions for bit strings,
paralleling those for bytea, and implement OVERLAY() for bit
strings and bytea.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Add string_agg aggregate functions. The
one-argument version concatenates the input values into a
string. The two-argument version also does the same thing,
but inserts delimiters between elements.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Honor to_char() "FM" specification in YYY, YY, and
Y; it was already honored by YYYY.</emphasis>
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>Teach the regular expression functions to do case-insensitive
Remove configuration parameter regex_flavor. It is now always
"advanced".
</para>
</listitem>
<listitem>
<para>
Teach the regular expression functions to do case-insensitive
matching and locale-dependent character classification properly
matching and locale-dependent character classification properly
when the database encoding is UTF8. This previously only worked
when the database encoding is UTF8. This previously only worked
correctly for single-byte encodings. It is still broken for other
correctly for single-byte encodings. It is still broken for other
multibyte encodings.
</emphasis>
multibyte encodings.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
...
@@ -513,16 +791,22 @@
...
@@ -513,16 +791,22 @@
<itemizedlist>
<itemizedlist>
<listitem>
<listitem>
<para>
<para>
<emphasis>When doing "ARRAY[...]::domain", where domain is a domain
<emphasis>Allow enums to be created with zero labels, for use
during binary upgrade.</emphasis>
</para>
</listitem>
<listitem>
<para>
When doing "ARRAY[...]::domain", where domain is a domain
over an array type, we need to check domain constraints. Regression
over an array type, we need to check domain constraints. Regression
introduced in 8.4.
</emphasis>
introduced in 8.4.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>
Fix integer-to-bit-string conversions to handle the first
Fix integer-to-bit-string conversions to handle the first
fractional byte correctly when the output bit width is wider than
fractional byte correctly when the output bit width is wider than
the given integer by something other than a multiple of 8 bits.
</emphasis>
the given integer by something other than a multiple of 8 bits.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
...
@@ -557,13 +841,13 @@
...
@@ -557,13 +841,13 @@
<itemizedlist>
<itemizedlist>
<listitem>
<listitem>
<para>
<para>
<emphasis>
initdb now selects the encoding SQL_ASCII when the locale specifies
initdb now selects the encoding SQL_ASCII when the locale specifies
US-ASCII. This case previously failed.
</emphasis>
US-ASCII. This case previously failed.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>Add init[db] option to pg_ctl.</emphasis>
Add init[db] option to pg_ctl.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
...
@@ -590,8 +874,30 @@
...
@@ -590,8 +874,30 @@
<itemizedlist>
<itemizedlist>
<listitem>
<listitem>
<para>
<para>
<emphasis>Throw error when a specified connection service name is not
<emphasis>Add user-specific .pg_service.conf file.</emphasis>
found in pg_service.conf, instead of ignoring it.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Add new escaping functions PQescapeLiteral and
PQescapeIdentifier.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Introduce two new libpq connection functions,
PQconnectdbParams and PQconnectStartParams, which are
analogous to PQconnectdb and PQconnectStart respectively, but
accept two NULL-terminated arrays, keywords and values,
rather than conninfo strings. This avoids the need to build
the conninfo string in cases where it might be inconvenient
to do so.</emphasis>
</para>
</listitem>
<listitem>
<para>
Throw error when a specified connection service name is not
found in pg_service.conf, instead of ignoring it.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
...
@@ -607,28 +913,34 @@
...
@@ -607,28 +913,34 @@
<itemizedlist>
<itemizedlist>
<listitem>
<listitem>
<para>
<para>
<emphasis>In psql, show view definition only with \d+, not with \d.</emphasis>
<emphasis>Allow psql variables to be interpolated with
literal or identifier escaping.</emphasis>
</para>
</listitem>
<listitem>
<para>
In psql, show view definition only with \d+, not with \d.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>
In psql, ignore UTF-8-encoded Unicode byte-order mark at the
In psql, ignore UTF-8-encoded Unicode byte-order mark at the
beginning of a file if the client encoding is UTF-8.
</emphasis>
beginning of a file if the client encoding is UTF-8.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>
Improve psql's tabular display of wrapped-around data by inserting
Improve psql's tabular display of wrapped-around data by inserting
markers in the formerly-always-blank columns just to left and right
markers in the formerly-always-blank columns just to left and right
of the data. "pset linestyle old-ascii" is added to make
of the data. "pset linestyle old-ascii" is added to make
the previous behavior available if anyone really wants it.
</emphasis>
the previous behavior available if anyone really wants it.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>
Simplify psql's new linestyle behavior to default to
Simplify psql's new linestyle behavior to default to
linestyle=ascii all the time, rather than hoping we can tell
linestyle=ascii all the time, rather than hoping we can tell
whether the terminal supports UTF-8 characters.
</emphasis>
whether the terminal supports UTF-8 characters.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
...
@@ -657,119 +969,153 @@
...
@@ -657,119 +969,153 @@
</listitem>
</listitem>
</itemizedlist>
</itemizedlist>
</sect3>
</sect3>
<sect3>
<sect3>
<title>Procedural Languages</title>
<title>Procedural Languages</title>
<sect4>
<title>PL/pgSQL</title>
<itemizedlist>
<itemizedlist>
<listitem>
<listitem>
<para>
<para>
<emphasis>PL/pgSQL is installed by default.</emphasis>
<emphasis>Add "USING expressions" option to PL/pgSQL's OPEN
cursor FOR EXECUTE.</emphasis>
</para>
</listitem>
<listitem>
<para>
PL/pgSQL is installed by default.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>
Remove PL/pgSQL's RENAME declaration, which has
Remove PL/pgSQL's RENAME declaration, which has
bizarre and mostly nonfunctional behavior, and is so little
bizarre and mostly nonfunctional behavior, and is so little
used that no one has been interested in fixing it. To ensure
used that no one has been interested in fixing it. To ensure
that possible uses are covered, remove the ALIAS declaration's
that possible uses are covered, remove the ALIAS declaration's
arbitrary restriction that only $n identifiers can be
arbitrary restriction that only $n identifiers can be
aliased.
</emphasis>
aliased.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>
The PL/pgSQL parser and scanner were reworked to behave much more
The PL/pgSQL parser and scanner were reworked to behave much more
sanely:
</emphasis>
sanely:
</para>
</para>
<para>
<para>
<emphasis>
A variable reference will only be recognized where it can validly
A variable reference will only be recognized where it can validly
go, ie, a place where a column value or parameter would be legal,
go, ie, a place where a column value or parameter would be legal,
instead of the former behavior that would replace any textual match
instead of the former behavior that would replace any textual match
including table names and column aliases (leading to syntax errors
including table names and column aliases (leading to syntax errors
later on).
</emphasis>
later on).
</para>
</para>
<para>
<para>
<emphasis>
When a name could refer either to a PL/pgSQL variable or a
When a name could refer either to a PL/pgSQL variable or a
table column, PL/pgSQL formerly always assumed the variable was
table column, PL/pgSQL formerly always assumed the variable was
meant, sometimes resulting in surprising behavior. Now, PL/pgSQL
meant, sometimes resulting in surprising behavior. Now, PL/pgSQL
can assume the variable is meant, or assume the table column is
can assume the variable is meant, or assume the table column is
meant, or throw an error in ambiguous cases. For safety the default
meant, or throw an error in ambiguous cases. For safety the default
is to throw error. To configure this see <link
is to throw error. To configure this see <link
linkend="plpgsql-var-subst">the PL/pgSQL documentation</link>.
</emphasis>
linkend="plpgsql-var-subst">the PL/pgSQL documentation</link>.
</para>
</para>
<para>
<para>
<emphasis>
Error reporting is much nicer: it no longer shows edited
Error reporting is much nicer: it no longer shows edited
versions of statements that look significantly different from what
versions of statements that look significantly different from what
you wrote.
</emphasis>
you wrote.
</para>
</para>
<para>
<para>
<emphasis>
Note that this change affects the set of keywords that are
Note that this change affects the set of keywords that are
reserved in PL/pgSQL (i.e., cannot be the name of a PL/pgSQL
reserved in PL/pgSQL (i.e., cannot be the name of a PL/pgSQL
variable). Now, all keywords shown as reserved in <link
variable). Now, all keywords shown as reserved in <link
linkend="sql-keywords-appendix">Appendix C</link> are reserved for
linkend="sql-keywords-appendix">Appendix C</link> are reserved for
PL/pgSQL purposes as well. However, many PL/pgSQL-only keywords
PL/pgSQL purposes as well. However, many PL/pgSQL-only keywords
that were formerly treated as reserved no longer are. As in regular
that were formerly treated as reserved no longer are. As in regular
SQL, you can double-quote a variable's name if you want to use a
SQL, you can double-quote a variable's name if you want to use a
name that conflicts with a reserved keyword.
</emphasis>
name that conflicts with a reserved keyword.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>Add support for anonymous code blocks (DO blocks) to PL/Perl.</emphasis>
PL/pgSQL IN parameters now accept value assignments.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>Support arrays as parameters and return values of PL/Python
Allow cursor commands MOVE FORWARD n, MOVE BACKWARD n,
functions.</emphasis>
MOVE FORWARD ALL, MOVE BACKWARD ALL in PL/pgSQL.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>Add Python 3 support to PL/Python. It behaves more or less
PL/pgSQL functions can now better cope with row types
unchanged compared to Python 2, but the new language variant is
containing dropped columns.
called plpython3u.</emphasis>
</para>
</para>
</listitem>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>PL/Perl</title>
<itemizedlist>
<listitem>
<listitem>
<para>
<para>
Add DO statement to support execution of procedural language
<emphasis>Add utility functions to PL/Perl: quote_literal,
code without having to create a function for it.
quote_nullable, quote_ident, encode_bytea, decode_bytea,
looks_like_number, encode_array_literal,
encode_array_constructor.</emphasis>
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
Support use of function argument names to identify which
<emphasis>Add plperl.on_plperl_init, plperl.on_plperlu_init,
actual arguments match which function parameters. The syntax
and plperl.on_init settings for startup code.</emphasis>
uses AS, for example funcname(value AS arg1, anothervalue AS
arg2).
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
Fix/improve bytea and boolean support in PL/Python. Data type
<emphasis>Allow (ineffective) use of "require". If the
conversion into and out of PL/Python previously went through
required module is not already loaded then it dies. So "use
an intermediate string representation, which caused various
strict;" now works in PL/Perl.</emphasis>
discrepancies especially with bytea and boolean data. This is
now fixed by converting the values directly.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
PL/Python now accepts Unicode objects where it previously
<emphasis>Pre-load the feature module if Perl >= 5.10.
only accepted string objects (for example, as return
So "use feature :5.10;" now works in PL/Perl.</emphasis>
value). Unicode objects are converted to the PostgreSQL
server encoding as necessary.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
Improve error context reporting in PL/Perl, for
<emphasis>Stored procedure subs are now given names. The
easier debugging.
names are not visible in ordinary use, but they make tools
like Devel::NYTProf and Devel::Cover much more
useful.</emphasis>
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
PL/pgSQL IN parameters now accept value assignments.
<emphasis>Handle END blocks in PL/Perl.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Clean up package namespace use and use of Safe.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Change log level of Perl warnings from NOTICE to
WARNING.</emphasis>
</para>
</listitem>
<listitem>
<para>
Add support for anonymous code blocks (DO blocks) to PL/Perl.
</para>
</listitem>
<listitem>
<para>
Improve error context reporting in PL/Perl, for
easier debugging.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
...
@@ -778,16 +1124,51 @@
...
@@ -778,16 +1124,51 @@
set-returning functions as well as non-SRFs.
set-returning functions as well as non-SRFs.
</para>
</para>
</listitem>
</listitem>
</itemizedlist>
</sect4>
<sect4>
<title>PL/Python</title>
<itemizedlist>
<listitem>
<listitem>
<para>
<para>
Allow cursor commands MOVE FORWARD n, MOVE BACKWARD n,
<emphasis>Improved printing of Python exceptions in
MOVE FORWARD ALL, MOVE BACKWARD ALL in PL/pgSQL.
PL/Python.</emphasis>
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
PL/pgSQL functions can now better cope with row types
<emphasis>Add PL/Python DO handler.</emphasis>
containing dropped columns.
</para>
</listitem>
<listitem>
<para>
Support arrays as parameters and return values of PL/Python
functions.
</para>
</listitem>
<listitem>
<para>
Add Python 3 support to PL/Python. It behaves more or less
unchanged compared to Python 2, but the new language variant is
called plpython3u.
</para>
</listitem>
<listitem>
<para>
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.
</para>
</listitem>
<listitem>
<para>
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.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
...
@@ -802,17 +1183,24 @@
...
@@ -802,17 +1183,24 @@
</para>
</para>
</listitem>
</listitem>
</itemizedlist>
</itemizedlist>
</sect4>
</sect3>
</sect3>
<sect3>
<sect3>
<title>Additional Supplied Modules</title>
<title>Additional Supplied Modules</title>
<itemizedlist>
<itemizedlist>
<listitem>
<listitem>
<para>
<para>
<emphasis>Add \shell and \setshell meta commands to pgbench.</emphasis>
<emphasis>Add query text to auto_explain output.</emphasis>
</para>
</listitem>
<listitem>
<para>
Add \shell and \setshell meta commands to pgbench.
</para>
</para>
<para>
<para>
<emphasis>
\shell runs an external shell command. \setshell
\shell runs an external shell command. \setshell
does the same and assigns the result to a variable.
</emphasis>
does the same and assigns the result to a variable.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
...
@@ -849,18 +1237,47 @@
...
@@ -849,18 +1237,47 @@
</itemizedlist>
</itemizedlist>
</sect3>
</sect3>
<sect3>
<sect3>
<title>
ecpg
</title>
<title>
ECPG
</title>
<itemizedlist>
<itemizedlist>
<listitem>
<listitem>
<para>
<para>
<emphasis>Refactor ECPG grammar so that it uses the core grammar's
<emphasis>Add sqlda support in both native and compatibility
mode.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Fix SQL3 type return value: For non-SQL3 types ECPG
used to return -OID. This will break if there are enough OIDs
to fill the namespace. Therefore we play it safe and return
0 if there is no OID->SQL3 type mapping available.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Make char the default sqlda type.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Add DESCRIBE [OUTPUT] statement.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Add out-of-scope cursor support to native mode.</emphasis>
</para>
</listitem>
<listitem>
<para>
Refactor ECPG grammar so that it uses the core grammar's
unreserved_keyword list, minus a few specific words that have to be
unreserved_keyword list, minus a few specific words that have to be
treated specially. This de-reserves a number of words in ECPG.
</emphasis>
treated specially. This de-reserves a number of words in ECPG.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
<para>
<para>
<emphasis>Added dynamic cursor names to ECPG.</emphasis>
Added dynamic cursor names to ECPG.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
...
@@ -886,8 +1303,20 @@
...
@@ -886,8 +1303,20 @@
<itemizedlist>
<itemizedlist>
<listitem>
<listitem>
<para>
<para>
<emphasis>Disable triggering failover with a signal in pg_standby on Windows.
<emphasis>Add basic build support for Visual Studio 2008,
It never really worked before anyway.</emphasis>
without resorting to generating the build files for 2005 and
then converting them.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Added support for 64-bit Windows platforms.</emphasis>
</para>
</listitem>
<listitem>
<para>
Disable triggering failover with a signal in pg_standby on Windows.
It never really worked before anyway.
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
...
@@ -931,8 +1360,59 @@
...
@@ -931,8 +1360,59 @@
<itemizedlist>
<itemizedlist>
<listitem>
<listitem>
<para>
<para>
<emphasis>configure --enable-thread-safety is now the default (but can still
<emphasis>Improve PGXS makefile system to allow the module's
be turned off).</emphasis>
makefile to specify where to install DATA and DOCS files.
This is mainly intended to allow versioned installation, eg,
install into contrib/fooM.N/ rather than directly into
contrib/.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Get rid of the need for manual maintenance of the
initial contents of pg_attribute, by having genbki.pl derive
the information from the various catalog header files. This
greatly simplifies modification of the "bootstrapped"
catalogs. This patch finally kills genbki.sh and
Gen_fmgrtab.sh; we now rely entirely on Perl scripts for
those build steps. To avoid creating a Perl build dependency
where there was not one before, they will be built and
shipped in tarballs.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Move the default configuration for the MSVC build
system to config_default.pl, and allow using config.pl to
override the defaults.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Make configure check the version of Perl we're
building with, and reject versions < 5.8.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Remove all support for working around on systems
that don't provide a working 64-bit integer type.</emphasis>
</para>
</listitem>
<listitem>
<para>
<emphasis>Add new make targets "world", "install-world" and
"installcheck-world" to build, install and check just about
everything. In addition to everything built installed and
tested by all, install and installcheck targets, these build
HTML documentation, build and test contrib, and test
procedural languages and ECPG.</emphasis>
</para>
</listitem>
<listitem>
<para>
configure --enable-thread-safety is now the default (but can still
be turned off).
</para>
</para>
</listitem>
</listitem>
<listitem>
<listitem>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment