|
|
|
|
@ -1,4 +1,4 @@ |
|
|
|
|
<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.553 2007/11/20 05:23:20 momjian Exp $ --> |
|
|
|
|
<!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.554 2007/11/20 17:10:25 momjian Exp $ --> |
|
|
|
|
<!-- |
|
|
|
|
|
|
|
|
|
Typical markup: |
|
|
|
|
@ -232,376 +232,390 @@ do it for earlier branch release files. |
|
|
|
|
Observe the following incompatibilities: |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<itemizedlist> |
|
|
|
|
<sect3> |
|
|
|
|
<title>General</title> |
|
|
|
|
<itemizedlist> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Non-character data types are no longer automatically cast to |
|
|
|
|
<type>TEXT</> (Peter, Tom) |
|
|
|
|
</para> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Non-character data types are no longer automatically cast to |
|
|
|
|
<type>TEXT</> (Peter, Tom) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Previously, if a non-character value was supplied to an operator or |
|
|
|
|
function that requires <type>text</> input, it was automatically |
|
|
|
|
cast to <type>text</>, for most (though not all) built-in data types. |
|
|
|
|
This no longer happens: an explicit cast to <type>text</> is now |
|
|
|
|
required for all non-character-string types. For example, these |
|
|
|
|
expressions formerly worked: |
|
|
|
|
<para> |
|
|
|
|
Previously, if a non-character value was supplied to an operator or |
|
|
|
|
function that requires <type>text</> input, it was automatically |
|
|
|
|
cast to <type>text</>, for most (though not all) built-in data types. |
|
|
|
|
This no longer happens: an explicit cast to <type>text</> is now |
|
|
|
|
required for all non-character-string types. For example, these |
|
|
|
|
expressions formerly worked: |
|
|
|
|
|
|
|
|
|
<programlisting> |
|
|
|
|
substr(current_date, 1, 4) |
|
|
|
|
23 LIKE '2%' |
|
|
|
|
</programlisting> |
|
|
|
|
|
|
|
|
|
but will now draw <quote>function does not exist</> and <quote>operator |
|
|
|
|
does not exist</> errors respectively. Use an explicit cast instead: |
|
|
|
|
but will now draw <quote>function does not exist</> and <quote>operator |
|
|
|
|
does not exist</> errors respectively. Use an explicit cast instead: |
|
|
|
|
|
|
|
|
|
<programlisting> |
|
|
|
|
substr(current_date::text, 1, 4) |
|
|
|
|
23::text LIKE '2%' |
|
|
|
|
</programlisting> |
|
|
|
|
|
|
|
|
|
(Of course, you can use the more verbose <literal>CAST()</> syntax too.) |
|
|
|
|
The reason for the change is that these automatic casts too often caused |
|
|
|
|
surprising behavior. An example is that in previous releases, this |
|
|
|
|
expression was accepted but did not do what was expected: |
|
|
|
|
(Of course, you can use the more verbose <literal>CAST()</> syntax too.) |
|
|
|
|
The reason for the change is that these automatic casts too often caused |
|
|
|
|
surprising behavior. An example is that in previous releases, this |
|
|
|
|
expression was accepted but did not do what was expected: |
|
|
|
|
|
|
|
|
|
<programlisting> |
|
|
|
|
current_date < 2017-11-17 |
|
|
|
|
</programlisting> |
|
|
|
|
|
|
|
|
|
This is actually comparing a date to an integer, which should be |
|
|
|
|
(and now is) rejected — but in the presence of automatic |
|
|
|
|
casts both sides were cast to <type>text</> and a textual comparison |
|
|
|
|
was done, because the <literal>text < text</> operator was able |
|
|
|
|
to match the expression when no other <literal><</> operator could. |
|
|
|
|
</para> |
|
|
|
|
This is actually comparing a date to an integer, which should be |
|
|
|
|
(and now is) rejected — but in the presence of automatic |
|
|
|
|
casts both sides were cast to <type>text</> and a textual comparison |
|
|
|
|
was done, because the <literal>text < text</> operator was able |
|
|
|
|
to match the expression when no other <literal><</> operator could. |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Types <type>char(<replaceable>n</>)</type> and |
|
|
|
|
<type>varchar(<replaceable>n</>)</type> still cast to <type>text</> |
|
|
|
|
automatically. Also, automatic casting to <type>text</> still works for |
|
|
|
|
inputs to the concatenation (<literal>||</>) operator, so long as least |
|
|
|
|
one input is a character-string type. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<para> |
|
|
|
|
Types <type>char(<replaceable>n</>)</type> and |
|
|
|
|
<type>varchar(<replaceable>n</>)</type> still cast to <type>text</> |
|
|
|
|
automatically. Also, automatic casting to <type>text</> still works for |
|
|
|
|
inputs to the concatenation (<literal>||</>) operator, so long as least |
|
|
|
|
one input is a character-string type. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Full text search features from <filename>contrib/tsearch2</> have |
|
|
|
|
been moved into the core server, with some minor syntax changes |
|
|
|
|
</para> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Full text search features from <filename>contrib/tsearch2</> have |
|
|
|
|
been moved into the core server, with some minor syntax changes |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
<filename>contrib/tsearch2</> now contains a compatibility |
|
|
|
|
interface. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<para> |
|
|
|
|
<filename>contrib/tsearch2</> now contains a compatibility |
|
|
|
|
interface. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Numerous changes in administrative server parameters |
|
|
|
|
</para> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
<literal>ARRAY(SELECT ...)</literal>, where the <command>SELECT</> |
|
|
|
|
returns no rows, now returns an empty array, rather than NULL |
|
|
|
|
(Tom) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
<varname>bgwriter_lru_percent</>, |
|
|
|
|
<varname>bgwriter_all_percent</>, |
|
|
|
|
<varname>bgwriter_all_maxpages</>, |
|
|
|
|
<varname>stats_start_collector</>, and |
|
|
|
|
<varname>stats_reset_on_server_start</> are removed. |
|
|
|
|
<varname>redirect_stderr</> is renamed to |
|
|
|
|
<varname>logging_collector</>. |
|
|
|
|
<varname>stats_command_string</> is renamed to |
|
|
|
|
<varname>track_activities</>. |
|
|
|
|
<varname>stats_block_level</> and <varname>stats_row_level</> |
|
|
|
|
are merged into <varname>track_counts</>. |
|
|
|
|
A new boolean configuration parameter, <varname>archive_mode</>, |
|
|
|
|
controls archiving. Autovacuum's default settings have changed. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
The array type name for a base data type is no longer always the base |
|
|
|
|
type's name with an underscore prefix |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Commenting out a parameter in <filename>postgresql.conf</> now |
|
|
|
|
causes it to revert to its default value (Joachim Wieland) |
|
|
|
|
</para> |
|
|
|
|
<para> |
|
|
|
|
The old naming convention is still honored when possible, but |
|
|
|
|
application code should no longer depend on it. Instead |
|
|
|
|
use the new <literal>pg_type.typarray</literal> column to |
|
|
|
|
identify the array data type associated with a given type. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Previously, commenting out an entry left the parameter's value unchanged |
|
|
|
|
until the next server restart. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
<literal>ORDER BY ... USING</> <replaceable>operator</> must now |
|
|
|
|
use a less-than or greater-than <replaceable>operator</> that is |
|
|
|
|
defined in a btree operator class |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
<literal>ARRAY(SELECT ...)</literal>, where the <command>SELECT</> |
|
|
|
|
returns no rows, now returns an empty array, rather than NULL |
|
|
|
|
(Tom) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<para> |
|
|
|
|
This restriction was added to prevent inconsistent results. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
<literal>ORDER BY ... USING</> <replaceable>operator</> must now |
|
|
|
|
use a less-than or greater-than <replaceable>operator</> that is |
|
|
|
|
defined in a btree operator class |
|
|
|
|
</para> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
<command>SET LOCAL</command> changes now persist until |
|
|
|
|
the end of the outermost transaction, unless rolled back (Tom) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This restriction was added to prevent inconsistent results. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<para> |
|
|
|
|
Previously <command>SET LOCAL</command>'s effects were lost |
|
|
|
|
after subtransaction commit (<command>RELEASE SAVEPOINT</> |
|
|
|
|
or exit from a PL/pgSQL exception block). |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
The array type name for a base data type is no longer always the base |
|
|
|
|
type's name with an underscore prefix |
|
|
|
|
</para> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Commands rejected in transaction blocks are now also rejected in |
|
|
|
|
multiple-statement query strings (Tom) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
The old naming convention is still honored when possible, but |
|
|
|
|
application code should no longer depend on it. Instead |
|
|
|
|
use the new <literal>pg_type.typarray</literal> column to |
|
|
|
|
identify the array data type associated with a given type. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<para> |
|
|
|
|
For example, <literal>"BEGIN; DROP DATABASE; COMMIT"</> will now be |
|
|
|
|
rejected even if submitted as a single query message. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
<command>SET LOCAL</command> changes now persist until |
|
|
|
|
the end of the outermost transaction, unless rolled back (Tom) |
|
|
|
|
</para> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
<command>ROLLBACK</> outside a transaction block now |
|
|
|
|
issues <literal>NOTICE</> instead of <literal>WARNING</> (Bruce) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Previously <command>SET LOCAL</command>'s effects were lost |
|
|
|
|
after subtransaction commit (<command>RELEASE SAVEPOINT</> |
|
|
|
|
or exit from a PL/pgSQL exception block). |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Prevent <command>NOTIFY</command>/<command>LISTEN</command>/<command>UNLISTEN</command> |
|
|
|
|
from accepting schema-qualified names (Bruce) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Commands rejected in transaction blocks are now also rejected in |
|
|
|
|
multiple-statement query strings (Tom) |
|
|
|
|
</para> |
|
|
|
|
<para> |
|
|
|
|
Formerly, these commands accepted <literal>schema.relation</> but |
|
|
|
|
ignored the schema part, which was confusing. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
For example, <literal>"BEGIN; DROP DATABASE; COMMIT"</> will now be |
|
|
|
|
rejected even if submitted as a single query message. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
<command>ALTER SEQUENCE</> no longer affects <function>currval()</> |
|
|
|
|
(Tom) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
<command>ROLLBACK</> outside a transaction block now |
|
|
|
|
issues <literal>NOTICE</> instead of <literal>WARNING</> (Bruce) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Foreign keys now must match indexable conditions for |
|
|
|
|
cross-data-type references (Tom) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Prevent <command>NOTIFY</command>/<command>LISTEN</command>/<command>UNLISTEN</command> |
|
|
|
|
from accepting schema-qualified names (Bruce) |
|
|
|
|
</para> |
|
|
|
|
<para> |
|
|
|
|
This improves semantic consistency and helps avoid |
|
|
|
|
performance problems. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Formerly, these commands accepted <literal>schema.relation</> but |
|
|
|
|
ignored the schema part, which was confusing. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Restrict object size functions to users who have reasonable |
|
|
|
|
permissions to view such information (Tom) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Restrict object size functions to users who have reasonable |
|
|
|
|
permissions to view such information (Tom) |
|
|
|
|
</para> |
|
|
|
|
<para> |
|
|
|
|
For example, <function>pg_database_size()</function> now requires |
|
|
|
|
<literal>CONNECT</> permission, which is granted to everyone by |
|
|
|
|
default. <function>pg_tablespace_size()</function> requires |
|
|
|
|
<literal>CREATE</> permission in the tablespace, or is allowed if |
|
|
|
|
the tablespace is the default tablespace for the database. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
For example, <function>pg_database_size()</function> now requires |
|
|
|
|
<literal>CONNECT</> permission, which is granted to everyone by |
|
|
|
|
default. <function>pg_tablespace_size()</function> requires |
|
|
|
|
<literal>CREATE</> permission in the tablespace, or is allowed if |
|
|
|
|
the tablespace is the default tablespace for the database. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Remove the undocumented <literal>!!=</> (not in) operator (Tom) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Internal hashing functions are now more uniformly-distributed (Tom) |
|
|
|
|
</para> |
|
|
|
|
<para> |
|
|
|
|
<literal>NOT IN (SELECT ...)</literal> is the proper way to |
|
|
|
|
perform this operation. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
If application code was computing and storing hash values using |
|
|
|
|
internal <productname>PostgreSQL</> hashing functions, the hash |
|
|
|
|
values must be regenerated. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Internal hashing functions are now more uniformly-distributed (Tom) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
<command>ALTER SEQUENCE</> no longer affects <function>currval()</> |
|
|
|
|
(Tom) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<para> |
|
|
|
|
If application code was computing and storing hash values using |
|
|
|
|
internal <productname>PostgreSQL</> hashing functions, the hash |
|
|
|
|
values must be regenerated. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Foreign keys now must match indexable conditions for |
|
|
|
|
cross-data-type references (Tom) |
|
|
|
|
</para> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
C-code conventions for handling variable-length data values |
|
|
|
|
have changed (Greg Stark, Tom) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This improves semantic consistency and helps avoid |
|
|
|
|
performance problems. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<para> |
|
|
|
|
The new <function>SET_VARSIZE()</> macro <emphasis>must</> be used |
|
|
|
|
to set the length of generated <type>varlena</> values. Also, it |
|
|
|
|
might be necessary to expand (<quote>de-TOAST</quote>) input values |
|
|
|
|
in more cases. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Remove the undocumented <literal>!!=</> (not in) operator (Tom) |
|
|
|
|
</para> |
|
|
|
|
</itemizedlist> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
<literal>NOT IN (SELECT ...)</literal> is the proper way to |
|
|
|
|
perform this operation. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
</sect3> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Remove <varname>stats_start_collector</varname> parameter (Tom) |
|
|
|
|
</para> |
|
|
|
|
<sect3> |
|
|
|
|
<title>Configuration Parameters</title> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
We now always start the collector process, unless <acronym>UDP</> |
|
|
|
|
socket creation fails. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<itemizedlist> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Remove <varname>stats_reset_on_server_start</varname> parameter (Tom) |
|
|
|
|
</para> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Numerous changes in administrative server parameters |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This was removed because <function>pg_stat_reset()</function> |
|
|
|
|
can be used for this purpose. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<para> |
|
|
|
|
<varname>bgwriter_lru_percent</>, |
|
|
|
|
<varname>bgwriter_all_percent</>, |
|
|
|
|
<varname>bgwriter_all_maxpages</>, |
|
|
|
|
<varname>stats_start_collector</>, and |
|
|
|
|
<varname>stats_reset_on_server_start</> are removed. |
|
|
|
|
<varname>redirect_stderr</> is renamed to |
|
|
|
|
<varname>logging_collector</>. |
|
|
|
|
<varname>stats_command_string</> is renamed to |
|
|
|
|
<varname>track_activities</>. |
|
|
|
|
<varname>stats_block_level</> and <varname>stats_row_level</> |
|
|
|
|
are merged into <varname>track_counts</>. |
|
|
|
|
A new boolean configuration parameter, <varname>archive_mode</>, |
|
|
|
|
controls archiving. Autovacuum's default settings have changed. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
C-code conventions for handling variable-length data values |
|
|
|
|
have changed (Greg Stark, Tom) |
|
|
|
|
</para> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Remove <varname>stats_start_collector</varname> parameter (Tom) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
The new <function>SET_VARSIZE()</> macro <emphasis>must</> be used |
|
|
|
|
to set the length of generated <type>varlena</> values. Also, it |
|
|
|
|
might be necessary to expand (<quote>de-TOAST</quote>) input values |
|
|
|
|
in more cases. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<para> |
|
|
|
|
We now always start the collector process, unless <acronym>UDP</> |
|
|
|
|
socket creation fails. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
</itemizedlist> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Remove <varname>stats_reset_on_server_start</varname> parameter (Tom) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This was removed because <function>pg_stat_reset()</function> |
|
|
|
|
can be used for this purpose. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
The following incompatibilities relate to character encodings: |
|
|
|
|
</para> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Commenting out a parameter in <filename>postgresql.conf</> now |
|
|
|
|
causes it to revert to its default value (Joachim Wieland) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<itemizedlist> |
|
|
|
|
<para> |
|
|
|
|
Previously, commenting out an entry left the parameter's value unchanged |
|
|
|
|
until the next server restart. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Add more checks for invalidly-encoded data (Andrew) |
|
|
|
|
</para> |
|
|
|
|
</itemizedlist> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
This change plugs some holes that existed in literal backslash |
|
|
|
|
escape string processing and <command>COPY</command> escape |
|
|
|
|
processing. Now the de-escaped string is rechecked to see if the |
|
|
|
|
result created an invalid multi-byte character. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
</sect3> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Ensure that <function>chr()</function> cannot create |
|
|
|
|
invalidly-encoded values (Andrew) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
In UTF8-encoded databases the argument of <function>chr()</function> is |
|
|
|
|
now treated as a Unicode code point. In other multi-byte encodings |
|
|
|
|
<function>chr()</function>'s argument must designate a 7-bit ASCII |
|
|
|
|
character. Zero is no longer accepted. |
|
|
|
|
<function>ascii()</function> has been adjusted to match. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<sect3> |
|
|
|
|
<title>Character Encodings</title> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Adjust <function>convert()</function> behavior to ensure encoding |
|
|
|
|
validity (Andrew) |
|
|
|
|
</para> |
|
|
|
|
<itemizedlist> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
The two argument form of <function>convert()</function> has been |
|
|
|
|
removed. The three argument form now takes a <type>bytea</type> |
|
|
|
|
first argument and returns a <type>bytea</type>. To cover the |
|
|
|
|
loss of functionality, three new functions have been added: |
|
|
|
|
</para> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Add more checks for invalidly-encoded data (Andrew) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<itemizedlist> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
<function>convert_from(bytea, name)</function> returns |
|
|
|
|
<type>text</> — converts the first argument from the named |
|
|
|
|
encoding to the database encoding |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<para> |
|
|
|
|
This change plugs some holes that existed in literal backslash |
|
|
|
|
escape string processing and <command>COPY</command> escape |
|
|
|
|
processing. Now the de-escaped string is rechecked to see if the |
|
|
|
|
result created an invalid multi-byte character. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
<function>convert_to(text, name)</function> returns |
|
|
|
|
<type>bytea</> — converts the first argument from the |
|
|
|
|
database encoding to the named encoding |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Ensure that <function>chr()</function> cannot create |
|
|
|
|
invalidly-encoded values (Andrew) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
<function>length(bytea, name)</function> returns |
|
|
|
|
<type>integer</> — gives the length of the first |
|
|
|
|
argument in characters in the named encoding |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
</itemizedlist> |
|
|
|
|
</listitem> |
|
|
|
|
<para> |
|
|
|
|
In UTF8-encoded databases the argument of <function>chr()</function> is |
|
|
|
|
now treated as a Unicode code point. In other multi-byte encodings |
|
|
|
|
<function>chr()</function>'s argument must designate a 7-bit ASCII |
|
|
|
|
character. Zero is no longer accepted. |
|
|
|
|
<function>ascii()</function> has been adjusted to match. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Remove <literal>convert(argument USING conversion_name)</literal> |
|
|
|
|
(Andrew) |
|
|
|
|
</para> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Adjust <function>convert()</function> behavior to ensure encoding |
|
|
|
|
validity (Andrew) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Its behavior did not match the SQL standard. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<para> |
|
|
|
|
The two argument form of <function>convert()</function> has been |
|
|
|
|
removed. The three argument form now takes a <type>bytea</type> |
|
|
|
|
first argument and returns a <type>bytea</type>. To cover the |
|
|
|
|
loss of functionality, three new functions have been added: |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Make JOHAB encoding client-only (Tatsuo) |
|
|
|
|
</para> |
|
|
|
|
<itemizedlist> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
<function>convert_from(bytea, name)</function> returns |
|
|
|
|
<type>text</> — converts the first argument from the named |
|
|
|
|
encoding to the database encoding |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
JOHAB is not safe as a server-side encoding. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
<function>convert_to(text, name)</function> returns |
|
|
|
|
<type>bytea</> — converts the first argument from the |
|
|
|
|
database encoding to the named encoding |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
</itemizedlist> |
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
<function>length(bytea, name)</function> returns |
|
|
|
|
<type>integer</> — gives the length of the first |
|
|
|
|
argument in characters in the named encoding |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
</itemizedlist> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Remove <literal>convert(argument USING conversion_name)</literal> |
|
|
|
|
(Andrew) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
Its behavior did not match the SQL standard. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Make JOHAB encoding client-only (Tatsuo) |
|
|
|
|
</para> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
JOHAB is not safe as a server-side encoding. |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
</itemizedlist> |
|
|
|
|
|
|
|
|
|
</sect3> |
|
|
|
|
|
|
|
|
|
</sect2> |
|
|
|
|
|
|
|
|
|
@ -888,6 +902,14 @@ current_date < 2017-11-17 |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Change server startup log message from <quote>database system is |
|
|
|
|
ready</quote> to <quote>database system is ready to accept |
|
|
|
|
connections</quote> |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
</itemizedlist> |
|
|
|
|
|
|
|
|
|
</sect3> |
|
|
|
|
@ -1034,6 +1056,13 @@ current_date < 2017-11-17 |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix pgstats counting of live and dead tuples to recognize that |
|
|
|
|
committed and aborted transactions have different effects (Tom) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
</itemizedlist> |
|
|
|
|
|
|
|
|
|
</sect3> |
|
|
|
|
@ -2128,17 +2157,9 @@ current_date < 2017-11-17 |
|
|
|
|
</sect3> |
|
|
|
|
|
|
|
|
|
<sect3> |
|
|
|
|
<title>Source Code</title> |
|
|
|
|
<title>Server Programming Interface (<acronym>SPI</>)</title> |
|
|
|
|
<itemizedlist> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Rename macro <literal>DLLIMPORT</> to <literal>PGDLLIMPORT</> to |
|
|
|
|
avoid conflicting with third party includes (like Tcl) that |
|
|
|
|
define <literal>DLLIMPORT</> (Magnus) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Allow execution of cursor commands through |
|
|
|
|
@ -2174,6 +2195,14 @@ current_date < 2017-11-17 |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
</itemizedlist> |
|
|
|
|
|
|
|
|
|
</sect3> |
|
|
|
|
|
|
|
|
|
<sect3> |
|
|
|
|
<title>Build Options</title> |
|
|
|
|
<itemizedlist> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Add <application>configure</> <literal>--enable-profiling</> |
|
|
|
|
@ -2191,8 +2220,9 @@ current_date < 2017-11-17 |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Create <quote>operator families</quote> to improve planning of |
|
|
|
|
queries involving cross-data-type comparisons (Tom) |
|
|
|
|
Fix <acronym>PGXS</> so extensions can be built against PostgreSQL |
|
|
|
|
installations whose <application>pg_config</> program does not |
|
|
|
|
appear first in the <varname>PATH</> (Tom) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
@ -2203,42 +2233,50 @@ current_date < 2017-11-17 |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
</itemizedlist> |
|
|
|
|
|
|
|
|
|
</sect3> |
|
|
|
|
|
|
|
|
|
<sect3> |
|
|
|
|
<title>Source Code</title> |
|
|
|
|
<itemizedlist> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Update GIN <function>extractQuery()</> API to allow signalling |
|
|
|
|
that nothing can satisfy the query (Teodor) |
|
|
|
|
Rename macro <literal>DLLIMPORT</> to <literal>PGDLLIMPORT</> to |
|
|
|
|
avoid conflicting with third party includes (like Tcl) that |
|
|
|
|
define <literal>DLLIMPORT</> (Magnus) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Move <literal>NAMEDATALEN</> definition from |
|
|
|
|
<filename>postgres_ext.h</> to <filename>pg_config_manual.h</> |
|
|
|
|
(Peter) |
|
|
|
|
Create <quote>operator families</quote> to improve planning of |
|
|
|
|
queries involving cross-data-type comparisons (Tom) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Change server startup log message from <quote>database system is |
|
|
|
|
ready</quote> to <quote>database system is ready to accept |
|
|
|
|
connections</quote> |
|
|
|
|
Update GIN <function>extractQuery()</> API to allow signalling |
|
|
|
|
that nothing can satisfy the query (Teodor) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Provide <function>strlcpy()</function> and |
|
|
|
|
<function>strlcat()</function> on all platforms, and replace |
|
|
|
|
error-prone uses of <function>strncpy()</function>, |
|
|
|
|
<function>strncat()</function>, etc (Peter) |
|
|
|
|
Move <literal>NAMEDATALEN</> definition from |
|
|
|
|
<filename>postgres_ext.h</> to <filename>pg_config_manual.h</> |
|
|
|
|
(Peter) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix pgstats counting of live and dead tuples to recognize that |
|
|
|
|
committed and aborted transactions have different effects (Tom) |
|
|
|
|
Provide <function>strlcpy()</function> and |
|
|
|
|
<function>strlcat()</function> on all platforms, and replace |
|
|
|
|
error-prone uses of <function>strncpy()</function>, |
|
|
|
|
<function>strncat()</function>, etc (Peter) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
@ -2266,20 +2304,12 @@ current_date < 2017-11-17 |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Have <function>quote_identifier()</function> and |
|
|
|
|
<application>pg_dump</application> not quote keywords that are |
|
|
|
|
<function>quote_identifier()</function> and |
|
|
|
|
<application>pg_dump</application> no longer quote keywords that are |
|
|
|
|
unreserved according to the grammar (Tom) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Fix <acronym>PGXS</> so extensions can be built against PostgreSQL |
|
|
|
|
installations whose <application>pg_config</> program does not |
|
|
|
|
appear first in the <varname>PATH</> (Tom) |
|
|
|
|
</para> |
|
|
|
|
</listitem> |
|
|
|
|
|
|
|
|
|
<listitem> |
|
|
|
|
<para> |
|
|
|
|
Change the on-disk representation of the <type>NUMERIC</type> |
|
|
|
|
|