Newer
Older
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
</listitem>
<listitem>
<para>
Fix partial-row matching in hashed subplans to handle cross-type cases
correctly (Tom Lane)
</para>
<para>
This affects multicolumn <literal>NOT IN</> subplans, such as
<literal>WHERE (a, b) NOT IN (SELECT x, y FROM ...)</>
when for instance <literal>b</> and <literal>y</> are <type>int4</>
and <type>int8</> respectively. This mistake led to wrong answers
or crashes depending on the specific datatypes involved.
</para>
</listitem>
<listitem>
<para>
Fix btree mark/restore functions to handle array keys (Tom Lane)
</para>
<para>
This oversight could result in wrong answers from merge joins whose
inner side is an index scan using an
<literal><replaceable>indexed_column</> =
ANY(<replaceable>array</>)</literal> condition.
</para>
</listitem>
<listitem>
<para>
Revert patch for taking fewer snapshots (Tom Lane)
</para>
<para>
The 9.2 change to reduce the number of snapshots taken during query
execution led to some anomalous behaviors not seen in previous
releases, because execution would proceed with a snapshot acquired
before locking the tables used by the query. Thus, for example,
a query would not be guaranteed to see updates committed by a
preceding transaction even if that transaction had exclusive lock.
We'll probably revisit this in future releases, but meanwhile put it
back the way it was before 9.2.
</para>
</listitem>
<listitem>
<para>
Acquire buffer lock when re-fetching the old tuple for an
<literal>AFTER ROW UPDATE/DELETE</> trigger (Andres Freund)
</para>
<para>
In very unusual circumstances, this oversight could result in passing
incorrect data to a trigger <literal>WHEN</> condition, or to the
precheck logic for a foreign-key enforcement trigger. That could
result in a crash, or in an incorrect decision about whether to
fire the trigger.
</para>
</listitem>
<listitem>
<para>
Fix <command>ALTER COLUMN TYPE</> to handle inherited check
constraints properly (Pavan Deolasee)
</para>
<para>
This worked correctly in pre-8.4 releases, and now works correctly
in 8.4 and later.
</para>
</listitem>
<listitem>
<para>
Fix <command>ALTER EXTENSION SET SCHEMA</>'s failure to move some
subsidiary objects into the new schema (Álvaro Herrera, Dimitri
Fontaine)
</para>
</listitem>
<listitem>
<para>
Handle <command>CREATE TABLE AS EXECUTE</> correctly in extended query
protocol (Tom Lane)
</para>
</listitem>
<listitem>
<para>
Don't modify the input parse tree in <command>DROP RULE IF NOT
EXISTS</> and <command>DROP TRIGGER IF NOT EXISTS</> (Tom Lane)
</para>
<para>
This mistake would cause errors if a cached statement of one of these
types was re-executed.
</para>
</listitem>
<listitem>
<para>
Fix <command>REASSIGN OWNED</> to handle grants on tablespaces
(Álvaro Herrera)
</para>
</listitem>
<listitem>
<para>
Ignore incorrect <structname>pg_attribute</> entries for system
columns for views (Tom Lane)
</para>
<para>
Views do not have any system columns. However, we forgot to
remove such entries when converting a table to a view. That's fixed
properly for 9.3 and later, but in previous branches we need to defend
against existing mis-converted views.
</para>
</listitem>
<listitem>
<para>
Fix rule printing to dump <literal>INSERT INTO <replaceable>table</>
DEFAULT VALUES</literal> correctly (Tom Lane)
</para>
</listitem>
<listitem>
<para>
Guard against stack overflow when there are too many
<literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> clauses
in a query (Tom Lane)
</para>
</listitem>
<listitem>
<para>
Prevent platform-dependent failures when dividing the minimum possible
integer value by -1 (Xi Wang, Tom Lane)
</para>
</listitem>
<listitem>
<para>
Fix possible access past end of string in date parsing
(Hitoshi Harada)
</para>
</listitem>
<listitem>
<para>
Fix failure to advance XID epoch if XID wraparound happens during a
checkpoint and <varname>wal_level</> is <literal>hot_standby</>
(Tom Lane, Andres Freund)
</para>
<para>
While this mistake had no particular impact on
<productname>PostgreSQL</productname> itself, it was bad for
applications that rely on <function>txid_current()</> and related
functions: the TXID value would appear to go backwards.
</para>
</listitem>
<listitem>
<para>
Fix <function>pg_terminate_backend()</> and
<function>pg_cancel_backend()</> to not throw error for a non-existent
target process (Josh Kupershmidt)
</para>
<para>
This case already worked as intended when called by a superuser,
but not so much when called by ordinary users.
</para>
</listitem>
<listitem>
<para>
Fix display of
<structname>pg_stat_replication</>.<structfield>sync_state</> at a
page boundary (Kyotaro Horiguchi)
</para>
</listitem>
<listitem>
<para>
Produce an understandable error message if the length of the path name
for a Unix-domain socket exceeds the platform-specific limit
(Tom Lane, Andrew Dunstan)
</para>
<para>
Formerly, this would result in something quite unhelpful, such as
<quote>Non-recoverable failure in name resolution</>.
</para>
</listitem>
<listitem>
<para>
Fix memory leaks when sending composite column values to the client
(Tom Lane)
</para>
</listitem>
<listitem>
<para>
Save some cycles by not searching for subtransaction locks at commit
(Simon Riggs)
</para>
<para>
In a transaction holding many exclusive locks, this useless activity
could be quite costly.
</para>
</listitem>
<listitem>
<para>
Make <application>pg_ctl</> more robust about reading the
<filename>postmaster.pid</> file (Heikki Linnakangas)
</para>
<para>
This fixes race conditions and possible file descriptor leakage.
</para>
</listitem>
<listitem>
<para>
Fix possible crash in <application>psql</> if incorrectly-encoded data
is presented and the <varname>client_encoding</> setting is a
client-only encoding, such as SJIS (Jiang Guiqing)
</para>
</listitem>
<listitem>
<para>
Make <application>pg_dump</> dump <literal>SEQUENCE SET</> items in
the data not pre-data section of the archive (Tom Lane)
</para>
<para>
This fixes an undesirable inconsistency between the meanings of
<option>--data-only</> and <option>--section=data</>, and also fixes
dumping of sequences that are marked as extension configuration tables.
</para>
</listitem>
<listitem>
<para>
Fix <application>pg_dump</>'s handling of <command>DROP DATABASE</>
commands in <option>--clean</> mode (Guillaume Lelarge)
</para>
<para>
Beginning in 9.2.0, <literal>pg_dump --clean</> would issue a
<command>DROP DATABASE</> command, which was either useless or
dangerous depending on the usage scenario. It no longer does that.
This change also fixes the combination of <option>--clean</> and
<option>--create</> to work sensibly, i.e., emit <command>DROP
DATABASE</> then <command>CREATE DATABASE</> before reconnecting to the
target database.
</para>
</listitem>
<listitem>
<para>
Fix <application>pg_dump</> for views with circular dependencies and
no relation options (Tom Lane)
</para>
<para>
The previous fix to dump relation options when a view is
involved in a circular dependency didn't work right for the case
that the view has no options; it emitted <literal>ALTER VIEW foo
SET ()</> which is invalid syntax.
</para>
</listitem>
<listitem>
<para>
Fix bugs in the <filename>restore.sql</> script emitted by
<application>pg_dump</> in <literal>tar</> output format (Tom Lane)
</para>
<para>
The script would fail outright on tables whose names include
upper-case characters. Also, make the script capable of restoring
data in <option>--inserts</> mode as well as the regular COPY mode.
</para>
</listitem>
<listitem>
<para>
Fix <application>pg_restore</> to accept POSIX-conformant
<literal>tar</> files (Brian Weaver, Tom Lane)
</para>
<para>
The original coding of <application>pg_dump</>'s <literal>tar</>
output mode produced files that are not fully conformant with the
POSIX standard. This has been corrected for version 9.3. This
patch updates previous branches so that they will accept both the
incorrect and the corrected formats, in hopes of avoiding
compatibility problems when 9.3 comes out.
</para>
</listitem>
<listitem>
<para>
Fix <literal>tar</> files emitted by <application>pg_basebackup</> to
be POSIX conformant (Brian Weaver, Tom Lane)
</para>
</listitem>
<listitem>
<para>
Fix <application>pg_resetxlog</> to locate <filename>postmaster.pid</>
correctly when given a relative path to the data directory (Tom Lane)
</para>
<para>
This mistake could lead to <application>pg_resetxlog</> not noticing
that there is an active postmaster using the data directory.
</para>
</listitem>
<listitem>
<para>
Fix <application>libpq</>'s <function>lo_import()</> and
<function>lo_export()</> functions to report file I/O errors properly
(Tom Lane)
</para>
</listitem>
<listitem>
<para>
Fix <application>ecpg</>'s processing of nested structure pointer
variables (Muhammad Usama)
</para>
</listitem>
<listitem>
<para>
Fix <application>ecpg</>'s <function>ecpg_get_data</> function to
handle arrays properly (Michael Meskes)
</para>
</listitem>
<listitem>
<para>
Prevent <application>pg_upgrade</> from trying to process TOAST tables
for system catalogs (Bruce Momjian)
</para>
<para>
This fixes an error seen when the <literal>information_schema</> has
been dropped and recreated. Other failures were also possible.
</para>
</listitem>
<listitem>
<para>
Improve <application>pg_upgrade</> performance by setting
<varname>synchronous_commit</> to <literal>off</> in the new cluster
(Bruce Momjian)
</para>
</listitem>
<listitem>
<para>
Make <filename>contrib/pageinspect</>'s btree page inspection
functions take buffer locks while examining pages (Tom Lane)
</para>
</listitem>
<listitem>
<para>
Work around unportable behavior of <literal>malloc(0)</> and
<literal>realloc(NULL, 0)</> (Tom Lane)
</para>
<para>
On platforms where these calls return <literal>NULL</>, some code
mistakenly thought that meant out-of-memory.
This is known to have broken <application>pg_dump</> for databases
containing no user-defined aggregates. There might be other cases
as well.
</para>
</listitem>
<listitem>
<para>
Ensure that <literal>make install</> for an extension creates the
<filename>extension</> installation directory (Cédric Villemain)
</para>
<para>
Previously, this step was missed if <varname>MODULEDIR</> was set in
the extension's Makefile.
</para>
</listitem>
<listitem>
<para>
Fix <application>pgxs</> support for building loadable modules on AIX
(Tom Lane)
</para>
<para>
Building modules outside the original source tree didn't work on AIX.
</para>
</listitem>
<listitem>
<para>
Update time zone data files to <application>tzdata</> release 2012j
for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western
Samoa, and portions of Brazil.
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493
7494
7495
7496
7497
7498
7499
7500
7501
7502
7503
7504
7505
7506
7507
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585
7586
7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598
<sect1 id="release-9-2-1">
<title>Release 9.2.1</title>
<note>
<title>Release Date</title>
<simpara>2012-09-24</simpara>
</note>
<para>
This release contains a variety of fixes from 9.2.0.
For information about new features in the 9.2 major release, see
<xref linkend="release-9-2">.
</para>
<sect2>
<title>Migration to Version 9.2.1</title>
<para>
A dump/restore is not required for those running 9.2.X.
</para>
<para>
However, you may need to perform <command>REINDEX</> and/or
<command>VACUUM</> operations to recover from the effects of the data
corruption bug described in the first changelog item below.
</para>
</sect2>
<sect2>
<title>Changes</title>
<itemizedlist>
<listitem>
<para>
Fix persistence marking of shared buffers during WAL replay
(Jeff Davis)
</para>
<para>
This mistake can result in buffers not being written out during
checkpoints, resulting in data corruption if the server later crashes
without ever having written those buffers. Corruption can occur on
any server following crash recovery, but it is significantly more
likely to occur on standby slave servers since those perform much
more WAL replay. There is a low probability of corruption of btree
and GIN indexes. There is a much higher probability of corruption
of table <quote>visibility maps</>, which might lead to wrong answers
from index-only scans. Table data proper cannot be corrupted by this
bug.
</para>
<para>
While no index corruption due to this bug is known to have occurred
in the field, as a precautionary measure it is recommended that
production installations <command>REINDEX</> all btree and GIN
indexes at a convenient time after upgrading to 9.2.1.
</para>
<para>
Also, it is recommended to perform a <command>VACUUM</> of all tables
while having <link
linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
set to zero. This will fix any incorrect visibility map data. <link
linkend="guc-vacuum-cost-delay"><varname>vacuum_cost_delay</></link>
can be adjusted to reduce the performance impact of vacuuming, while
causing it to take longer to finish.
</para>
</listitem>
<listitem>
<para>
Fix possible incorrect sorting of output from queries involving
<literal>WHERE <replaceable>indexed_column</> IN
(<replaceable>list_of_values</>)</literal> (Tom Lane)
</para>
</listitem>
<listitem>
<para>
Fix planner failure for queries involving <literal>GROUP BY</>
expressions along with window functions and aggregates (Tom Lane)
</para>
</listitem>
<listitem>
<para>
Fix planner's assignment of executor parameters (Tom Lane)
</para>
<para>
This error could result in wrong answers from queries that scan the
same <literal>WITH</> subquery multiple times.
</para>
</listitem>
<listitem>
<para>
Improve planner's handling of join conditions in index scans (Tom Lane)
</para>
</listitem>
<listitem>
<para>
Improve selectivity estimation for text search queries involving
prefixes, i.e. <replaceable>word</><literal>:*</> patterns (Tom Lane)
</para>
</listitem>
<listitem>
<para>
Fix delayed recognition of permissions changes (Tom Lane)
</para>
<para>
A command that needed no locks other than ones its transaction already
had might fail to notice a concurrent <command>GRANT</> or
<command>REVOKE</> that committed since the start of its transaction.
</para>
</listitem>
<listitem>
<para>
Fix <command>ANALYZE</> to not fail when a column is a domain over an
array type (Tom Lane)
</para>
</listitem>
<listitem>
<para>
Prevent PL/Perl from crashing if a recursive PL/Perl function is
redefined while being executed (Tom Lane)
</para>
</listitem>
<listitem>
<para>
Work around possible misoptimization in PL/Perl (Tom Lane)
</para>
<para>
Some Linux distributions contain an incorrect version of
<filename>pthread.h</> that results in incorrect compiled code in
PL/Perl, leading to crashes if a PL/Perl function calls another one
that throws an error.
</para>
</listitem>
<listitem>
<para>
Remove unnecessary dependency on <application>pg_config</> from
<application>pg_upgrade</> (Peter Eisentraut)
</para>
</listitem>
<listitem>
<para>
Update time zone data files to <application>tzdata</> release 2012f
for DST law changes in Fiji
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="release-9-2">
<title>Release 9.2</title>
<note>
<title>Release Date</title>
<simpara>2012-09-10</simpara>
</note>
<sect2>
<title>Overview</title>
<para>
This release has been largely focused on performance improvements, though
new SQL features are not lacking. Work also continues in the area of
replication support. Major enhancements include:
</para>
<itemizedlist>
<!-- This list duplicates items below, but without authors or details-->
7620
7621
7622
7623
7624
7625
7626
7627
7628
7629
7630
7631
7632
7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
<listitem>
<para>
Allow queries to retrieve data only from indexes, avoiding heap
access (<firstterm>index-only scans</>)
</para>
</listitem>
<listitem>
<para>
Allow the planner to generate custom plans for specific parameter
values even when using prepared statements
</para>
</listitem>
<listitem>
<para>
Improve the planner's ability to use nested loops with inner
index scans
</para>
</listitem>
<listitem>
<para>
Allow streaming replication slaves to forward data to other slaves
(<link linkend="cascading-replication"><firstterm>cascading
replication</></link>)
</para>
</listitem>
<listitem>
<para>
Allow <link
linkend="app-pgbasebackup"><application>pg_basebackup</></link>
to make base backups from standby servers
</para>
</listitem>
7657
7658
7659
7660
7661
7662
7663
7664
7665
7666
7667
7668
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678
7679
7680
7681
7682
7683
7684
7685
7686
7687
7688
7689
7690
7691
7692
7693
7694
7695
7696
7697
7698
7699
7700
7701
7702
7703
7704
7705
7706
7707
<listitem>
<para>
Add a <link
linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
tool to archive WAL file changes as they are written
</para>
</listitem>
<listitem>
<para>
Add the <link linkend="SPGiST">SP-GiST</link> (Space-Partitioned
GiST) index access method
</para>
</listitem>
<listitem>
<para>
Add support for <link linkend="rangetypes">range data types</link>
</para>
</listitem>
<listitem>
<para>
Add a <link linkend="datatype-json"><type>JSON</type></link>
data type
</para>
</listitem>
<listitem>
<para>
Add a <link
linkend="SQL-CREATEVIEW"><literal>security_barrier</></link>
option for views
</para>
</listitem>
<listitem>
<para>
Allow <application>libpq</> connection strings to have the format of a
<link linkend="libpq-connstring"><acronym>URI</acronym></link>
</para>
</listitem>
<listitem>
<para>
Add a <link linkend="libpq-single-row-mode">single-row processing
mode</link> to <application>libpq</> for better handling of large
result sets
</para>
</listitem>
7708
7709
7710
7711
7712
7713
7714
7715
7716
7717
7718
7719
7720
7721
7722
7723
7724
7725
7726
7727
7728
7729
7730
7731
</itemizedlist>
<para>
The above items are explained in more detail in the sections below.
</para>
</sect2>
<sect2>
<title>Migration to Version 9.2</title>
<para>
A dump/restore using <application>pg_dump</application>, or use of
<application>pg_upgrade</application>, is required for those wishing
to migrate data from any previous release.
</para>
<para>
Version 9.2 contains a number of changes that may affect compatibility
with previous releases. Observe the following incompatibilities:
</para>
<sect3>
<title>System Catalogs</title>
<itemizedlist>
<listitem>
<para>
Remove the <structfield>spclocation</> field from <link
linkend="catalog-pg-tablespace"><structname>pg_tablespace</></link>
(Magnus Hagander)
This field was duplicative of the symbolic links that actually define
tablespace locations, and thus risked errors of omission when moving
a tablespace. This change allows tablespace directories to be moved
while the server is down, by manually adjusting the symbolic links.
To replace this field, we have added <link
linkend="functions-info-catalog-table"><function>pg_tablespace_location()</></link>
to allow querying of the symbolic links.
</para>
</listitem>
<listitem>
<para>
Move <type>tsvector</> most-common-element statistics to new
<link linkend="view-pg-stats"><structname>pg_stats</></link> columns
(Alexander Korotkov)
Consult <structfield>most_common_elems</>
and <structfield>most_common_elem_freqs</> for the data formerly
available in <structfield>most_common_vals</>
and <structfield>most_common_freqs</> for a <type>tsvector</> column.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Functions</title>
<itemizedlist>
<listitem>
<para>
Remove <link linkend="hstore">hstore</link>'s <literal>=></>
operator (Robert Haas)
Users should now use <function>hstore(text, text)</>. Since
<productname>PostgreSQL</productname> 9.0, a warning message has been
emitted when an operator named <literal>=></> is created because
the <acronym>SQL</acronym> standard reserves that token for
another use.
</para>
</listitem>
<listitem>
<para>
Ensure that <link
linkend="functions-xml-processing"><function>xpath()</></link>
escapes special characters in string values (Florian Pflug)
Without this it is possible for the result not to be valid
<acronym>XML</acronym>.
</para>
</listitem>
Make <link
linkend="functions-admin-dbobject"><function>pg_relation_size()</></link>
and friends return NULL if the object does not exist (Phil Sorber)
This prevents queries that call these functions from returning
errors immediately after a concurrent <command>DROP</>.
<listitem>
<para>
linkend="functions-datetime-extract"><function>EXTRACT(EPOCH FROM
<replaceable>timestamp without time zone</>)</function></link>
measure the epoch from local midnight, not <acronym>UTC</acronym>
midnight (Tom Lane)
This change reverts an ill-considered change made in release 7.3.
Measuring from <acronym>UTC</acronym> midnight was inconsistent
because it made the result dependent on the <link
linkend="guc-timezone"><varname>timezone</></link> setting, which
computations for <type>timestamp without time zone</> should not be.
The previous behavior remains available by casting the input value
to <type>timestamp with time zone</>.
</para>
</listitem>
<listitem>
<para>
Properly parse time strings with trailing <literal>yesterday</>,
<literal>today</>, and <literal>tomorrow</> (Dean Rasheed)
</para>
Previously, <literal>SELECT '04:00:00 yesterday'::timestamp</literal>
returned yesterday's date at midnight.
</para>
</listitem>
<listitem>
<para>
Fix <link
linkend="functions-formatting"><function>to_date()</></link> and
<function>to_timestamp()</> to wrap incomplete dates toward 2020
(Bruce Momjian)
</para>
Previously, supplied years and year masks of less than four digits
wrapped inconsistently.
</para>
</listitem>
<sect3>
<title>Object Modification</title>
<itemizedlist>
<listitem>
<para>
Prevent <link linkend="SQL-ALTERDOMAIN"><command>ALTER
DOMAIN</command></link> from working on non-domain types (Peter
Eisentraut)
</para>
<para>
Owner and schema changes were previously possible on non-domain
types.
</para>
</listitem>
<listitem>
<para>
No longer forcibly lowercase procedural language names in <link
linkend="SQL-CREATEFUNCTION"><command>CREATE FUNCTION</></link>
(Robert Haas)
While unquoted language identifiers are still lowercased, strings
and quoted identifiers are no longer forcibly down-cased.
Thus for example <literal>CREATE FUNCTION ... LANGUAGE 'C'</>
will no longer work; it must be spelled <literal>'c'</>, or better
omit the quotes.
</para>
</listitem>
<listitem>
<para>
Change system-generated names of foreign key enforcement triggers
(Tom Lane)
</para>
<para>
This change ensures that the triggers fire in the correct order in
some corner cases involving self-referential foreign key constraints.
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Command-Line Tools</title>
<itemizedlist>
<listitem>
<para>
Provide consistent backquote, variable
expansion, and quoted substring behavior in <link
linkend="APP-PSQL"><application>psql</></link> meta-command
arguments (Tom Lane)
</para>
Previously, such references were treated oddly when not separated by
whitespace from adjacent text. For example <literal>'FOO'BAR</> was
output as <literal>FOO BAR</> (unexpected insertion of a space) and
<literal>FOO'BAR'BAZ</> was output unchanged (not removing the quotes
as most would expect).
</para>
</listitem>
<listitem>
<para>
No longer treat <link
linkend="APP-CLUSTERDB"><application>clusterdb</></link>
table names as double-quoted; no longer treat <link
linkend="APP-REINDEXDB"><application>reindexdb</></link> table
and index names as double-quoted (Bruce Momjian)
</para>
Users must now include double-quotes in the command arguments if
quoting is wanted.
</para>
</listitem>
<listitem>
<para>
<link linkend="APP-CREATEUSER"><application>createuser</></link>
no longer prompts for option settings by default (Peter Eisentraut)
Use <option>--interactive</> to obtain the old behavior.
</para>
</listitem>
<listitem>
<para>
Disable prompting for the user name in <link
linkend="APP-DROPUSER"><application>dropuser</></link> unless
<option>--interactive</> is specified (Peter Eisentraut)
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3>
<title>Server Settings</title>
<itemizedlist>
<listitem>
<para>
Add server parameters for specifying the <link
linkend="guc-ssl-ca-file">locations of server-side
<acronym>SSL</acronym> files</link> (Peter Eisentraut)
This allows changing the names and locations of the files that were
previously hard-coded as <filename>server.crt</>,
<filename>server.key</>, <filename>root.crt</>, and
<filename>root.crl</> in the data directory.
<emphasis>The server will no longer examine <filename>root.crt</> or
<filename>root.crl</> by default</emphasis>; to load these files, the
associated parameters must be set to non-default values.
</para>
</listitem>