~ubuntu-branches/ubuntu/utopic/postgresql-9.4/utopic-security

« back to all changes in this revision

Viewing changes to doc/src/sgml/release-9.2.sgml

  • Committer: Package Import Robot
  • Author(s): Martin Pitt, CVE-2014-8161
  • Date: 2015-02-06 12:31:46 UTC
  • mfrom: (1.1.5) (7.1.2 utopic-proposed)
  • Revision ID: package-import@ubuntu.com-20150206123146-vtmf30jbkm7w16p8
Tags: 9.4.1-0ubuntu0.14.10
* New upstream security/bug fix release (LP: #1418928)
  - Fix buffer overruns in to_char() [CVE-2015-0241]
  - Fix buffer overruns in contrib/pgcrypto [CVE-2015-0243]
  - Fix possible loss of frontend/backend protocol synchronization after an
    error [CVE-2015-0244]
  - Fix information leak via constraint-violation error messages
    [CVE-2014-8161]
  - See release notes for details about other fixes:
    http://www.postgresql.org/about/news/1569/

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
<!-- doc/src/sgml/release-9.2.sgml -->
2
2
<!-- See header comment in release.sgml about typical markup -->
3
3
 
 
4
 <sect1 id="release-9-2-10">
 
5
  <title>Release 9.2.10</title>
 
6
 
 
7
  <note>
 
8
  <title>Release Date</title>
 
9
  <simpara>2015-02-05</simpara>
 
10
  </note>
 
11
 
 
12
  <para>
 
13
   This release contains a variety of fixes from 9.2.9.
 
14
   For information about new features in the 9.2 major release, see
 
15
   <xref linkend="release-9-2">.
 
16
  </para>
 
17
 
 
18
  <sect2>
 
19
   <title>Migration to Version 9.2.10</title>
 
20
 
 
21
   <para>
 
22
    A dump/restore is not required for those running 9.2.X.
 
23
   </para>
 
24
 
 
25
   <para>
 
26
    However, if you are a Windows user and are using the <quote>Norwegian
 
27
    (Bokm&aring;l)</> locale, manual action is needed after the upgrade to
 
28
    replace any <quote>Norwegian (Bokm&aring;l)_Norway</> locale names stored
 
29
    in <productname>PostgreSQL</> system catalogs with the plain-ASCII
 
30
    alias <quote>Norwegian_Norway</>.  For details see
 
31
    <ulink url="http://wiki.postgresql.org/wiki/Changes_To_Norwegian_Locale"></>
 
32
   </para>
 
33
 
 
34
   <para>
 
35
    Also, if you are upgrading from a version earlier than 9.2.9,
 
36
    see <xref linkend="release-9-2-9">.
 
37
   </para>
 
38
 
 
39
  </sect2>
 
40
 
 
41
  <sect2>
 
42
   <title>Changes</title>
 
43
 
 
44
   <itemizedlist>
 
45
 
 
46
    <listitem>
 
47
     <para>
 
48
      Fix buffer overruns in <function>to_char()</>
 
49
      (Bruce Momjian)
 
50
     </para>
 
51
 
 
52
     <para>
 
53
      When <function>to_char()</> processes a numeric formatting template
 
54
      calling for a large number of digits, <productname>PostgreSQL</>
 
55
      would read past the end of a buffer.  When processing a crafted
 
56
      timestamp formatting template, <productname>PostgreSQL</> would write
 
57
      past the end of a buffer.  Either case could crash the server.
 
58
      We have not ruled out the possibility of attacks that lead to
 
59
      privilege escalation, though they seem unlikely.
 
60
      (CVE-2015-0241)
 
61
     </para>
 
62
    </listitem>
 
63
 
 
64
    <listitem>
 
65
     <para>
 
66
      Fix buffer overrun in replacement <function>*printf()</> functions
 
67
      (Tom Lane)
 
68
     </para>
 
69
 
 
70
     <para>
 
71
      <productname>PostgreSQL</> includes a replacement implementation
 
72
      of <function>printf</> and related functions.  This code will overrun
 
73
      a stack buffer when formatting a floating point number (conversion
 
74
      specifiers <literal>e</>, <literal>E</>, <literal>f</>, <literal>F</>,
 
75
      <literal>g</> or <literal>G</>) with requested precision greater than
 
76
      about 500.  This will crash the server, and we have not ruled out the
 
77
      possibility of attacks that lead to privilege escalation.
 
78
      A database user can trigger such a buffer overrun through
 
79
      the <function>to_char()</> SQL function.  While that is the only
 
80
      affected core <productname>PostgreSQL</> functionality, extension
 
81
      modules that use printf-family functions may be at risk as well.
 
82
     </para>
 
83
 
 
84
     <para>
 
85
      This issue primarily affects <productname>PostgreSQL</> on Windows.
 
86
      <productname>PostgreSQL</> uses the system implementation of these
 
87
      functions where adequate, which it is on other modern platforms.
 
88
      (CVE-2015-0242)
 
89
     </para>
 
90
    </listitem>
 
91
 
 
92
    <listitem>
 
93
     <para>
 
94
      Fix buffer overruns in <filename>contrib/pgcrypto</>
 
95
      (Marko Tiikkaja, Noah Misch)
 
96
     </para>
 
97
 
 
98
     <para>
 
99
      Errors in memory size tracking within the <filename>pgcrypto</>
 
100
      module permitted stack buffer overruns and improper dependence on the
 
101
      contents of uninitialized memory.  The buffer overrun cases can
 
102
      crash the server, and we have not ruled out the possibility of
 
103
      attacks that lead to privilege escalation.
 
104
      (CVE-2015-0243)
 
105
     </para>
 
106
    </listitem>
 
107
 
 
108
    <listitem>
 
109
     <para>
 
110
      Fix possible loss of frontend/backend protocol synchronization after
 
111
      an error
 
112
      (Heikki Linnakangas)
 
113
     </para>
 
114
 
 
115
     <para>
 
116
      If any error occurred while the server was in the middle of reading a
 
117
      protocol message from the client, it could lose synchronization and
 
118
      incorrectly try to interpret part of the message's data as a new
 
119
      protocol message.  An attacker able to submit crafted binary data
 
120
      within a command parameter might succeed in injecting his own SQL
 
121
      commands this way.  Statement timeout and query cancellation are the
 
122
      most likely sources of errors triggering this scenario.  Particularly
 
123
      vulnerable are applications that use a timeout and also submit
 
124
      arbitrary user-crafted data as binary query parameters.  Disabling
 
125
      statement timeout will reduce, but not eliminate, the risk of
 
126
      exploit.  Our thanks to Emil Lenngren for reporting this issue.
 
127
      (CVE-2015-0244)
 
128
     </para>
 
129
    </listitem>
 
130
 
 
131
    <listitem>
 
132
     <para>
 
133
      Fix information leak via constraint-violation error messages
 
134
      (Stephen Frost)
 
135
     </para>
 
136
 
 
137
     <para>
 
138
      Some server error messages show the values of columns that violate
 
139
      a constraint, such as a unique constraint.  If the user does not have
 
140
      <literal>SELECT</> privilege on all columns of the table, this could
 
141
      mean exposing values that the user should not be able to see.  Adjust
 
142
      the code so that values are displayed only when they came from the SQL
 
143
      command or could be selected by the user.
 
144
      (CVE-2014-8161)
 
145
     </para>
 
146
    </listitem>
 
147
 
 
148
    <listitem>
 
149
     <para>
 
150
      Lock down regression testing's temporary installations on Windows
 
151
      (Noah Misch)
 
152
     </para>
 
153
 
 
154
     <para>
 
155
      Use SSPI authentication to allow connections only from the OS user
 
156
      who launched the test suite.  This closes on Windows the same
 
157
      vulnerability previously closed on other platforms, namely that other
 
158
      users might be able to connect to the test postmaster.
 
159
      (CVE-2014-0067)
 
160
     </para>
 
161
    </listitem>
 
162
 
 
163
    <listitem>
 
164
     <para>
 
165
      Cope with the Windows locale named <quote>Norwegian (Bokm&aring;l)</>
 
166
      (Heikki Linnakangas)
 
167
     </para>
 
168
 
 
169
     <para>
 
170
      Non-ASCII locale names are problematic since it's not clear what
 
171
      encoding they should be represented in.  Map the troublesome locale
 
172
      name to a plain-ASCII alias, <quote>Norwegian_Norway</>.
 
173
     </para>
 
174
    </listitem>
 
175
 
 
176
    <listitem>
 
177
     <para>
 
178
      Avoid possible data corruption if <command>ALTER DATABASE SET
 
179
      TABLESPACE</> is used to move a database to a new tablespace and then
 
180
      shortly later move it back to its original tablespace (Tom Lane)
 
181
     </para>
 
182
    </listitem>
 
183
 
 
184
    <listitem>
 
185
     <para>
 
186
      Avoid corrupting tables when <command>ANALYZE</> inside a transaction
 
187
      is rolled back (Andres Freund, Tom Lane, Michael Paquier)
 
188
     </para>
 
189
 
 
190
     <para>
 
191
      If the failing transaction had earlier removed the last index, rule, or
 
192
      trigger from the table, the table would be left in a corrupted state
 
193
      with the relevant <structname>pg_class</> flags not set though they
 
194
      should be.
 
195
     </para>
 
196
    </listitem>
 
197
 
 
198
    <listitem>
 
199
     <para>
 
200
      Ensure that unlogged tables are copied correctly
 
201
      during <command>CREATE DATABASE</> or <command>ALTER DATABASE SET
 
202
      TABLESPACE</> (Pavan Deolasee, Andres Freund)
 
203
     </para>
 
204
    </listitem>
 
205
 
 
206
    <listitem>
 
207
     <para>
 
208
      Fix <command>DROP</>'s dependency searching to correctly handle the
 
209
      case where a table column is recursively visited before its table
 
210
      (Petr Jelinek, Tom Lane)
 
211
     </para>
 
212
 
 
213
     <para>
 
214
      This case is only known to arise when an extension creates both a
 
215
      datatype and a table using that datatype.  The faulty code might
 
216
      refuse a <command>DROP EXTENSION</> unless <literal>CASCADE</> is
 
217
      specified, which should not be required.
 
218
     </para>
 
219
    </listitem>
 
220
 
 
221
    <listitem>
 
222
     <para>
 
223
      Fix use-of-already-freed-memory problem in EvalPlanQual processing
 
224
      (Tom Lane)
 
225
     </para>
 
226
 
 
227
     <para>
 
228
      In <literal>READ COMMITTED</> mode, queries that lock or update
 
229
      recently-updated rows could crash as a result of this bug.
 
230
     </para>
 
231
    </listitem>
 
232
 
 
233
    <listitem>
 
234
     <para>
 
235
      Fix planning of <command>SELECT FOR UPDATE</> when using a partial
 
236
      index on a child table (Kyotaro Horiguchi)
 
237
     </para>
 
238
 
 
239
     <para>
 
240
      In <literal>READ COMMITTED</> mode, <command>SELECT FOR UPDATE</> must
 
241
      also recheck the partial index's <literal>WHERE</> condition when
 
242
      rechecking a recently-updated row to see if it still satisfies the
 
243
      query's <literal>WHERE</> condition.  This requirement was missed if the
 
244
      index belonged to an inheritance child table, so that it was possible
 
245
      to incorrectly return rows that no longer satisfy the query condition.
 
246
     </para>
 
247
    </listitem>
 
248
 
 
249
    <listitem>
 
250
     <para>
 
251
      Fix corner case wherein <command>SELECT FOR UPDATE</> could return a row
 
252
      twice, and possibly miss returning other rows (Tom Lane)
 
253
     </para>
 
254
 
 
255
     <para>
 
256
      In <literal>READ COMMITTED</> mode, a <command>SELECT FOR UPDATE</>
 
257
      that is scanning an inheritance tree could incorrectly return a row
 
258
      from a prior child table instead of the one it should return from a
 
259
      later child table.
 
260
     </para>
 
261
    </listitem>
 
262
 
 
263
    <listitem>
 
264
     <para>
 
265
      Reject duplicate column names in the referenced-columns list of
 
266
      a <literal>FOREIGN KEY</> declaration (David Rowley)
 
267
     </para>
 
268
 
 
269
     <para>
 
270
      This restriction is per SQL standard.  Previously we did not reject
 
271
      the case explicitly, but later on the code would fail with
 
272
      bizarre-looking errors.
 
273
     </para>
 
274
    </listitem>
 
275
 
 
276
    <listitem>
 
277
     <para>
 
278
      Restore previous behavior of conversion of domains to JSON
 
279
      (Tom Lane)
 
280
     </para>
 
281
 
 
282
     <para>
 
283
      This change causes domains over numeric and boolean to be treated
 
284
      like their base types for purposes of conversion to JSON.  It worked
 
285
      like that before 9.3.5 and 9.2.9, but was unintentionally changed
 
286
      while fixing a related problem.
 
287
     </para>
 
288
    </listitem>
 
289
 
 
290
    <listitem>
 
291
     <para>
 
292
      Fix bugs in raising a <type>numeric</> value to a large integral power
 
293
      (Tom Lane)
 
294
     </para>
 
295
 
 
296
     <para>
 
297
      The previous code could get a wrong answer, or consume excessive
 
298
      amounts of time and memory before realizing that the answer must
 
299
      overflow.
 
300
     </para>
 
301
    </listitem>
 
302
 
 
303
    <listitem>
 
304
     <para>
 
305
      In <function>numeric_recv()</>, truncate away any fractional digits
 
306
      that would be hidden according to the value's <literal>dscale</> field
 
307
      (Tom Lane)
 
308
     </para>
 
309
 
 
310
     <para>
 
311
      A <type>numeric</> value's display scale (<literal>dscale</>) should
 
312
      never be less than the number of nonzero fractional digits; but
 
313
      apparently there's at least one broken client application that
 
314
      transmits binary <type>numeric</> values in which that's true.
 
315
      This leads to strange behavior since the extra digits are taken into
 
316
      account by arithmetic operations even though they aren't printed.
 
317
      The least risky fix seems to be to truncate away such <quote>hidden</>
 
318
      digits on receipt, so that the value is indeed what it prints as.
 
319
     </para>
 
320
    </listitem>
 
321
 
 
322
    <listitem>
 
323
     <para>
 
324
      Fix incorrect search for shortest-first regular expression matches
 
325
      (Tom Lane)
 
326
     </para>
 
327
 
 
328
     <para>
 
329
      Matching would often fail when the number of allowed iterations is
 
330
      limited by a <literal>?</> quantifier or a bound expression.
 
331
     </para>
 
332
    </listitem>
 
333
 
 
334
    <listitem>
 
335
     <para>
 
336
      Reject out-of-range numeric timezone specifications (Tom Lane)
 
337
     </para>
 
338
 
 
339
     <para>
 
340
      Simple numeric timezone specifications exceeding +/- 168 hours (one
 
341
      week) would be accepted, but could then cause null-pointer dereference
 
342
      crashes in certain operations.  There's no use-case for such large UTC
 
343
      offsets, so reject them.
 
344
     </para>
 
345
    </listitem>
 
346
 
 
347
    <listitem>
 
348
     <para>
 
349
      Fix bugs in <type>tsquery</> <literal>@&gt;</> <type>tsquery</>
 
350
      operator (Heikki Linnakangas)
 
351
     </para>
 
352
 
 
353
     <para>
 
354
      Two different terms would be considered to match if they had the same
 
355
      CRC.  Also, if the second operand had more terms than the first, it
 
356
      would be assumed not to be contained in the first; which is wrong
 
357
      since it might contain duplicate terms.
 
358
     </para>
 
359
    </listitem>
 
360
 
 
361
    <listitem>
 
362
     <para>
 
363
      Improve ispell dictionary's defenses against bad affix files (Tom Lane)
 
364
     </para>
 
365
    </listitem>
 
366
 
 
367
    <listitem>
 
368
     <para>
 
369
      Allow more than 64K phrases in a thesaurus dictionary (David Boutin)
 
370
     </para>
 
371
 
 
372
     <para>
 
373
      The previous coding could crash on an oversize dictionary, so this was
 
374
      deemed a back-patchable bug fix rather than a feature addition.
 
375
     </para>
 
376
    </listitem>
 
377
 
 
378
    <listitem>
 
379
     <para>
 
380
      Fix namespace handling in <function>xpath()</> (Ali Akbar)
 
381
     </para>
 
382
 
 
383
     <para>
 
384
      Previously, the <type>xml</> value resulting from
 
385
      an <function>xpath()</> call would not have namespace declarations if
 
386
      the namespace declarations were attached to an ancestor element in the
 
387
      input <type>xml</> value, rather than to the specific element being
 
388
      returned.  Propagate the ancestral declaration so that the result is
 
389
      correct when considered in isolation.
 
390
     </para>
 
391
    </listitem>
 
392
 
 
393
    <listitem>
 
394
     <para>
 
395
      Ensure that whole-row variables expose nonempty column names
 
396
      to functions that pay attention to column names within composite
 
397
      arguments (Tom Lane)
 
398
     </para>
 
399
 
 
400
     <para>
 
401
      In some contexts, constructs like <literal>row_to_json(tab.*)</> may
 
402
      not produce the expected column names.  This is fixed properly as of
 
403
      9.4; in older branches, just ensure that we produce some nonempty
 
404
      name.  (In some cases this will be the underlying table's column name
 
405
      rather than the query-assigned alias that should theoretically be
 
406
      visible.)
 
407
     </para>
 
408
    </listitem>
 
409
 
 
410
    <listitem>
 
411
     <para>
 
412
      Fix mishandling of system columns,
 
413
      particularly <structfield>tableoid</>, in FDW queries (Etsuro Fujita)
 
414
     </para>
 
415
    </listitem>
 
416
 
 
417
    <listitem>
 
418
     <para>
 
419
      Avoid doing <literal><replaceable>indexed_column</> = ANY
 
420
      (<replaceable>array</>)</literal> as an index qualifier if that leads
 
421
      to an inferior plan (Andrew Gierth)
 
422
     </para>
 
423
 
 
424
     <para>
 
425
      In some cases, <literal>= ANY</> conditions applied to non-first index
 
426
      columns would be done as index conditions even though it would be
 
427
      better to use them as simple filter conditions.
 
428
     </para>
 
429
    </listitem>
 
430
 
 
431
    <listitem>
 
432
     <para>
 
433
      Fix planner problems with nested append relations, such as inherited
 
434
      tables within <literal>UNION ALL</> subqueries (Tom Lane)
 
435
     </para>
 
436
    </listitem>
 
437
 
 
438
    <listitem>
 
439
     <para>
 
440
      Fail cleanly when a GiST index tuple doesn't fit on a page, rather
 
441
      than going into infinite recursion (Andrew Gierth)
 
442
     </para>
 
443
    </listitem>
 
444
 
 
445
    <listitem>
 
446
     <para>
 
447
      Exempt tables that have per-table <varname>cost_limit</>
 
448
      and/or <varname>cost_delay</> settings from autovacuum's global cost
 
449
      balancing rules (&Aacute;lvaro Herrera)
 
450
     </para>
 
451
 
 
452
     <para>
 
453
      The previous behavior resulted in basically ignoring these per-table
 
454
      settings, which was unintended.  Now, a table having such settings
 
455
      will be vacuumed using those settings, independently of what is going
 
456
      on in other autovacuum workers.  This may result in heavier total I/O
 
457
      load than before, so such settings should be re-examined for sanity.
 
458
     </para>
 
459
    </listitem>
 
460
 
 
461
    <listitem>
 
462
     <para>
 
463
      Avoid wholesale autovacuuming when autovacuum is nominally off
 
464
      (Tom Lane)
 
465
     </para>
 
466
 
 
467
     <para>
 
468
      Even when autovacuum is nominally off, we will still launch autovacuum
 
469
      worker processes to vacuum tables that are at risk of XID wraparound.
 
470
      However, such a worker process then proceeded to vacuum all tables in
 
471
      the target database, if they met the usual thresholds for
 
472
      autovacuuming.  This is at best pretty unexpected; at worst it delays
 
473
      response to the wraparound threat.  Fix it so that if autovacuum is
 
474
      turned off, workers <emphasis>only</> do anti-wraparound vacuums and
 
475
      not any other work.
 
476
     </para>
 
477
    </listitem>
 
478
 
 
479
    <listitem>
 
480
     <para>
 
481
      During crash recovery, ensure that unlogged relations are rewritten as
 
482
      empty and are synced to disk before recovery is considered complete
 
483
      (Abhijit Menon-Sen, Andres Freund)
 
484
     </para>
 
485
 
 
486
     <para>
 
487
      This prevents scenarios in which unlogged relations might contain
 
488
      garbage data following database crash recovery.
 
489
     </para>
 
490
    </listitem>
 
491
 
 
492
    <listitem>
 
493
     <para>
 
494
      Fix race condition between hot standby queries and replaying a
 
495
      full-page image (Heikki Linnakangas)
 
496
     </para>
 
497
 
 
498
     <para>
 
499
      This mistake could result in transient errors in queries being
 
500
      executed in hot standby.
 
501
     </para>
 
502
    </listitem>
 
503
 
 
504
    <listitem>
 
505
     <para>
 
506
      Fix several cases where recovery logic improperly ignored WAL records
 
507
      for <literal>COMMIT/ABORT PREPARED</> (Heikki Linnakangas)
 
508
     </para>
 
509
 
 
510
     <para>
 
511
      The most notable oversight was
 
512
      that <varname>recovery_min_apply_delay</> failed to delay application
 
513
      of a two-phase commit.
 
514
     </para>
 
515
    </listitem>
 
516
 
 
517
    <listitem>
 
518
     <para>
 
519
      Prevent latest WAL file from being archived a second time at completion
 
520
      of crash recovery (Fujii Masao)
 
521
     </para>
 
522
    </listitem>
 
523
 
 
524
    <listitem>
 
525
     <para>
 
526
      Avoid creating unnecessary <filename>.ready</> marker files for
 
527
      timeline history files (Fujii Masao)
 
528
     </para>
 
529
    </listitem>
 
530
 
 
531
    <listitem>
 
532
     <para>
 
533
      Fix possible null pointer dereference when an empty prepared statement
 
534
      is used and the <varname>log_statement</> setting is <literal>mod</>
 
535
      or <literal>ddl</> (Fujii Masao)
 
536
     </para>
 
537
    </listitem>
 
538
 
 
539
    <listitem>
 
540
     <para>
 
541
      Change <quote>pgstat wait timeout</> warning message to be LOG level,
 
542
      and rephrase it to be more understandable (Tom Lane)
 
543
     </para>
 
544
 
 
545
     <para>
 
546
      This message was originally thought to be essentially a can't-happen
 
547
      case, but it occurs often enough on our slower buildfarm members to be
 
548
      a nuisance.  Reduce it to LOG level, and expend a bit more effort on
 
549
      the wording: it now reads <quote>using stale statistics instead of
 
550
      current ones because stats collector is not responding</>.
 
551
     </para>
 
552
    </listitem>
 
553
 
 
554
    <listitem>
 
555
     <para>
 
556
      Fix SPARC spinlock implementation to ensure correctness if the CPU is
 
557
      being run in a non-TSO coherency mode, as some non-Solaris kernels do
 
558
      (Andres Freund)
 
559
     </para>
 
560
    </listitem>
 
561
 
 
562
    <listitem>
 
563
     <para>
 
564
      Warn if OS X's <function>setlocale()</> starts an unwanted extra
 
565
      thread inside the postmaster (Noah Misch)
 
566
     </para>
 
567
    </listitem>
 
568
 
 
569
    <listitem>
 
570
     <para>
 
571
      Fix processing of repeated <literal>dbname</> parameters
 
572
      in <function>PQconnectdbParams()</> (Alex Shulgin)
 
573
     </para>
 
574
 
 
575
     <para>
 
576
      Unexpected behavior ensued if the first occurrence
 
577
      of <literal>dbname</> contained a connection string or URI to be
 
578
      expanded.
 
579
     </para>
 
580
    </listitem>
 
581
 
 
582
    <listitem>
 
583
     <para>
 
584
      Ensure that <application>libpq</> reports a suitable error message on
 
585
      unexpected socket EOF (Marko Tiikkaja, Tom Lane)
 
586
     </para>
 
587
 
 
588
     <para>
 
589
      Depending on kernel behavior, <application>libpq</> might return an
 
590
      empty error string rather than something useful when the server
 
591
      unexpectedly closed the socket.
 
592
     </para>
 
593
    </listitem>
 
594
 
 
595
    <listitem>
 
596
     <para>
 
597
      Clear any old error message during <function>PQreset()</>
 
598
      (Heikki Linnakangas)
 
599
     </para>
 
600
 
 
601
     <para>
 
602
      If <function>PQreset()</> is called repeatedly, and the connection
 
603
      cannot be re-established, error messages from the failed connection
 
604
      attempts kept accumulating in the <structname>PGconn</>'s error
 
605
      string.
 
606
     </para>
 
607
    </listitem>
 
608
 
 
609
    <listitem>
 
610
     <para>
 
611
      Properly handle out-of-memory conditions while parsing connection
 
612
      options in <application>libpq</> (Alex Shulgin, Heikki Linnakangas)
 
613
     </para>
 
614
    </listitem>
 
615
 
 
616
    <listitem>
 
617
     <para>
 
618
      Fix array overrun in <application>ecpg</>'s version
 
619
      of <function>ParseDateTime()</> (Michael Paquier)
 
620
     </para>
 
621
    </listitem>
 
622
 
 
623
    <listitem>
 
624
     <para>
 
625
      In <application>initdb</>, give a clearer error message if a password
 
626
      file is specified but is empty (Mats Erik Andersson)
 
627
     </para>
 
628
    </listitem>
 
629
 
 
630
    <listitem>
 
631
     <para>
 
632
      Fix <application>psql</>'s <command>\s</> command to work nicely with
 
633
      libedit, and add pager support (Stepan Rutz, Tom Lane)
 
634
     </para>
 
635
 
 
636
     <para>
 
637
      When using libedit rather than readline, <command>\s</> printed the
 
638
      command history in a fairly unreadable encoded format, and on recent
 
639
      libedit versions might fail altogether.  Fix that by printing the
 
640
      history ourselves rather than having the library do it.  A pleasant
 
641
      side-effect is that the pager is used if appropriate.
 
642
     </para>
 
643
 
 
644
     <para>
 
645
      This patch also fixes a bug that caused newline encoding to be applied
 
646
      inconsistently when saving the command history with libedit.
 
647
      Multiline history entries written by older <application>psql</>
 
648
      versions will be read cleanly with this patch, but perhaps not
 
649
      vice versa, depending on the exact libedit versions involved.
 
650
     </para>
 
651
    </listitem>
 
652
 
 
653
    <listitem>
 
654
     <para>
 
655
      Improve consistency of parsing of <application>psql</>'s special
 
656
      variables (Tom Lane)
 
657
     </para>
 
658
 
 
659
     <para>
 
660
      Allow variant spellings of <literal>on</> and <literal>off</> (such
 
661
      as <literal>1</>/<literal>0</>) for <literal>ECHO_HIDDEN</>
 
662
      and <literal>ON_ERROR_ROLLBACK</>.  Report a warning for unrecognized
 
663
      values for <literal>COMP_KEYWORD_CASE</>, <literal>ECHO</>,
 
664
      <literal>ECHO_HIDDEN</>, <literal>HISTCONTROL</>,
 
665
      <literal>ON_ERROR_ROLLBACK</>, and <literal>VERBOSITY</>.  Recognize
 
666
      all values for all these variables case-insensitively; previously
 
667
      there was a mishmash of case-sensitive and case-insensitive behaviors.
 
668
     </para>
 
669
    </listitem>
 
670
 
 
671
    <listitem>
 
672
     <para>
 
673
      Fix <application>psql</>'s expanded-mode display to work
 
674
      consistently when using <literal>border</> = 3
 
675
      and <literal>linestyle</> = <literal>ascii</> or <literal>unicode</>
 
676
      (Stephen Frost)
 
677
     </para>
 
678
    </listitem>
 
679
 
 
680
    <listitem>
 
681
     <para>
 
682
      Improve performance of <application>pg_dump</> when the database
 
683
      contains many instances of multiple dependency paths between the same
 
684
      two objects (Tom Lane)
 
685
     </para>
 
686
    </listitem>
 
687
 
 
688
    <listitem>
 
689
     <para>
 
690
      Fix <application>pg_dumpall</> to restore its ability to dump from
 
691
      pre-8.1 servers (Gilles Darold)
 
692
     </para>
 
693
    </listitem>
 
694
 
 
695
    <listitem>
 
696
     <para>
 
697
      Fix possible deadlock during parallel restore of a schema-only dump
 
698
      (Robert Haas, Tom Lane)
 
699
     </para>
 
700
    </listitem>
 
701
 
 
702
    <listitem>
 
703
     <para>
 
704
      Fix core dump in <literal>pg_dump --binary-upgrade</> on zero-column
 
705
      composite type (Rushabh Lathia)
 
706
     </para>
 
707
    </listitem>
 
708
 
 
709
    <listitem>
 
710
     <para>
 
711
      Prevent WAL files created by <literal>pg_basebackup -x/-X</> from
 
712
      being archived again when the standby is promoted (Andres Freund)
 
713
     </para>
 
714
    </listitem>
 
715
 
 
716
    <listitem>
 
717
     <para>
 
718
      Fix failure of <filename>contrib/auto_explain</> to print per-node
 
719
      timing information when doing <command>EXPLAIN ANALYZE</> (Tom Lane)
 
720
     </para>
 
721
    </listitem>
 
722
 
 
723
    <listitem>
 
724
     <para>
 
725
      Fix upgrade-from-unpackaged script for <filename>contrib/citext</>
 
726
      (Tom Lane)
 
727
     </para>
 
728
    </listitem>
 
729
 
 
730
    <listitem>
 
731
     <para>
 
732
      Fix block number checking
 
733
      in <filename>contrib/pageinspect</>'s <function>get_raw_page()</>
 
734
      (Tom Lane)
 
735
     </para>
 
736
 
 
737
     <para>
 
738
      The incorrect checking logic could prevent access to some pages in
 
739
      non-main relation forks.
 
740
     </para>
 
741
    </listitem>
 
742
 
 
743
    <listitem>
 
744
     <para>
 
745
      Fix <filename>contrib/pgcrypto</>'s <function>pgp_sym_decrypt()</>
 
746
      to not fail on messages whose length is 6 less than a power of 2
 
747
      (Marko Tiikkaja)
 
748
     </para>
 
749
    </listitem>
 
750
 
 
751
    <listitem>
 
752
     <para>
 
753
      Fix file descriptor leak in <filename>contrib/pg_test_fsync</>
 
754
      (Jeff Janes)
 
755
     </para>
 
756
 
 
757
     <para>
 
758
      This could cause failure to remove temporary files on Windows.
 
759
     </para>
 
760
    </listitem>
 
761
 
 
762
    <listitem>
 
763
     <para>
 
764
      Handle unexpected query results, especially NULLs, safely in
 
765
      <filename>contrib/tablefunc</>'s <function>connectby()</>
 
766
      (Michael Paquier)
 
767
     </para>
 
768
 
 
769
     <para>
 
770
      <function>connectby()</> previously crashed if it encountered a NULL
 
771
      key value.  It now prints that row but doesn't recurse further.
 
772
     </para>
 
773
    </listitem>
 
774
 
 
775
    <listitem>
 
776
     <para>
 
777
      Avoid a possible crash in <filename>contrib/xml2</>'s
 
778
      <function>xslt_process()</> (Mark Simonetti)
 
779
     </para>
 
780
 
 
781
     <para>
 
782
      <application>libxslt</> seems to have an undocumented dependency on
 
783
      the order in which resources are freed; reorder our calls to avoid a
 
784
      crash.
 
785
     </para>
 
786
    </listitem>
 
787
 
 
788
    <listitem>
 
789
     <para>
 
790
      Mark some <filename>contrib</> I/O functions with correct volatility
 
791
      properties (Tom Lane)
 
792
     </para>
 
793
 
 
794
     <para>
 
795
      The previous over-conservative marking was immaterial in normal use,
 
796
      but could cause optimization problems or rejection of valid index
 
797
      expression definitions.  Since the consequences are not large, we've
 
798
      just adjusted the function definitions in the extension modules'
 
799
      scripts, without changing version numbers.
 
800
     </para>
 
801
    </listitem>
 
802
 
 
803
    <listitem>
 
804
     <para>
 
805
      Numerous cleanups of warnings from Coverity static code analyzer
 
806
      (Andres Freund, Tatsuo Ishii, Marko Kreen, Tom Lane, Michael Paquier)
 
807
     </para>
 
808
 
 
809
     <para>
 
810
      These changes are mostly cosmetic but in some cases fix corner-case
 
811
      bugs, for example a crash rather than a proper error report after an
 
812
      out-of-memory failure.  None are believed to represent security
 
813
      issues.
 
814
     </para>
 
815
    </listitem>
 
816
 
 
817
    <listitem>
 
818
     <para>
 
819
      Detect incompatible OpenLDAP versions during build (Noah Misch)
 
820
     </para>
 
821
 
 
822
     <para>
 
823
      With OpenLDAP versions 2.4.24 through 2.4.31,
 
824
      inclusive, <productname>PostgreSQL</> backends can crash at exit.
 
825
      Raise a warning during <application>configure</> based on the
 
826
      compile-time OpenLDAP version number, and test the crashing scenario
 
827
      in the <filename>contrib/dblink</> regression test.
 
828
     </para>
 
829
    </listitem>
 
830
 
 
831
    <listitem>
 
832
     <para>
 
833
      In non-MSVC Windows builds, ensure <filename>libpq.dll</> is installed
 
834
      with execute permissions (Noah Misch)
 
835
     </para>
 
836
    </listitem>
 
837
 
 
838
    <listitem>
 
839
     <para>
 
840
      Make <application>pg_regress</> remove any temporary installation it
 
841
      created upon successful exit (Tom Lane)
 
842
     </para>
 
843
 
 
844
     <para>
 
845
      This results in a very substantial reduction in disk space usage
 
846
      during <literal>make check-world</>, since that sequence involves
 
847
      creation of numerous temporary installations.
 
848
     </para>
 
849
    </listitem>
 
850
 
 
851
    <listitem>
 
852
     <para>
 
853
      Support time zone abbreviations that change UTC offset from time to
 
854
      time (Tom Lane)
 
855
     </para>
 
856
 
 
857
     <para>
 
858
      Previously, <productname>PostgreSQL</> assumed that the UTC offset
 
859
      associated with a time zone abbreviation (such as <literal>EST</>)
 
860
      never changes in the usage of any particular locale.  However this
 
861
      assumption fails in the real world, so introduce the ability for a
 
862
      zone abbreviation to represent a UTC offset that sometimes changes.
 
863
      Update the zone abbreviation definition files to make use of this
 
864
      feature in timezone locales that have changed the UTC offset of their
 
865
      abbreviations since 1970 (according to the IANA timezone database).
 
866
      In such timezones, <productname>PostgreSQL</> will now associate the
 
867
      correct UTC offset with the abbreviation depending on the given date.
 
868
     </para>
 
869
    </listitem>
 
870
 
 
871
    <listitem>
 
872
     <para>
 
873
      Update time zone abbreviations lists (Tom Lane)
 
874
     </para>
 
875
 
 
876
     <para>
 
877
      Add CST (China Standard Time) to our lists.
 
878
      Remove references to ADT as <quote>Arabia Daylight Time</>, an
 
879
      abbreviation that's been out of use since 2007; therefore, claiming
 
880
      there is a conflict with <quote>Atlantic Daylight Time</> doesn't seem
 
881
      especially helpful.
 
882
      Fix entirely incorrect GMT offsets for CKT (Cook Islands), FJT, and FJST
 
883
      (Fiji); we didn't even have them on the proper side of the date line.
 
884
     </para>
 
885
    </listitem>
 
886
 
 
887
    <listitem>
 
888
     <para>
 
889
      Update time zone data files to <application>tzdata</> release 2015a.
 
890
     </para>
 
891
 
 
892
     <para>
 
893
      The IANA timezone database has adopted abbreviations of the form
 
894
      <literal>A<replaceable>x</>ST</literal>/<literal>A<replaceable>x</>DT</literal>
 
895
      for all Australian time zones, reflecting what they believe to be
 
896
      current majority practice Down Under.  These names do not conflict
 
897
      with usage elsewhere (other than ACST for Acre Summer Time, which has
 
898
      been in disuse since 1994).  Accordingly, adopt these names into
 
899
      our <quote>Default</> timezone abbreviation set.
 
900
      The <quote>Australia</> abbreviation set now contains only CST, EAST,
 
901
      EST, SAST, SAT, and WST, all of which are thought to be mostly
 
902
      historical usage.  Note that SAST has also been changed to be South
 
903
      Africa Standard Time in the <quote>Default</> abbreviation set.
 
904
     </para>
 
905
 
 
906
     <para>
 
907
      Also, add zone abbreviations SRET (Asia/Srednekolymsk) and XJT
 
908
      (Asia/Urumqi), and use WSST/WSDT for western Samoa.  Also, there were
 
909
      DST law changes in Chile, Mexico, the Turks &amp; Caicos Islands
 
910
      (America/Grand_Turk), and Fiji.  There is a new zone
 
911
      Pacific/Bougainville for portions of Papua New Guinea.  Also, numerous
 
912
      corrections for historical (pre-1970) time zone data.
 
913
     </para>
 
914
    </listitem>
 
915
 
 
916
   </itemizedlist>
 
917
 
 
918
  </sect2>
 
919
 </sect1>
 
920
 
4
921
 <sect1 id="release-9-2-9">
5
922
  <title>Release 9.2.9</title>
6
923