1 <!-- doc/src/sgml/release-9.3.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
4 <sect1 id="release-9-3-4">
5 <title>Release 9.3.4</title>
8 <title>Release Date</title>
9 <simpara>2014-03-20</simpara>
13 This release contains a variety of fixes from 9.3.3.
14 For information about new features in the 9.3 major release, see
15 <xref linkend="release-9-3">.
19 <title>Migration to Version 9.3.4</title>
22 A dump/restore is not required for those running 9.3.X.
26 However, the error fixed in the first changelog entry below could have
27 resulted in corrupt data on standby servers. It may be prudent to
28 reinitialize standby servers from fresh base backups after installing
33 Also, the error fixed in the second changelog entry below could have
34 caused some bloat in statistics data. Users who have done
35 many <command>DROP DATABASE</> commands since upgrading to 9.3 may wish
36 to manually remove files in <filename>$PGDATA/pg_stat_tmp</>
37 (or <filename>$PGDATA/pg_stat</> if the server is not running) that
38 have old modification times and do not correspond to any database OID
39 present in <filename>$PGDATA/base</>. If you do this, note that the
40 file <filename>db_0.stat</> is a valid file even though it does not
41 correspond to any <filename>$PGDATA/base</> subdirectory.
45 Also, if you are upgrading from a version earlier than 9.3.3,
46 see <xref linkend="release-9-3-3">.
52 <title>Changes</title>
57 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
58 Branch: master [6bfa88acd] 2014-02-27 11:13:39 -0300
59 Branch: REL9_3_STABLE [9a57858f1] 2014-02-27 11:23:24 -0300
64 Fix WAL replay of locking an already-updated tuple (Andres Freund,
65 Álvaro Herrera)
69 This error allowed multiple versions of the same row to become
70 visible to queries, resulting in apparent duplicates. Since the
71 error is in WAL replay, it would only manifest during crash recovery
72 or on standby servers.
77 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
78 Branch: master [2b4f2ab33] 2014-03-05 13:03:29 -0300
79 Branch: REL9_3_STABLE [13ea43ab8] 2014-03-05 13:03:29 -0300
84 Remove the correct per-database statistics file during <command>DROP
85 DATABASE</> (Tomas Vondra)
89 This fix prevents a permanent leak of statistics file space.
94 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
95 Branch: master [fecfc2b91] 2014-03-12 10:04:57 +0200
96 Branch: REL9_3_STABLE [4738cc356] 2014-03-12 10:05:46 +0200
97 Branch: REL9_2_STABLE [91f932cf4] 2014-03-12 10:07:22 +0200
98 Branch: REL9_1_STABLE [63e59c259] 2014-03-12 10:09:22 +0200
99 Branch: REL9_0_STABLE [9954e1f03] 2014-03-12 10:09:43 +0200
100 Branch: REL8_4_STABLE [e2bccdfcc] 2014-03-12 10:10:04 +0200
105 Restore GIN metapages unconditionally to avoid torn-page risk
110 Although this oversight could theoretically result in a corrupted
111 index, it is unlikely to have caused any problems in practice, since
112 the active part of a GIN metapage is smaller than a standard 512-byte
118 Author: Tom Lane <tgl@sss.pgh.pa.us>
119 Branch: master [7bae0284e] 2014-03-13 12:02:54 -0400
120 Branch: REL9_3_STABLE [0d11fed8e] 2014-03-13 12:02:56 -0400
121 Branch: REL9_2_STABLE [bbe9621a9] 2014-03-13 12:03:00 -0400
122 Branch: REL9_1_STABLE [7bfdf10f5] 2014-03-13 12:03:03 -0400
123 Branch: REL9_0_STABLE [7aea1050e] 2014-03-13 12:03:07 -0400
128 Avoid race condition in checking transaction commit status during
129 receipt of a <command>NOTIFY</> message (Marko Tiikkaja)
133 This prevents a scenario wherein a sufficiently fast client might
134 respond to a notification before database updates made by the
135 notifier have become visible to the recipient.
140 Author: Tom Lane <tgl@sss.pgh.pa.us>
141 Branch: master [bf4052faa] 2014-03-06 11:37:02 -0500
142 Branch: REL9_3_STABLE [3973034e6] 2014-03-06 11:37:04 -0500
147 Allow materialized views to be referenced in <command>UPDATE</>
148 and <command>DELETE</> commands (Michael Paquier)
152 Previously such queries failed with a complaint about not being able
153 to lock rows in the materialized view.
158 Author: Tom Lane <tgl@sss.pgh.pa.us>
159 Branch: master [9662143f0] 2014-03-01 15:20:56 -0500
160 Branch: REL9_3_STABLE [f5f21315d] 2014-03-01 15:21:00 -0500
161 Branch: REL9_2_STABLE [03e6423fc] 2014-03-01 15:21:04 -0500
162 Branch: REL9_1_STABLE [a9eb4924a] 2014-03-01 15:21:07 -0500
163 Branch: REL9_0_STABLE [43af0e8c6] 2014-03-01 15:21:11 -0500
164 Branch: REL8_4_STABLE [b6e143458] 2014-03-01 15:21:13 -0500
169 Allow regular-expression operators to be terminated early by query
170 cancel requests (Tom Lane)
174 This prevents scenarios wherein a pathological regular expression
175 could lock up a server process uninterruptably for a long time.
180 Author: Tom Lane <tgl@sss.pgh.pa.us>
181 Branch: master [a222f7fda] 2014-02-18 12:44:20 -0500
182 Branch: REL9_3_STABLE [0aaa42241] 2014-02-18 12:44:24 -0500
183 Branch: REL9_2_STABLE [d7cd6a9d5] 2014-02-18 12:44:27 -0500
184 Branch: REL9_1_STABLE [e6f7fe983] 2014-02-18 12:44:30 -0500
185 Branch: REL9_0_STABLE [19d66ab05] 2014-02-18 12:44:33 -0500
186 Branch: REL8_4_STABLE [dd378dd1e] 2014-02-18 12:44:36 -0500
191 Remove incorrect code that tried to allow <literal>OVERLAPS</> with
192 single-element row arguments (Joshua Yanovski)
196 This code never worked correctly, and since the case is neither
197 specified by the SQL standard nor documented, it seemed better to
198 remove it than fix it.
203 Author: Tom Lane <tgl@sss.pgh.pa.us>
204 Branch: master [7c3187494] 2014-03-06 19:31:05 -0500
205 Branch: REL9_3_STABLE [f557826f8] 2014-03-06 19:31:09 -0500
206 Branch: REL9_2_STABLE [5ec41e345] 2014-03-06 19:31:12 -0500
207 Branch: REL9_1_STABLE [f3e3f6c5b] 2014-03-06 19:31:16 -0500
208 Branch: REL9_0_STABLE [bed1259e5] 2014-03-06 19:31:19 -0500
209 Branch: REL8_4_STABLE [f043bddfe] 2014-03-06 19:31:22 -0500
214 Avoid getting more than <literal>AccessShareLock</> when de-parsing a
215 rule or view (Dean Rasheed)
219 This oversight resulted in <application>pg_dump</> unexpectedly
220 acquiring <literal>RowExclusiveLock</> locks on tables mentioned as
221 the targets of <literal>INSERT</>/<literal>UPDATE</>/<literal>DELETE</>
222 commands in rules. While usually harmless, that could interfere with
223 concurrent transactions that tried to acquire, for example,
224 <literal>ShareLock</> on those tables.
229 Author: Tom Lane <tgl@sss.pgh.pa.us>
230 Branch: master [fccebe421] 2014-02-25 16:04:06 -0500
231 Branch: REL9_3_STABLE [4162a55c7] 2014-02-25 16:04:09 -0500
232 Branch: REL9_2_STABLE [00283cae1] 2014-02-25 16:04:12 -0500
233 Branch: REL9_1_STABLE [3e2db4c80] 2014-02-25 16:04:16 -0500
234 Branch: REL9_0_STABLE [1e0fb6a2c] 2014-02-25 16:04:20 -0500
239 Improve performance of index endpoint probes during planning (Tom Lane)
243 This change fixes a significant performance problem that occurred
244 when there were many not-yet-committed rows at the end of the index,
245 which is a common situation for indexes on sequentially-assigned
246 values such as timestamps or sequence-generated identifiers.
251 Author: Tom Lane <tgl@sss.pgh.pa.us>
252 Branch: master [77585bce0] 2014-02-21 17:10:46 -0500
253 Branch: REL9_3_STABLE [e8655a77f] 2014-02-21 17:10:49 -0500
258 Use non-default selectivity estimates for
259 <literal><replaceable>value</> IN (<replaceable>list</>)</literal> and
260 <literal><replaceable>value</> <replaceable>operator</> ANY
261 (<replaceable>array</>)</literal>
262 expressions when the righthand side is a stable expression (Tom Lane)
267 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
268 Branch: master [94ae6ba74] 2014-03-06 21:38:51 +0200
269 Branch: REL9_3_STABLE [dcd1131c8] 2014-03-06 21:40:50 +0200
274 Fix <application>walsender</> ping logic to avoid inappropriate
275 disconnects under continuous load (Andres Freund, Heikki Linnakangas)
279 <application>walsender</> failed to send ping messages to the client
280 if it was constantly busy sending WAL data; but it expected to see
281 ping responses despite that, and would therefore disconnect
282 once <xref linkend="guc-wal-sender-timeout"> elapsed.
287 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
288 Branch: master [956685f82] 2014-03-05 14:48:14 +0200
289 Branch: REL9_3_STABLE [a5363a696] 2014-03-05 14:46:56 +0200
290 Branch: REL9_2_STABLE [e7ec05562] 2014-03-05 14:45:55 +0200
295 Check WAL level and hot standby parameters correctly when doing crash
296 recovery that will be followed by archive recovery (Heikki Linnakangas)
301 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
302 Branch: master [af246c37c] 2014-03-05 13:51:19 +0200
303 Branch: REL9_3_STABLE [2cd72ba42] 2014-03-05 13:52:21 +0200
304 Branch: REL9_2_STABLE [931dc26b0] 2014-03-05 13:57:32 +0200
305 Branch: REL9_1_STABLE [7552d3d1a] 2014-03-05 13:58:14 +0200
306 Branch: REL9_0_STABLE [4521cc850] 2014-03-05 13:58:22 +0200
311 Fix test to see if hot standby connections can be allowed immediately
312 after a crash (Heikki Linnakangas)
317 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
318 Branch: REL9_3_STABLE [5a7e75849] 2014-02-20 10:46:54 +0200
323 Add read-only <xref linkend="guc-data-checksums"> parameter to
324 display whether page checksums are enabled (Heikki Linnakangas)
328 Without this parameter, determining the state of checksum
329 processing was difficult.
334 Author: Tom Lane <tgl@sss.pgh.pa.us>
335 Branch: master [6c461cb92] 2014-03-13 20:59:42 -0400
336 Branch: REL9_3_STABLE [41bd2cf55] 2014-03-13 20:59:45 -0400
337 Branch: REL9_2_STABLE [7a289bb6d] 2014-03-13 20:59:48 -0400
338 Branch: REL9_1_STABLE [f16ca9755] 2014-03-13 20:59:51 -0400
339 Branch: REL9_0_STABLE [dad55e1e9] 2014-03-13 20:59:55 -0400
340 Branch: REL8_4_STABLE [172c53e92] 2014-03-13 20:59:57 -0400
345 Prevent interrupts while reporting non-<literal>ERROR</> messages
350 This guards against rare server-process freezeups due to recursive
351 entry to <function>syslog()</>, and perhaps other related problems.
356 Author: Tom Lane <tgl@sss.pgh.pa.us>
357 Branch: master [e85a5ffba] 2014-03-10 15:47:40 -0400
358 Branch: REL9_3_STABLE [f64f4c370] 2014-03-10 15:47:09 -0400
359 Branch: REL9_2_STABLE [b315b767f] 2014-03-10 15:47:13 -0400
364 Fix tracking of <application>psql</> script line numbers
365 during <literal>\copy</> from out-of-line data
366 (Kumar Rajeev Rastogi, Amit Khandekar)
370 <literal>\copy ... from</> incremented the script file line number
371 for each data line, even if the data was not coming from the script
372 file. This mistake resulted in wrong line numbers being reported for
373 any errors occurring later in the same script file.
378 Author: Tom Lane <tgl@sss.pgh.pa.us>
379 Branch: master [83204e100] 2014-03-07 16:36:40 -0500
380 Branch: REL9_3_STABLE [73f0483fd] 2014-03-07 16:36:50 -0500
385 Fix <application>contrib/postgres_fdw</> to handle multiple join
386 conditions properly (Tom Lane)
390 This oversight could result in sending <literal>WHERE</> clauses to
391 the remote server for execution even though the clauses are not known
392 to have the same semantics on the remote server (for example, clauses
393 that use non-built-in operators). The query might succeed anyway,
394 but it could also fail with errors from the remote server, or worse
395 give silently wrong answers.
400 Author: Magnus Hagander <magnus@hagander.net>
401 Branch: master [7f3e17b48] 2014-02-18 14:45:58 +0100
402 Branch: REL9_3_STABLE [b88ecb002] 2014-02-18 14:49:41 +0100
403 Branch: REL9_2_STABLE [062deb313] 2014-02-18 14:50:19 +0100
408 Prevent intermittent <quote>could not reserve shared memory region</>
409 failures on recent Windows versions (MauMau)
414 Author: Tom Lane <tgl@sss.pgh.pa.us>
415 Branch: master [aba7f5677] 2014-03-15 13:36:07 -0400
416 Branch: REL9_3_STABLE [b5de16997] 2014-03-15 13:36:24 -0400
417 Branch: REL9_2_STABLE [f2063b379] 2014-03-15 13:36:32 -0400
418 Branch: REL9_1_STABLE [2df1bf21c] 2014-03-15 13:36:41 -0400
419 Branch: REL9_0_STABLE [0033f5324] 2014-03-15 13:36:49 -0400
420 Branch: REL8_4_STABLE [6e6c2c2e1] 2014-03-15 13:36:57 -0400
425 Update time zone data files to <application>tzdata</> release 2014a
426 for DST law changes in Fiji and Turkey, plus historical changes in
439 <sect1 id="release-9-3-3">
440 <title>Release 9.3.3</title>
443 <title>Release Date</title>
444 <simpara>2014-02-20</simpara>
448 This release contains a variety of fixes from 9.3.2.
449 For information about new features in the 9.3 major release, see
450 <xref linkend="release-9-3">.
454 <title>Migration to Version 9.3.3</title>
457 A dump/restore is not required for those running 9.3.X.
461 However, several of the issues corrected in this release could have
462 resulted in corruption of foreign-key constraints; that is, there
463 might now be referencing rows for which there is no matching row in
464 the referenced table. It may be worthwhile to recheck such
465 constraints after installing this update. The simplest way to do that
466 is to drop and recreate each suspect constraint; however, that will
467 require taking an exclusive lock on both tables, so it is unlikely to
468 be acceptable in production databases. Alternatively, you can do a
469 manual join query between the two tables to look for unmatched rows.
473 Note also the requirement for replication standby servers to be
474 upgraded before their master server is upgraded.
478 Also, if you are upgrading from a version earlier than 9.3.2,
479 see <xref linkend="release-9-3-2">.
485 <title>Changes</title>
490 Author: Noah Misch <noah@leadboat.com>
491 Branch: master [fea164a72] 2014-02-17 09:33:31 -0500
492 Branch: REL9_3_STABLE [475a1fbc4] 2014-02-17 09:33:32 -0500
493 Branch: REL9_2_STABLE [15a8f97b9] 2014-02-17 09:33:33 -0500
494 Branch: REL9_1_STABLE [5d320a16c] 2014-02-17 09:33:33 -0500
495 Branch: REL9_0_STABLE [789063697] 2014-02-17 09:33:37 -0500
496 Branch: REL8_4_STABLE [ff35425c8] 2014-02-17 09:33:38 -0500
501 Shore up <literal>GRANT ... WITH ADMIN OPTION</> restrictions
506 Granting a role without <literal>ADMIN OPTION</> is supposed to
507 prevent the grantee from adding or removing members from the granted
508 role, but this restriction was easily bypassed by doing <literal>SET
509 ROLE</> first. The security impact is mostly that a role member can
510 revoke the access of others, contrary to the wishes of his grantor.
511 Unapproved role member additions are a lesser concern, since an
512 uncooperative role member could provide most of his rights to others
513 anyway by creating views or <literal>SECURITY DEFINER</> functions.
519 Author: Noah Misch <noah@leadboat.com>
520 Branch: master [537cbd35c] 2014-02-17 09:33:31 -0500
521 Branch: REL9_3_STABLE [fc4a04a3c] 2014-02-17 09:33:32 -0500
522 Branch: REL9_2_STABLE [1d701d28a] 2014-02-17 09:33:33 -0500
523 Branch: REL9_1_STABLE [23b5a85e6] 2014-02-17 09:33:36 -0500
524 Branch: REL9_0_STABLE [c0ac4c75f] 2014-02-17 09:33:37 -0500
525 Branch: REL8_4_STABLE [823b9dc25] 2014-02-17 09:33:38 -0500
530 Prevent privilege escalation via manual calls to PL validator
531 functions (Andres Freund)
535 The primary role of PL validator functions is to be called implicitly
536 during <command>CREATE FUNCTION</>, but they are also normal SQL
537 functions that a user can call explicitly. Calling a validator on
538 a function actually written in some other language was not checked
539 for and could be exploited for privilege-escalation purposes.
540 The fix involves adding a call to a privilege-checking function in
541 each validator function. Non-core procedural languages will also
542 need to make this change to their own validator functions, if any.
548 Author: Robert Haas <rhaas@postgresql.org>
549 Branch: master [5f173040e] 2014-02-17 09:33:31 -0500
550 Branch: REL9_3_STABLE [e1e0a4d79] 2014-02-17 09:33:32 -0500
551 Branch: REL9_2_STABLE [820ab11fb] 2014-02-17 09:33:33 -0500
552 Branch: REL9_1_STABLE [b5c574399] 2014-02-17 09:33:36 -0500
553 Branch: REL9_0_STABLE [43d4e965e] 2014-02-17 09:33:37 -0500
554 Branch: REL8_4_STABLE [e46476133] 2014-02-17 09:33:38 -0500
559 Avoid multiple name lookups during table and index DDL
560 (Robert Haas, Andres Freund)
564 If the name lookups come to different conclusions due to concurrent
565 activity, we might perform some parts of the DDL on a different table
566 than other parts. At least in the case of <command>CREATE INDEX</>,
567 this can be used to cause the permissions checks to be performed
568 against a different table than the index creation, allowing for a
569 privilege escalation attack.
575 Author: Noah Misch <noah@leadboat.com>
576 Branch: master [4318daecc] 2014-02-17 09:33:31 -0500
577 Branch: REL9_3_STABLE [e4a4fa223] 2014-02-17 09:33:32 -0500
578 Branch: REL9_2_STABLE [f416622be] 2014-02-17 09:33:33 -0500
579 Branch: REL9_1_STABLE [6a10e57b0] 2014-02-17 09:33:37 -0500
580 Branch: REL9_0_STABLE [b9c3bb1b3] 2014-02-17 09:33:38 -0500
581 Branch: REL8_4_STABLE [d0ed1a6c0] 2014-02-17 09:33:39 -0500
586 Prevent buffer overrun with long datetime strings (Noah Misch)
590 The <literal>MAXDATELEN</> constant was too small for the longest
591 possible value of type <type>interval</>, allowing a buffer overrun
592 in <function>interval_out()</>. Although the datetime input
593 functions were more careful about avoiding buffer overrun, the limit
594 was short enough to cause them to reject some valid inputs, such as
595 input containing a very long timezone name. The <application>ecpg</>
596 library contained these vulnerabilities along with some of its own.
602 Author: Noah Misch <noah@leadboat.com>
603 Branch: master [31400a673] 2014-02-17 09:33:31 -0500
604 Branch: REL9_3_STABLE [7a362a176] 2014-02-17 09:33:32 -0500
605 Branch: REL9_2_STABLE [12bbce15d] 2014-02-17 09:33:33 -0500
606 Branch: REL9_1_STABLE [0b7026d96] 2014-02-17 09:33:37 -0500
607 Branch: REL9_0_STABLE [2c3203e18] 2014-02-17 09:33:38 -0500
608 Branch: REL8_4_STABLE [98be8a6ea] 2014-02-17 09:33:39 -0500
613 Prevent buffer overrun due to integer overflow in size calculations
614 (Noah Misch, Heikki Linnakangas)
618 Several functions, mostly type input functions, calculated an
619 allocation size without checking for overflow. If overflow did
620 occur, a too-small buffer would be allocated and then written past.
626 Author: Tom Lane <tgl@sss.pgh.pa.us>
627 Branch: master [01824385a] 2014-02-17 11:20:21 -0500
628 Branch: REL9_3_STABLE [e3208fec3] 2014-02-17 11:20:24 -0500
629 Branch: REL9_2_STABLE [655b665f7] 2014-02-17 11:20:27 -0500
630 Branch: REL9_1_STABLE [4741e3160] 2014-02-17 11:20:31 -0500
631 Branch: REL9_0_STABLE [45bf2404a] 2014-02-17 11:20:35 -0500
632 Branch: REL8_4_STABLE [69d2bc14a] 2014-02-17 11:20:38 -0500
637 Prevent overruns of fixed-size buffers
638 (Peter Eisentraut, Jozef Mlich)
642 Use <function>strlcpy()</> and related functions to provide a clear
643 guarantee that fixed-size buffers are not overrun. Unlike the
644 preceding items, it is unclear whether these cases really represent
645 live issues, since in most cases there appear to be previous
646 constraints on the size of the input string. Nonetheless it seems
647 prudent to silence all Coverity warnings of this type.
653 Author: Tom Lane <tgl@sss.pgh.pa.us>
654 Branch: master [01824385a] 2014-02-17 11:20:21 -0500
655 Branch: REL9_3_STABLE [e3208fec3] 2014-02-17 11:20:24 -0500
656 Branch: REL9_2_STABLE [655b665f7] 2014-02-17 11:20:27 -0500
657 Branch: REL9_1_STABLE [4741e3160] 2014-02-17 11:20:31 -0500
658 Branch: REL9_0_STABLE [45bf2404a] 2014-02-17 11:20:35 -0500
659 Branch: REL8_4_STABLE [69d2bc14a] 2014-02-17 11:20:38 -0500
664 Avoid crashing if <function>crypt()</> returns NULL (Honza Horak,
669 There are relatively few scenarios in which <function>crypt()</>
670 could return NULL, but <filename>contrib/chkpass</> would crash
671 if it did. One practical case in which this could be an issue is
672 if <application>libc</> is configured to refuse to execute unapproved
673 hashing algorithms (e.g., <quote>FIPS mode</>).
679 Author: Tom Lane <tgl@sss.pgh.pa.us>
680 Branch: master [6ef325429] 2014-02-17 11:24:32 -0500
681 Branch: REL9_3_STABLE [1ec5988f3] 2014-02-17 11:24:38 -0500
682 Branch: REL9_2_STABLE [ff3d533e5] 2014-02-17 11:24:42 -0500
683 Branch: REL9_1_STABLE [800a3744b] 2014-02-17 11:24:45 -0500
684 Branch: REL9_0_STABLE [369c229d2] 2014-02-17 11:24:48 -0500
685 Branch: REL8_4_STABLE [f58663ab1] 2014-02-17 11:24:51 -0500
690 Document risks of <literal>make check</> in the regression testing
691 instructions (Noah Misch, Tom Lane)
695 Since the temporary server started by <literal>make check</>
696 uses <quote>trust</> authentication, another user on the same machine
697 could connect to it as database superuser, and then potentially
698 exploit the privileges of the operating-system user who started the
699 tests. A future release will probably incorporate changes in the
700 testing procedure to prevent this risk, but some public discussion is
701 needed first. So for the moment, just warn people against using
702 <literal>make check</> when there are untrusted users on the
709 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
710 Branch: master [3b97e6823] 2013-12-16 11:29:50 -0300
711 Branch: REL9_3_STABLE [8e9a16ab8] 2013-12-16 11:29:51 -0300
716 Rework tuple freezing protocol
717 (Álvaro Herrera, Andres Freund)
721 The logic for tuple freezing was unable to handle some cases involving
723 <link linkend="vacuum-for-multixact-wraparound"><firstterm>multixact</>
724 IDs</link>, with the practical effect that shared row-level locks
725 might be forgotten once old enough.
729 Fixing this required changing the WAL record format for tuple
730 freezing. While this is no issue for standalone servers, when using
731 replication it means that <emphasis>standby servers must be upgraded
732 to 9.3.3 or later before their masters are</>. An older standby will
733 be unable to interpret freeze records generated by a newer master, and
734 will fail with a PANIC message. (In such a case, upgrading the
735 standby should be sufficient to let it resume execution.)
740 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
741 Branch: master [801c2dc72] 2014-02-13 19:36:31 -0300
742 Branch: REL9_3_STABLE [fb47de2be] 2014-02-13 19:30:30 -0300
747 Create separate GUC parameters to control multixact freezing
748 (Álvaro Herrera)
752 9.3 requires multixact tuple labels to be frozen before
753 they grow too old, in the same fashion as plain transaction ID labels
754 have been frozen for some time. Previously, the transaction ID
755 freezing parameters were used for multixact IDs too; but since
756 the consumption rates of transaction IDs and multixact IDs can be
757 quite different, this did not work very well. Introduce new settings
758 <xref linkend="guc-vacuum-multixact-freeze-min-age">,
759 <xref linkend="guc-vacuum-multixact-freeze-table-age">, and
760 <xref linkend="guc-autovacuum-multixact-freeze-max-age">
761 to control when to freeze multixacts.
766 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
767 Branch: master [11ac4c73c] 2013-12-18 13:45:51 -0300
768 Branch: REL9_3_STABLE [db1014bc4] 2013-12-18 13:31:27 -0300
773 Account for remote row locks propagated by local updates
774 (Álvaro Herrera)
778 If a row was locked by transaction A, and transaction B updated it,
779 the new version of the row created by B would be locked by A, yet
780 visible only to B. If transaction B then again updated the row, A's
781 lock wouldn't get checked, thus possibly allowing B to complete when
782 it shouldn't. This case is new in 9.3 since prior versions did not
783 have any types of row locking that would permit another transaction
784 to update the row at all.
788 This oversight could allow referential integrity checks to give false
789 positives (for instance, allow deletes that should have been rejected).
790 Applications using the new commands <literal>SELECT FOR KEY SHARE</>
791 and <literal>SELECT FOR NO KEY UPDATE</> might also have suffered
792 locking failures of this kind.
797 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
798 Branch: master [07aeb1fec] 2013-12-05 12:21:55 -0300
799 Branch: REL9_3_STABLE [c6cd27e36] 2013-12-05 12:21:55 -0300
804 Prevent <quote>forgetting</> valid row locks when one of several
805 holders of a row lock aborts (Álvaro Herrera)
809 This was yet another mechanism by which a shared row lock could be
810 lost, thus possibly allowing updates that should have been prevented
811 by foreign-key constraints.
816 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
817 Branch: master [312bde3d4] 2013-12-05 17:47:51 -0300
818 Branch: REL9_3_STABLE [2dcc48c35] 2013-12-05 17:47:51 -0300
823 Fix incorrect logic during update chain locking
824 (Álvaro Herrera)
828 This mistake could result in spurious <quote>could not serialize access
829 due to concurrent update</> errors in <literal>REPEATABLE READ</>
830 and <literal>SERIALIZABLE</> transaction isolation modes.
835 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
836 Branch: master [a50d97625] 2014-01-02 18:17:07 -0300
837 Branch: REL9_3_STABLE [03db79459] 2014-01-02 18:17:07 -0300
842 Handle wraparound correctly during extension or truncation
843 of <filename>pg_multixact/members</>
844 (Andres Freund, Álvaro Herrera)
849 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
850 Branch: master [638cf09e7] 2014-01-02 18:17:29 -0300
851 Branch: REL9_3_STABLE [948a3dfbb] 2014-01-02 18:17:29 -0300
856 Fix handling of 5-digit filenames in <filename>pg_multixact/members</>
857 (Álvaro Herrera)
861 As of 9.3, these names can be more than 4 digits, but the directory
862 cleanup code ignored such files.
867 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
868 Branch: master [d881dd623] 2013-12-13 17:16:25 -0300
869 Branch: REL9_3_STABLE [0bc00363b] 2013-12-13 17:16:25 -0300
874 Improve performance of multixact cache code
875 (Álvaro Herrera)
880 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
881 Branch: master [13aa62443] 2013-12-19 16:53:49 -0300
882 Branch: REL9_3_STABLE [85d3b3c3a] 2013-12-19 16:39:59 -0300
887 Optimize updating a row that's already locked by the same transaction
888 (Andres Freund, Álvaro Herrera)
892 This fixes a performance regression from pre-9.3 versions when doing
893 <literal>SELECT FOR UPDATE</> followed by <literal>UPDATE/DELETE</>.
898 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
899 Branch: master [4d894b41c] 2014-02-14 15:15:09 +0200
900 Branch: REL9_3_STABLE [762bd379a] 2014-02-14 15:18:34 +0200
905 During archive recovery, prefer highest timeline number when WAL
906 segments with the same ID are present in both the archive
907 and <filename>pg_xlog/</> (Kyotaro Horiguchi)
911 Previously, not-yet-archived segments could get ignored during
912 recovery. This reverts an undesirable behavioral change in 9.3.0
913 back to the way things worked pre-9.3.
918 Author: Tom Lane <tgl@sss.pgh.pa.us>
919 Branch: master [6f2aead1f] 2014-02-12 14:52:16 -0500
920 Branch: REL9_3_STABLE [7190f7a34] 2014-02-12 14:52:20 -0500
921 Branch: REL9_2_STABLE [bc7ab301a] 2014-02-12 14:52:23 -0500
922 Branch: REL9_1_STABLE [a69cc9b2c] 2014-02-12 14:52:26 -0500
923 Branch: REL9_0_STABLE [7fedd79b7] 2014-02-12 14:52:29 -0500
924 Branch: REL8_4_STABLE [9620fede9] 2014-02-12 14:52:32 -0500
929 Fix possible mis-replay of WAL records when some segments of a
930 relation aren't full size (Greg Stark, Tom Lane)
934 The WAL update could be applied to the wrong page, potentially many
935 pages past where it should have been. Aside from corrupting data,
936 this error has been observed to result in significant <quote>bloat</>
937 of standby servers compared to their masters, due to updates being
938 applied far beyond where the end-of-file should have been. This
939 failure mode does not appear to be a significant risk during crash
940 recovery, only when initially synchronizing a standby created from a
941 base backup taken from a quickly-changing master.
946 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
947 Branch: master [d59ff6c11] 2014-01-08 15:03:09 +0200
948 Branch: REL9_3_STABLE [425bef6ee] 2014-01-08 14:32:22 +0200
949 Branch: REL9_2_STABLE [82c75f9dd] 2014-01-08 14:28:55 +0200
950 Branch: REL9_1_STABLE [e56430c62] 2014-01-08 14:33:58 +0200
951 Branch: REL9_0_STABLE [5301c8395] 2014-01-08 14:34:21 +0200
956 Fix bug in determining when recovery has reached consistency
957 (Tomonari Katsumata, Heikki Linnakangas)
961 In some cases WAL replay would mistakenly conclude that the database
962 was already consistent at the start of replay, thus possibly allowing
963 hot-standby queries before the database was really consistent. Other
964 symptoms such as <quote>PANIC: WAL contains references to invalid
965 pages</> were also possible.
970 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
971 Branch: master [a49633d8d] 2013-12-13 14:15:04 +0200
972 Branch: REL9_3_STABLE [615299cf6] 2013-12-13 14:23:02 +0200
977 Fix WAL logging of visibility map changes (Heikki Linnakangas)
982 Author: Tom Lane <tgl@sss.pgh.pa.us>
983 Branch: master [061b079f8] 2014-01-14 17:35:21 -0500
984 Branch: REL9_3_STABLE [ebde6c401] 2014-01-14 17:34:51 -0500
985 Branch: REL9_2_STABLE [ad2e041a3] 2014-01-14 17:34:54 -0500
986 Branch: REL9_1_STABLE [ab4bb5c47] 2014-01-14 17:34:57 -0500
987 Branch: REL9_0_STABLE [5d742b9ce] 2014-01-14 17:35:00 -0500
992 Fix improper locking of btree index pages while replaying
993 a <literal>VACUUM</> operation in hot-standby mode (Andres Freund,
994 Heikki Linnakangas, Tom Lane)
998 This error could result in <quote>PANIC: WAL contains references to
999 invalid pages</> failures.
1004 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
1005 Branch: master [22122c83f] 2013-12-03 23:16:01 +0200
1006 Branch: REL9_3_STABLE [8fd04cb32] 2013-12-03 22:13:16 +0200
1007 Branch: REL9_2_STABLE [06df57ac6] 2013-12-03 22:34:31 +0200
1008 Branch: REL9_1_STABLE [e6acb956a] 2013-12-03 22:34:43 +0200
1009 Branch: REL9_0_STABLE [760606dc5] 2013-12-03 23:01:31 +0200
1010 Branch: REL8_4_STABLE [67fc33d3a] 2013-12-03 22:53:26 +0200
1015 Ensure that insertions into non-leaf GIN index pages write a full-page
1016 WAL record when appropriate (Heikki Linnakangas)
1020 The previous coding risked index corruption in the event of a
1021 partial-page write during a system crash.
1026 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
1027 Branch: master [3739e5ab9] 2014-01-08 23:28:52 +0200
1028 Branch: REL9_3_STABLE [3aefff422] 2014-01-08 23:30:46 +0200
1029 Branch: REL9_2_STABLE [3bd8987ef] 2014-01-08 23:30:55 +0200
1030 Branch: REL9_1_STABLE [0402f2441] 2014-01-08 23:31:01 +0200
1035 When <literal>pause_at_recovery_target</>
1036 and <literal>recovery_target_inclusive</> are both set, ensure the
1037 target record is applied before pausing, not after (Heikki
1043 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
1044 Branch: master [a472ae1e4] 2014-01-16 23:15:41 +0200
1045 Branch: REL9_3_STABLE [e34acac62] 2014-01-16 23:14:57 +0200
1050 Ensure walreceiver sends hot-standby feedback messages on time even
1051 when there is a continuous stream of data (Andres Freund, Amit
1057 Author: Tom Lane <tgl@sss.pgh.pa.us>
1058 Branch: master [e8312b4f0] 2013-12-13 11:50:15 -0500
1059 Branch: REL9_3_STABLE [478af9b79] 2013-12-13 11:50:25 -0500
1064 Prevent timeout interrupts from taking control away from mainline
1065 code unless <varname>ImmediateInterruptOK</> is set
1066 (Andres Freund, Tom Lane)
1070 This is a serious issue for any application making use of statement
1071 timeouts, as it could cause all manner of strange failures after a
1072 timeout occurred. We have seen reports of <quote>stuck</> spinlocks,
1073 ERRORs being unexpectedly promoted to PANICs, unkillable backends,
1074 and other misbehaviors.
1079 Author: Robert Haas <rhaas@postgresql.org>
1080 Branch: master [d1981719a] 2014-01-31 21:31:08 -0500
1081 Branch: REL9_3_STABLE [5d807a74b] 2014-01-31 21:34:44 -0500
1082 Branch: REL9_2_STABLE [ebe334463] 2014-01-31 21:35:32 -0500
1083 Branch: REL9_1_STABLE [8e6bfc9eb] 2014-01-31 21:36:23 -0500
1084 Branch: REL9_0_STABLE [798243a81] 2014-01-31 21:40:20 -0500
1085 Branch: REL8_4_STABLE [458b20f2d] 2014-01-31 21:41:09 -0500
1090 Fix race conditions during server process exit (Robert Haas)
1094 Ensure that signal handlers don't attempt to use the
1095 process's <varname>MyProc</> pointer after it's no longer valid.
1100 Author: Tom Lane <tgl@sss.pgh.pa.us>
1101 Branch: master [214c7a4f0] 2014-02-01 16:21:23 -0500
1102 Branch: REL9_3_STABLE [6f1a40773] 2014-02-01 16:21:30 -0500
1103 Branch: REL9_2_STABLE [81b116d98] 2014-02-01 16:21:33 -0500
1104 Branch: REL9_1_STABLE [03f06ff38] 2014-02-01 16:21:38 -0500
1109 Fix race conditions in walsender shutdown logic and walreceiver
1110 SIGHUP signal handler (Tom Lane)
1115 Author: Tom Lane <tgl@sss.pgh.pa.us>
1116 Branch: master [571addd72] 2014-01-29 20:04:43 -0500
1117 Branch: REL9_3_STABLE [bf8ee6f15] 2014-01-29 20:04:01 -0500
1118 Branch: REL9_2_STABLE [3e71ce1e9] 2014-01-29 20:04:05 -0500
1119 Branch: REL9_1_STABLE [af259c691] 2014-01-29 20:04:08 -0500
1120 Branch: REL9_0_STABLE [d17a667e8] 2014-01-29 20:04:11 -0500
1121 Branch: REL8_4_STABLE [01b882fd8] 2014-01-29 20:04:14 -0500
1126 Fix unsafe references to <varname>errno</> within error reporting
1127 logic (Christian Kruse)
1131 This would typically lead to odd behaviors such as missing or
1132 inappropriate <literal>HINT</> fields.
1137 Author: Tom Lane <tgl@sss.pgh.pa.us>
1138 Branch: master [910bac595] 2014-01-11 16:36:07 -0500
1139 Branch: REL9_3_STABLE [5bfcc9ec5] 2014-01-11 16:35:30 -0500
1140 Branch: REL9_2_STABLE [2de905186] 2014-01-11 16:35:34 -0500
1141 Branch: REL9_1_STABLE [3f721588a] 2014-01-11 16:35:37 -0500
1142 Branch: REL9_0_STABLE [d9c4442b8] 2014-01-11 16:35:41 -0500
1143 Branch: REL8_4_STABLE [d0070ac81] 2014-01-11 16:35:44 -0500
1148 Fix possible crashes from using <function>ereport()</> too early
1149 during server startup (Tom Lane)
1153 The principal case we've seen in the field is a crash if the server
1154 is started in a directory it doesn't have permission to read.
1159 Author: Tom Lane <tgl@sss.pgh.pa.us>
1160 Branch: master [74242c23c] 2013-12-05 12:48:28 -0500
1161 Branch: REL9_3_STABLE [2a6e1a554] 2013-12-05 12:48:31 -0500
1162 Branch: REL9_2_STABLE [41042970b] 2013-12-05 12:48:35 -0500
1163 Branch: REL9_1_STABLE [ad910ccdc] 2013-12-05 12:48:37 -0500
1164 Branch: REL9_0_STABLE [36352ceb4] 2013-12-05 12:48:41 -0500
1165 Branch: REL8_4_STABLE [7635dae55] 2013-12-05 12:48:44 -0500
1170 Clear retry flags properly in OpenSSL socket write
1171 function (Alexander Kukushkin)
1175 This omission could result in a server lockup after unexpected loss
1176 of an SSL-encrypted connection.
1181 Author: Tom Lane <tgl@sss.pgh.pa.us>
1182 Branch: master [44c216330] 2014-02-13 14:24:42 -0500
1183 Branch: REL9_3_STABLE [ca1c17181] 2014-02-13 14:24:45 -0500
1184 Branch: REL9_2_STABLE [8439ee415] 2014-02-13 14:24:49 -0500
1185 Branch: REL9_1_STABLE [170590261] 2014-02-13 14:24:52 -0500
1186 Branch: REL9_0_STABLE [148052d25] 2014-02-13 14:24:55 -0500
1187 Branch: REL8_4_STABLE [a8a46d846] 2014-02-13 14:24:58 -0500
1192 Fix length checking for Unicode identifiers (<literal>U&"..."</>
1193 syntax) containing escapes (Tom Lane)
1197 A spurious truncation warning would be printed for such identifiers
1198 if the escaped form of the identifier was too long, but the
1199 identifier actually didn't need truncation after de-escaping.
1204 Author: Tom Lane <tgl@sss.pgh.pa.us>
1205 Branch: master [0c2338abb] 2014-02-03 19:47:57 -0500
1206 Branch: REL9_3_STABLE [4c70cb1d3] 2014-02-03 19:48:00 -0500
1211 Fix parsing of Unicode literals and identifiers just before the end
1212 of a command string or function body (Tom Lane)
1217 Author: Stephen Frost <sfrost@snowman.net>
1218 Branch: master [6c36f383d] 2014-01-21 22:49:22 -0500
1219 Branch: REL9_3_STABLE [d1e3070f0] 2014-01-21 22:56:30 -0500
1220 Branch: REL9_2_STABLE [c0e6169e1] 2014-01-21 22:56:34 -0500
1221 Branch: REL9_1_STABLE [cbd850bf6] 2014-01-21 23:00:58 -0500
1222 Branch: REL9_0_STABLE [f2eede9b5] 2014-01-21 23:01:40 -0500
1227 Allow keywords that are type names to be used in lists of roles
1232 A previous patch allowed such keywords to be used without quoting
1233 in places such as role identifiers; but it missed cases where a
1234 list of role identifiers was permitted, such as <literal>DROP ROLE</>.
1239 Author: Tom Lane <tgl@sss.pgh.pa.us>
1240 Branch: master [7ab321404] 2013-12-02 20:28:45 -0500
1241 Branch: REL9_3_STABLE [b44ae4893] 2013-12-02 20:28:49 -0500
1242 Branch: REL9_2_STABLE [6698782f1] 2013-12-02 20:28:53 -0500
1243 Branch: REL9_1_STABLE [f67b8aeab] 2013-12-02 20:28:56 -0500
1248 Fix parser crash for <literal>EXISTS(SELECT * FROM
1249 zero_column_table)</literal> (Tom Lane)
1254 Author: Tom Lane <tgl@sss.pgh.pa.us>
1255 Branch: master [9ec6199d1] 2013-12-10 16:10:17 -0500
1256 Branch: REL9_3_STABLE [9d2e07fec] 2013-12-10 16:10:20 -0500
1257 Branch: REL9_2_STABLE [f5d9fdcc7] 2013-12-10 16:10:24 -0500
1258 Branch: REL9_1_STABLE [48e5cfde8] 2013-12-10 16:10:28 -0500
1259 Branch: REL9_0_STABLE [41e9990cd] 2013-12-10 16:10:31 -0500
1260 Branch: REL8_4_STABLE [884c6384a] 2013-12-10 16:10:36 -0500
1265 Fix possible crash due to invalid plan for nested sub-selects, such
1266 as <literal>WHERE (... x IN (SELECT ...) ...) IN (SELECT ...)</>
1272 Author: Tom Lane <tgl@sss.pgh.pa.us>
1273 Branch: master [043f6ff05] 2014-01-30 14:51:16 -0500
1274 Branch: REL9_3_STABLE [a4aa854ca] 2014-01-30 14:51:19 -0500
1279 Fix mishandling of <literal>WHERE</> conditions pulled up from
1280 a <literal>LATERAL</> subquery (Tom Lane)
1284 The typical symptom of this bug was a <quote>JOIN qualification
1285 cannot refer to other relations</> error, though subtle logic
1286 errors in created plans seem possible as well.
1291 Author: Tom Lane <tgl@sss.pgh.pa.us>
1292 Branch: master [158b7fa6a] 2014-01-11 19:03:12 -0500
1293 Branch: REL9_3_STABLE [27ff4cfe7] 2014-01-11 19:03:15 -0500
1298 Disallow <literal>LATERAL</> references to the target table of
1299 an <literal>UPDATE/DELETE</> (Tom Lane)
1303 While this might be allowed in some future release, it was
1304 unintentional in 9.3, and didn't work quite right anyway.
1309 Author: Tom Lane <tgl@sss.pgh.pa.us>
1310 Branch: master [c03ad5602] 2013-12-14 17:33:53 -0500
1311 Branch: REL9_3_STABLE [324577f39] 2013-12-14 17:33:56 -0500
1312 Branch: REL9_2_STABLE [5d545b7ed] 2013-12-14 17:34:00 -0500
1317 Fix <literal>UPDATE/DELETE</> of an inherited target table
1318 that has <literal>UNION ALL</> subqueries (Tom Lane)
1322 Without this fix, <literal>UNION ALL</> subqueries aren't correctly
1323 inserted into the update plans for inheritance child tables after the
1324 first one, typically resulting in no update happening for those child
1330 Author: Tom Lane <tgl@sss.pgh.pa.us>
1331 Branch: master [4eeda92d8] 2013-12-23 22:18:48 -0500
1332 Branch: REL9_3_STABLE [663f8419b] 2013-12-23 22:18:23 -0500
1337 Fix <command>ANALYZE</> to not fail on a column that's a domain over
1338 a range type (Tom Lane)
1343 Author: Tom Lane <tgl@sss.pgh.pa.us>
1344 Branch: master [628652620] 2014-01-11 13:42:42 -0500
1345 Branch: REL9_3_STABLE [36785a21b] 2014-01-11 13:41:51 -0500
1346 Branch: REL9_2_STABLE [f0381680f] 2014-01-11 13:41:56 -0500
1347 Branch: REL9_1_STABLE [9387f4e1b] 2014-01-11 13:42:00 -0500
1348 Branch: REL9_0_STABLE [2d76d75d9] 2014-01-11 13:42:05 -0500
1349 Branch: REL8_4_STABLE [00b77771a] 2014-01-11 13:42:11 -0500
1354 Ensure that <command>ANALYZE</> creates statistics for a table column
1355 even when all the values in it are <quote>too wide</> (Tom Lane)
1359 <command>ANALYZE</> intentionally omits very wide values from its
1360 histogram and most-common-values calculations, but it neglected to do
1361 something sane in the case that all the sampled entries are too wide.
1366 Author: Stephen Frost <sfrost@snowman.net>
1367 Branch: master [6f25c62d7] 2014-01-18 18:41:52 -0500
1368 Branch: REL9_3_STABLE [86e58ae02] 2014-01-18 18:49:08 -0500
1369 Branch: REL9_2_STABLE [1fe06595a] 2014-01-18 18:49:41 -0500
1370 Branch: REL9_1_STABLE [d2636486b] 2014-01-18 18:50:09 -0500
1371 Branch: REL9_0_STABLE [e70c42821] 2014-01-18 18:50:29 -0500
1372 Branch: REL8_4_STABLE [0fb4e3ceb] 2014-01-18 18:50:47 -0500
1377 In <literal>ALTER TABLE ... SET TABLESPACE</>, allow the database's
1378 default tablespace to be used without a permissions check
1383 <literal>CREATE TABLE</> has always allowed such usage,
1384 but <literal>ALTER TABLE</> didn't get the memo.
1389 Author: Tom Lane <tgl@sss.pgh.pa.us>
1390 Branch: master [c01bc51f8] 2013-12-30 14:00:02 -0500
1391 Branch: REL9_3_STABLE [9a6e2b150] 2013-12-30 14:00:05 -0500
1396 Fix support for extensions containing event triggers (Tom Lane)
1401 Author: Tom Lane <tgl@sss.pgh.pa.us>
1402 Branch: master [080b7db72] 2014-01-08 20:18:58 -0500
1403 Branch: REL9_3_STABLE [47ac4473a] 2014-01-08 20:18:10 -0500
1404 Branch: REL9_2_STABLE [97a39f295] 2014-01-08 20:18:13 -0500
1405 Branch: REL9_1_STABLE [6c6c53d0b] 2014-01-08 20:18:17 -0500
1406 Branch: REL9_0_STABLE [6ca712fb9] 2014-01-08 20:18:20 -0500
1407 Branch: REL8_4_STABLE [57ac7d8a7] 2014-01-08 20:18:24 -0500
1412 Fix <quote>cannot accept a set</> error when some arms of
1413 a <literal>CASE</> return a set and others don't (Tom Lane)
1418 Author: Andrew Dunstan <andrew@dunslane.net>
1419 Branch: master [d3ee45152] 2014-02-03 10:40:12 -0500
1420 Branch: REL9_3_STABLE [cdfbb78f0] 2014-02-03 10:39:13 -0500
1425 Fix memory leakage in JSON functions (Craig Ringer)
1430 Author: Andrew Dunstan <andrew@dunslane.net>
1431 Branch: master [29dcf7ded] 2013-12-27 17:04:00 -0500
1432 Branch: REL9_3_STABLE [7dfd9f6f5] 2013-12-27 17:21:04 -0500
1433 Branch: REL9_2_STABLE [4825a9e95] 2013-12-27 17:21:27 -0500
1438 Properly distinguish numbers from non-numbers when generating JSON
1439 output (Andrew Dunstan)
1444 Author: Kevin Grittner <kgrittn@postgresql.org>
1445 Branch: master [a133bf703] 2013-12-27 15:26:24 -0600
1446 Branch: REL9_3_STABLE [28b60aa23] 2013-12-27 15:40:51 -0600
1447 Branch: REL9_2_STABLE [150a30e19] 2013-12-27 15:41:02 -0600
1448 Branch: REL9_1_STABLE [1f069d21d] 2013-12-27 15:41:18 -0600
1449 Branch: REL9_0_STABLE [918d74a07] 2013-12-27 15:41:32 -0600
1450 Branch: REL8_4_STABLE [b2d80147d] 2013-12-27 15:41:46 -0600
1455 Fix checks for all-zero client addresses in pgstat functions (Kevin
1461 Author: Tom Lane <tgl@sss.pgh.pa.us>
1462 Branch: master [082c0dfa1] 2014-02-01 18:27:34 -0500
1463 Branch: REL9_3_STABLE [9beffdcc3] 2014-02-01 18:27:40 -0500
1464 Branch: REL9_2_STABLE [8be095cea] 2014-02-01 18:27:44 -0500
1465 Branch: REL9_1_STABLE [399d23e19] 2014-02-01 18:27:48 -0500
1466 Branch: REL9_0_STABLE [3c7b4ef70] 2014-02-01 18:27:54 -0500
1467 Branch: REL8_4_STABLE [56f5d3424] 2014-02-01 18:27:12 -0500
1472 Fix possible misclassification of multibyte characters by the text
1473 search parser (Tom Lane)
1477 Non-ASCII characters could be misclassified when using C locale with
1478 a multibyte encoding. On Cygwin, non-C locales could fail as well.
1483 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
1484 Branch: master [6c2744f1d] 2014-02-10 09:57:59 +0200
1485 Branch: REL9_3_STABLE [928aec71c] 2014-02-10 09:59:49 +0200
1486 Branch: REL9_2_STABLE [f3807106b] 2014-02-10 10:00:04 +0200
1487 Branch: REL9_1_STABLE [5f778e644] 2014-02-10 10:00:23 +0200
1488 Branch: REL9_0_STABLE [fe8a6f53e] 2014-02-10 10:00:36 +0200
1489 Branch: REL8_4_STABLE [6141983fb] 2014-02-10 10:00:50 +0200
1494 Fix possible misbehavior in <function>plainto_tsquery()</>
1495 (Heikki Linnakangas)
1499 Use <function>memmove()</> not <function>memcpy()</> for copying
1500 overlapping memory regions. There have been no field reports of
1501 this actually causing trouble, but it's certainly risky.
1506 Author: Magnus Hagander <magnus@hagander.net>
1507 Branch: master [9544cc0d6] 2014-01-07 17:50:56 +0100
1508 Branch: REL9_3_STABLE [91c2755fc] 2014-01-07 17:51:02 +0100
1509 Branch: REL9_2_STABLE [61d4d14ee] 2014-01-07 17:53:00 +0100
1510 Branch: REL9_1_STABLE [026a91f86] 2014-01-07 18:00:36 +0100
1515 Fix placement of permissions checks in <function>pg_start_backup()</>
1516 and <function>pg_stop_backup()</> (Andres Freund, Magnus Hagander)
1520 The previous coding might attempt to do catalog access when it
1526 Author: Tatsuo Ishii <ishii@postgresql.org>
1527 Branch: master [1f0626ee4] 2013-12-15 11:09:05 +0900
1528 Branch: REL9_3_STABLE [8122e6f85] 2013-12-15 11:10:41 +0900
1529 Branch: REL9_2_STABLE [0c07ef1ad] 2013-12-15 11:10:49 +0900
1530 Branch: REL9_1_STABLE [035226c61] 2013-12-15 11:10:56 +0900
1531 Branch: REL9_0_STABLE [7016d970d] 2013-12-15 11:11:02 +0900
1532 Branch: REL8_4_STABLE [69f77d756] 2013-12-15 11:11:11 +0900
1537 Accept <literal>SHIFT_JIS</> as an encoding name for locale checking
1538 purposes (Tatsuo Ishii)
1543 Author: Tom Lane <tgl@sss.pgh.pa.us>
1544 Branch: master [0def2573c] 2014-02-03 14:47:17 -0500
1545 Branch: REL9_3_STABLE [641c08041] 2014-02-03 14:46:54 -0500
1546 Branch: REL9_2_STABLE [888b56570] 2014-02-03 14:46:57 -0500
1551 Fix <literal>*</>-qualification of named parameters in SQL-language
1552 functions (Tom Lane)
1556 Given a composite-type parameter
1557 named <literal>foo</>, <literal>$1.*</> worked fine,
1558 but <literal>foo.*</> not so much.
1563 Author: Fujii Masao <fujii@postgresql.org>
1564 Branch: master [77035fa8a] 2014-01-23 22:58:58 +0900
1565 Branch: REL9_3_STABLE [be5d49974] 2014-01-23 23:00:30 +0900
1566 Branch: REL9_2_STABLE [ea311bfdf] 2014-01-23 23:01:06 +0900
1567 Branch: REL9_1_STABLE [1b384aff1] 2014-01-23 23:01:34 +0900
1568 Branch: REL9_0_STABLE [996b21cbf] 2014-01-23 23:02:03 +0900
1569 Branch: REL8_4_STABLE [5525529db] 2014-01-23 23:02:30 +0900
1574 Fix misbehavior of <function>PQhost()</> on Windows (Fujii Masao)
1578 It should return <literal>localhost</> if no host has been specified.
1583 Author: Tom Lane <tgl@sss.pgh.pa.us>
1584 Branch: master [b8f00a46b] 2014-02-13 18:45:58 -0500
1585 Branch: REL9_3_STABLE [f208fb436] 2014-02-13 18:46:03 -0500
1586 Branch: REL9_2_STABLE [2573f08a1] 2014-02-13 18:45:20 -0500
1587 Branch: REL9_1_STABLE [7182bd239] 2014-02-13 18:45:23 -0500
1588 Branch: REL9_0_STABLE [218dd205b] 2014-02-13 18:45:27 -0500
1589 Branch: REL8_4_STABLE [7644a7bd8] 2014-02-13 18:45:32 -0500
1594 Improve error handling in <application>libpq</> and <application>psql</>
1595 for failures during <literal>COPY TO STDOUT/FROM STDIN</> (Tom Lane)
1599 In particular this fixes an infinite loop that could occur in 9.2 and
1600 up if the server connection was lost during <literal>COPY FROM
1601 STDIN</>. Variants of that scenario might be possible in older
1602 versions, or with other client applications.
1607 Author: Tom Lane <tgl@sss.pgh.pa.us>
1608 Branch: master [92459e7a7] 2014-01-04 16:05:16 -0500
1609 Branch: REL9_3_STABLE [341f0bc49] 2014-01-04 16:05:20 -0500
1610 Branch: REL9_2_STABLE [fa28f9cba] 2014-01-04 16:05:23 -0500
1615 Fix incorrect translation handling in
1616 some <application>psql</> <literal>\d</> commands
1617 (Peter Eisentraut, Tom Lane)
1625 Author: Magnus Hagander <magnus@hagander.net>
1626 Branch: master [63ab2befe] 2014-02-12 18:45:18 +0100
1627 Branch: REL9_3_STABLE [c90204c60] 2014-02-12 18:46:04 +0100
1628 Branch: REL9_2_STABLE [0ae288d2d] 2014-02-12 14:51:00 +0100
1633 Ensure <application>pg_basebackup</>'s background process is killed
1634 when exiting its foreground process (Magnus Hagander)
1639 Author: Magnus Hagander <magnus@hagander.net>
1640 Branch: master [01025d80a] 2014-02-09 12:05:14 +0100
1641 Branch: REL9_3_STABLE [680baa8d2] 2014-02-09 12:09:18 +0100
1642 Branch: REL9_2_STABLE [165aa1da5] 2014-02-09 12:09:39 +0100
1643 Branch: REL9_1_STABLE [c6e5c4dd1] 2014-02-09 12:09:55 +0100
1648 Fix possible incorrect printing of filenames
1649 in <application>pg_basebackup</>'s verbose mode (Magnus Hagander)
1654 Author: Magnus Hagander <magnus@hagander.net>
1655 Branch: master [b168c5ef2] 2014-01-07 17:11:32 +0100
1656 Branch: REL9_3_STABLE [0463b9419] 2014-01-07 17:11:51 +0100
1657 Branch: REL9_2_STABLE [2edf3e82c] 2014-01-07 17:22:36 +0100
1658 Branch: REL9_1_STABLE [773e4d5e4] 2014-01-07 17:18:02 +0100
1663 Avoid including tablespaces inside PGDATA twice in base backups
1664 (Dimitri Fontaine, Magnus Hagander)
1669 Author: Michael Meskes <meskes@postgresql.org>
1670 Branch: master [d685e2424] 2014-01-09 16:20:19 +0100
1671 Branch: REL9_3_STABLE [28fff0ef8] 2014-01-09 15:41:51 +0100
1672 Branch: REL9_2_STABLE [799728b0b] 2014-01-09 15:50:51 +0100
1673 Branch: REL9_1_STABLE [9f5b3a1a1] 2014-01-09 15:51:11 +0100
1674 Branch: REL9_0_STABLE [a29b6c342] 2014-01-09 15:51:23 +0100
1675 Branch: REL8_4_STABLE [d68a65b01] 2014-01-09 15:58:37 +0100
1680 Fix misaligned descriptors in <application>ecpg</> (MauMau)
1685 Author: Michael Meskes <meskes@postgresql.org>
1686 Branch: master [7c957ec83] 2014-01-01 12:39:31 +0100
1687 Branch: REL9_3_STABLE [8404037d8] 2014-01-01 12:40:28 +0100
1688 Branch: REL9_2_STABLE [119a59879] 2014-01-01 12:40:42 +0100
1689 Branch: REL9_1_STABLE [948498274] 2014-01-01 12:44:15 +0100
1690 Branch: REL9_0_STABLE [17bcdd01f] 2014-01-01 12:44:44 +0100
1691 Branch: REL8_4_STABLE [96de4939c] 2014-01-01 12:44:58 +0100
1696 In <application>ecpg</>, handle lack of a hostname in the connection
1697 parameters properly (Michael Meskes)
1702 Author: Joe Conway <mail@joeconway.com>
1703 Branch: master [d6ca510d9] 2013-12-07 17:00:26 -0800
1704 Branch: REL9_3_STABLE [0ec530625] 2013-12-07 17:00:10 -0800
1705 Branch: REL9_2_STABLE [7f4ef622f] 2013-12-07 16:59:35 -0800
1706 Branch: REL9_1_STABLE [70165f25b] 2013-12-07 16:59:16 -0800
1707 Branch: REL9_0_STABLE [9057adc23] 2013-12-07 16:58:41 -0800
1708 Branch: REL8_4_STABLE [6c8b16e30] 2013-12-07 16:56:34 -0800
1713 Fix performance regression in <filename>contrib/dblink</> connection
1714 startup (Joe Conway)
1718 Avoid an unnecessary round trip when client and server encodings match.
1723 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
1724 Branch: master [866a1f092] 2014-01-13 15:43:29 +0200
1725 Branch: REL9_3_STABLE [50c5770ec] 2014-01-13 15:43:59 +0200
1726 Branch: REL9_2_STABLE [f6d6b42f2] 2014-01-13 15:44:02 +0200
1727 Branch: REL9_1_STABLE [5143dfd57] 2014-01-13 15:44:04 +0200
1728 Branch: REL9_0_STABLE [6c3f040be] 2014-01-13 15:44:12 +0200
1729 Branch: REL8_4_STABLE [492b68541] 2014-01-13 15:44:14 +0200
1734 In <filename>contrib/isn</>, fix incorrect calculation of the check
1735 digit for ISMN values (Fabien Coelho)
1740 Author: Tatsuo Ishii <ishii@postgresql.org>
1741 Branch: master [841a65482] 2013-12-12 19:10:35 +0900
1742 Branch: REL9_3_STABLE [27902bc91] 2013-12-12 19:07:53 +0900
1747 Fix <filename>contrib/pgbench</>'s progress logging to avoid overflow
1748 when the scale factor is large (Tatsuo Ishii)
1753 Author: Tom Lane <tgl@sss.pgh.pa.us>
1754 Branch: master [69c7a9838] 2014-01-21 16:34:28 -0500
1755 Branch: REL9_3_STABLE [0950d67ee] 2014-01-21 16:34:31 -0500
1756 Branch: REL9_2_STABLE [27ab1eb7e] 2014-01-21 16:34:35 -0500
1761 Fix <filename>contrib/pg_stat_statement</>'s handling
1762 of <literal>CURRENT_DATE</> and related constructs (Kyotaro
1768 Author: Tom Lane <tgl@sss.pgh.pa.us>
1769 Branch: master [00d4f2af8] 2014-02-03 21:30:20 -0500
1770 Branch: REL9_3_STABLE [eb3d350db] 2014-02-03 21:30:28 -0500
1775 Improve lost-connection error handling
1776 in <filename>contrib/postgres_fdw</> (Tom Lane)
1781 Author: Peter Eisentraut <peter_e@gmx.net>
1782 Branch: master [ad6bf0291] 2014-01-17 23:08:22 -0500
1783 Branch: REL9_3_STABLE [586bea612] 2014-01-17 23:11:02 -0500
1784 Branch: REL9_2_STABLE [526e38751] 2014-01-17 23:12:50 -0500
1785 Branch: REL9_1_STABLE [6d969b000] 2014-01-17 23:14:21 -0500
1786 Branch: REL9_0_STABLE [2346c383a] 2014-01-17 23:15:00 -0500
1787 Branch: REL8_4_STABLE [15699d9bf] 2014-01-17 23:17:59 -0500
1792 Ensure client-code-only installation procedure works as documented
1798 Author: Andrew Dunstan <andrew@dunslane.net>
1799 Branch: master [d587298b8] 2014-02-01 15:11:13 -0500
1800 Branch: REL9_3_STABLE [1e9876c3b] 2014-02-01 15:16:06 -0500
1801 Branch: REL9_2_STABLE [6e96d4db8] 2014-02-01 15:16:18 -0500
1802 Branch: REL9_1_STABLE [dfb4a1a21] 2014-02-01 15:16:29 -0500
1803 Branch: REL9_0_STABLE [59d64e7f3] 2014-02-01 15:16:40 -0500
1804 Branch: REL8_4_STABLE [ae3c98b9b] 2014-02-01 15:16:52 -0500
1809 In Mingw and Cygwin builds, install the <application>libpq</> DLL
1810 in the <filename>bin</> directory (Andrew Dunstan)
1814 This duplicates what the MSVC build has long done. It should fix
1815 problems with programs like <application>psql</> failing to start
1816 because they can't find the DLL.
1821 Author: Andrew Dunstan <andrew@dunslane.net>
1822 Branch: master [7e1531a45] 2014-02-01 16:08:33 -0500
1823 Branch: REL9_3_STABLE [27942baf4] 2014-02-01 16:13:32 -0500
1824 Branch: REL9_2_STABLE [fad443753] 2014-02-01 16:13:46 -0500
1825 Branch: REL9_1_STABLE [e5c22c15d] 2014-02-01 16:14:01 -0500
1826 Branch: REL9_0_STABLE [1c0bf372f] 2014-02-01 16:14:15 -0500
1831 Avoid using the deprecated <literal>dllwrap</> tool in Cygwin builds
1837 Author: Andrew Dunstan <andrew@dunslane.net>
1838 Branch: master [cec8394b5] 2014-01-26 09:49:10 -0500
1839 Branch: REL9_3_STABLE [56c08df55] 2014-01-26 09:45:43 -0500
1844 Enable building with Visual Studio 2013 (Brar Piening)
1849 Author: Tom Lane <tgl@sss.pgh.pa.us>
1850 Branch: master [289541520] 2014-02-10 20:48:04 -0500
1851 Branch: REL9_3_STABLE [f1e522696] 2014-02-10 20:48:12 -0500
1852 Branch: REL9_2_STABLE [dd5605104] 2014-02-10 20:48:20 -0500
1853 Branch: REL9_1_STABLE [3bf5c16f1] 2014-02-10 20:48:23 -0500
1854 Branch: REL9_0_STABLE [e1e7642bd] 2014-02-10 20:48:27 -0500
1855 Branch: REL8_4_STABLE [432735cbf] 2014-02-10 20:48:30 -0500
1860 Don't generate plain-text <filename>HISTORY</>
1861 and <filename>src/test/regress/README</> files anymore (Tom Lane)
1865 These text files duplicated the main HTML and PDF documentation
1866 formats. The trouble involved in maintaining them greatly outweighs
1867 the likely audience for plain-text format. Distribution tarballs
1868 will still contain files by these names, but they'll just be stubs
1869 directing the reader to consult the main documentation.
1870 The plain-text <filename>INSTALL</> file will still be maintained, as
1871 there is arguably a use-case for that.
1876 Author: Tom Lane <tgl@sss.pgh.pa.us>
1877 Branch: master [e04641f4b] 2014-02-14 21:59:13 -0500
1878 Branch: REL9_3_STABLE [46cbcd50e] 2014-02-14 21:59:37 -0500
1879 Branch: REL9_2_STABLE [4f975b68b] 2014-02-14 21:59:42 -0500
1880 Branch: REL9_1_STABLE [3212ba534] 2014-02-14 21:59:46 -0500
1881 Branch: REL9_0_STABLE [cb84fddd9] 2014-02-14 21:59:50 -0500
1882 Branch: REL8_4_STABLE [c0c2d62ac] 2014-02-14 21:59:56 -0500
1887 Update time zone data files to <application>tzdata</> release 2013i
1888 for DST law changes in Jordan and historical changes in Cuba.
1892 In addition, the zones <literal>Asia/Riyadh87</>,
1893 <literal>Asia/Riyadh88</>, and <literal>Asia/Riyadh89</> have been
1894 removed, as they are no longer maintained by IANA, and never
1895 represented actual civil timekeeping practice.
1904 <sect1 id="release-9-3-2">
1905 <title>Release 9.3.2</title>
1908 <title>Release Date</title>
1909 <simpara>2013-12-05</simpara>
1913 This release contains a variety of fixes from 9.3.1.
1914 For information about new features in the 9.3 major release, see
1915 <xref linkend="release-9-3">.
1919 <title>Migration to Version 9.3.2</title>
1922 A dump/restore is not required for those running 9.3.X.
1926 However, this release corrects a number of potential data corruption
1927 issues. See the first three changelog entries below to find out whether
1928 your installation has been affected and what steps you can take if so.
1932 Also, if you are upgrading from a version earlier than 9.3.1,
1933 see <xref linkend="release-9-3-1">.
1939 <title>Changes</title>
1945 Fix <command>VACUUM</>'s tests to see whether it can
1946 update <structfield>relfrozenxid</> (Andres Freund)
1950 In some cases <command>VACUUM</> (either manual or autovacuum) could
1951 incorrectly advance a table's <structfield>relfrozenxid</> value,
1952 allowing tuples to escape freezing, causing those rows to become
1953 invisible once 2^31 transactions have elapsed. The probability of
1954 data loss is fairly low since multiple incorrect advancements would
1955 need to happen before actual loss occurs, but it's not zero. In 9.2.0
1956 and later, the probability of loss is higher, and it's also possible
1957 to get <quote>could not access status of transaction</> errors as a
1958 consequence of this bug. Users upgrading from releases 9.0.4 or 8.4.8
1959 or earlier are not affected, but all later versions contain the bug.
1963 The issue can be ameliorated by, after upgrading, vacuuming all tables
1964 in all databases while having <link
1965 linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
1966 set to zero. This will fix any latent corruption but will not be able
1967 to fix all pre-existing data errors. However, an installation can be
1968 presumed safe after performing this vacuuming if it has executed fewer
1969 than 2^31 update transactions in its lifetime (check this with
1970 <literal>SELECT txid_current() < 2^31</>).
1976 Fix multiple bugs in MultiXactId freezing (Andres Freund,
1977 Álvaro Herrera)
1981 These bugs could lead to <quote>could not access status of
1982 transaction</> errors, or to duplicate or vanishing rows.
1983 Users upgrading from releases prior to 9.3.0 are not affected.
1987 The issue can be ameliorated by, after upgrading, vacuuming all tables
1988 in all databases while having <link
1989 linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
1990 set to zero. This will fix latent corruption but will not be able to
1991 fix all pre-existing data errors.
1995 As a separate issue, these bugs can also cause standby servers to get
1996 out of sync with the primary, thus exhibiting data errors that are not
1997 in the primary. Therefore, it's recommended that 9.3.0 and 9.3.1
1998 standby servers be re-cloned from the primary (e.g., with a new base
1999 backup) after upgrading.
2005 Fix initialization of <filename>pg_clog</> and <filename>pg_subtrans</>
2006 during hot standby startup (Andres Freund, Heikki Linnakangas)
2010 This bug can cause data loss on standby servers at the moment they
2011 start to accept hot-standby queries, by marking committed transactions
2012 as uncommitted. The likelihood of such corruption is small unless, at
2013 the time of standby startup, the primary server has executed many
2014 updating transactions since its last checkpoint. Symptoms include
2015 missing rows, rows that should have been deleted being still visible,
2016 and obsolete versions of updated rows being still visible alongside
2017 their newer versions.
2021 This bug was introduced in versions 9.3.0, 9.2.5, 9.1.10, and 9.0.14.
2022 Standby servers that have only been running earlier releases are not
2023 at risk. It's recommended that standby servers that have ever run any
2024 of the buggy releases be re-cloned from the primary (e.g., with a new
2025 base backup) after upgrading.
2031 Fix multiple bugs in update chain traversal (Andres Freund,
2032 Álvaro Herrera)
2036 These bugs could result in incorrect behavior, such as locking or even
2037 updating the wrong row, in the presence of concurrent updates.
2038 Spurious <quote>unable to fetch updated version of tuple</> errors
2045 Fix dangling-pointer problem in fast-path locking (Tom Lane)
2049 This could lead to corruption of the lock data structures in shared
2050 memory, causing <quote>lock already held</> and other odd errors.
2056 Fix assorted race conditions in timeout management (Tom Lane)
2060 These errors could result in a server process becoming unresponsive
2061 because it had blocked SIGALRM and/or SIGINT.
2067 Truncate <filename>pg_multixact</> contents during WAL replay
2072 This avoids ever-increasing disk space consumption in standby servers.
2078 Ensure an anti-wraparound <command>VACUUM</> counts a page as scanned
2079 when it's only verified that no tuples need freezing (Sergey
2080 Burladyan, Jeff Janes)
2084 This bug could result in failing to
2085 advance <structfield>relfrozenxid</>, so that the table would still be
2086 thought to need another anti-wraparound vacuum. In the worst case the
2087 database might even shut down to prevent wraparound.
2093 Fix full-table-vacuum request mechanism for MultiXactIds (Andres Freund)
2097 This bug could result in large amounts of useless autovacuum activity.
2103 Fix race condition in GIN index posting tree page deletion (Heikki
2108 This could lead to transient wrong answers or query failures.
2114 Fix <quote>unexpected spgdoinsert() failure</> error during SP-GiST
2115 index creation (Teodor Sigaev)
2121 Fix assorted bugs in materialized views (Kevin Grittner, Andres Freund)
2127 Re-allow duplicate table aliases if they're within aliased JOINs
2132 Historically <productname>PostgreSQL</> has accepted queries like
2134 SELECT ... FROM tab1 x CROSS JOIN (tab2 x CROSS JOIN tab3 y) z
2136 although a strict reading of the SQL standard would forbid the
2137 duplicate usage of table alias <literal>x</>. A misguided change in
2138 9.3.0 caused it to reject some such cases that were formerly accepted.
2139 Restore the previous behavior.
2145 Avoid flattening a subquery whose <literal>SELECT</> list contains a
2146 volatile function wrapped inside a sub-<literal>SELECT</> (Tom Lane)
2150 This avoids unexpected results due to extra evaluations of the
2157 Fix planner's processing of non-simple-variable subquery outputs
2158 nested within outer joins (Tom Lane)
2162 This error could lead to incorrect plans for queries involving
2163 multiple levels of subqueries within <literal>JOIN</> syntax.
2169 Fix incorrect planning in cases where the same non-strict expression
2170 appears in multiple <literal>WHERE</> and outer <literal>JOIN</>
2171 equality clauses (Tom Lane)
2177 Fix planner crash with whole-row reference to a subquery (Tom Lane)
2183 Fix incorrect generation of optimized MIN()/MAX() plans for
2184 inheritance trees (Tom Lane)
2188 The planner could fail in cases where the MIN()/MAX() argument was an
2189 expression rather than a simple variable.
2195 Fix premature deletion of temporary files (Andres Freund)
2201 Prevent intra-transaction memory leak when printing range values
2206 This fix actually cures transient memory leaks in any datatype output
2207 function, but range types are the only ones known to have had a
2208 significant problem.
2214 Fix memory leaks when reloading configuration files (Heikki
2215 Linnakangas, Hari Babu)
2221 Prevent incorrect display of dropped columns in NOT NULL and CHECK
2222 constraint violation messages (Michael Paquier and Tom Lane)
2228 Allow default arguments and named-argument notation for window
2229 functions (Tom Lane)
2233 Previously, these cases were likely to crash.
2239 Suppress trailing whitespace on each line when pretty-printing rules
2240 and views (Tom Lane)
2244 9.3.0 generated such whitespace in many more cases than previous
2245 versions did. To reduce unexpected behavioral changes, suppress
2246 unnecessary whitespace in all cases.
2252 Fix possible read past end of memory in rule printing (Peter Eisentraut)
2258 Fix array slicing of <type>int2vector</> and <type>oidvector</> values
2263 Expressions of this kind are now implicitly promoted to
2264 regular <type>int2</> or <type>oid</> arrays.
2270 Return a valid JSON value when converting an empty <type>hstore</> value
2278 Fix incorrect behaviors when using a SQL-standard, simple GMT offset
2283 In some cases, the system would use the simple GMT offset value when
2284 it should have used the regular timezone setting that had prevailed
2285 before the simple offset was selected. This change also causes
2286 the <function>timeofday</> function to honor the simple GMT offset
2293 Prevent possible misbehavior when logging translations of Windows
2294 error codes (Tom Lane)
2300 Properly quote generated command lines in <application>pg_ctl</>
2301 (Naoya Anzai and Tom Lane)
2305 This fix applies only to Windows.
2311 Fix <application>pg_dumpall</> to work when a source database
2313 linkend="guc-default-transaction-read-only"><varname>default_transaction_read_only</></link>
2314 via <command>ALTER DATABASE SET</> (Kevin Grittner)
2318 Previously, the generated script would fail during restore.
2324 Fix <application>pg_isready</> to handle its <option>-d</> option
2325 properly (Fabrízio de Royes Mello and Fujii Masao)
2331 Fix parsing of WAL file names in <application>pg_receivexlog</>
2332 (Heikki Linnakangas)
2336 This error made <application>pg_receivexlog</> unable to restart
2337 streaming after stopping, once at least 4 GB of WAL had been written.
2343 Report out-of-disk-space failures properly
2344 in <application>pg_upgrade</> (Peter Eisentraut)
2350 Make <application>ecpg</> search for quoted cursor names
2351 case-sensitively (Zoltán Böszörményi)
2357 Fix <application>ecpg</>'s processing of lists of variables
2358 declared <type>varchar</> (Zoltán Böszörményi)
2364 Make <filename>contrib/lo</> defend against incorrect trigger definitions
2371 Update time zone data files to <application>tzdata</> release 2013h
2372 for DST law changes in Argentina, Brazil, Jordan, Libya,
2373 Liechtenstein, Morocco, and Palestine. Also, new timezone
2374 abbreviations WIB, WIT, WITA for Indonesia.
2383 <sect1 id="release-9-3-1">
2384 <title>Release 9.3.1</title>
2387 <title>Release Date</title>
2388 <simpara>2013-10-10</simpara>
2392 This release contains a variety of fixes from 9.3.0.
2393 For information about new features in the 9.3 major release, see
2394 <xref linkend="release-9-3">.
2398 <title>Migration to Version 9.3.1</title>
2401 A dump/restore is not required for those running 9.3.X.
2405 However, if you use the <literal>hstore</> extension, see the
2406 first changelog entry.
2412 <title>Changes</title>
2418 Ensure new-in-9.3 JSON functionality is added to the <literal>hstore</>
2419 extension during an update (Andrew Dunstan)
2423 Users who upgraded a pre-9.3 database containing <literal>hstore</>
2426 ALTER EXTENSION hstore UPDATE;
2428 after installing 9.3.1, to add two new JSON functions and a cast.
2429 (If <literal>hstore</> is already up to date, this command does
2436 Fix memory leak when creating B-tree indexes on range columns
2437 (Heikki Linnakangas)
2443 Fix memory leak caused by <function>lo_open()</function> failure
2444 (Heikki Linnakangas)
2450 Serializable snapshot fixes (Kevin Grittner, Heikki Linnakangas)
2456 Fix deadlock bug in libpq when using SSL (Stephen Frost)
2462 Fix timeline handling bugs in <application>pg_receivexlog</>
2463 (Heikki Linnakangas, Andrew Gierth)
2469 Prevent <command>CREATE FUNCTION</> from checking <command>SET</>
2470 variables unless function body checking is enabled (Tom Lane)
2476 Remove rare inaccurate warning during vacuum of index-less tables
2477 (Heikki Linnakangas)
2486 <sect1 id="release-9-3">
2487 <title>Release 9.3</title>
2490 <title>Release Date</title>
2491 <simpara>2013-09-09</simpara>
2495 <title>Overview</title>
2498 Major enhancements in <productname>PostgreSQL</> 9.3 include:
2501 <!-- This list duplicates items below, but without authors or details-->
2507 Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
2514 Make simple views <link
2515 linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
2521 Add many features for the <type>JSON</> data type,
2522 including <link linkend="functions-json">operators and functions</link>
2523 to extract elements from <type>JSON</> values
2529 Implement <acronym>SQL</>-standard <link
2530 linkend="queries-lateral"><literal>LATERAL</></link> option for
2531 <literal>FROM</>-clause subqueries and function calls
2537 Allow <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
2538 wrappers</link> to support writes (inserts/updates/deletes) on foreign
2545 Add a <link linkend="postgres-fdw"><productname>Postgres</> foreign
2546 data wrapper</link> to allow access to
2547 other <productname>Postgres</> servers
2553 Add support for <link linkend="event-triggers">event triggers</link>
2559 Add optional ability to <link
2560 linkend="app-initdb-data-checksums">checksum</link> data pages and
2567 Prevent non-key-field row updates from blocking foreign key checks
2573 Greatly reduce System V <link linkend="sysvipc">shared
2574 memory</link> requirements
2581 The above items are explained in more detail in the sections below.
2588 <title>Migration to Version 9.3</title>
2591 A dump/restore using <link
2592 linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, or use
2593 of <link linkend="pgupgrade"><application>pg_upgrade</></link>, is
2594 required for those wishing to migrate data from any previous release.
2598 Version 9.3 contains a number of changes that may affect compatibility
2599 with previous releases. Observe the following incompatibilities:
2603 <title>Server Settings</title>
2609 Rename <varname>replication_timeout</> to <link
2610 linkend="guc-wal-sender-timeout"><varname>wal_sender_timeout</></link>
2615 This setting controls the <link
2616 linkend="wal"><acronym>WAL</></link> sender timeout.
2622 Require superuser privileges to set <link
2623 linkend="guc-commit-delay"><varname>commit_delay</></link>
2624 because it can now potentially delay other sessions (Simon Riggs)
2630 Allow in-memory sorts to use their full memory allocation (Jeff Janes)
2634 Users who have set <link
2635 linkend="guc-work-mem"><varname>work_mem</></link> based on the
2636 previous behavior may need to revisit that setting.
2645 <title>Other</title>
2651 Throw an error if a tuple to be updated or deleted has already been
2652 updated or deleted by a <literal>BEFORE</> trigger (Kevin Grittner)
2656 Formerly, the originally-intended update was silently skipped,
2657 resulting in logical inconsistency since the trigger might have
2658 propagated data to other places based on the intended update.
2659 Now an error is thrown to prevent the inconsistent results from being
2660 committed. If this change affects your application, the best solution
2661 is usually to move the data-propagation actions to
2662 an <literal>AFTER</> trigger.
2666 This error will also be thrown if a query invokes a volatile function
2667 that modifies rows that are later modified by the query itself.
2668 Such cases likewise previously resulted in silently skipping updates.
2674 Change multicolumn <link linkend="SQL-CREATETABLE"><literal>ON UPDATE
2675 SET NULL/SET DEFAULT</></link> foreign key actions to affect
2676 all columns of the constraint, not just those changed in the
2677 <command>UPDATE</> (Tom Lane)
2681 Previously, we would set only those referencing columns that
2682 correspond to referenced columns that were changed by
2683 the <command>UPDATE</>. This was what was required by SQL-92,
2684 but more recent editions of the SQL standard specify the new behavior.
2690 Force cached plans to be replanned if the <link
2691 linkend="guc-search-path"><varname>search_path</></link> changes
2696 Previously, cached plans already generated in the current session were
2697 not redone if the query was re-executed with a
2698 new <varname>search_path</> setting, resulting in surprising behavior.
2705 linkend="functions-formatting-table"><function>to_number()</></link>
2706 to properly handle a period used as a thousands separator (Tom Lane)
2710 Previously, a period was considered to be a decimal point even when
2711 the locale says it isn't and the <literal>D</> format code is used to
2712 specify use of the locale-specific decimal point. This resulted in
2713 wrong answers if <literal>FM</> format was also used.
2719 Fix <literal>STRICT</> non-set-returning functions that have
2720 set-returning functions in their arguments to properly return null
2725 A null value passed to the strict function should result in a null
2726 output, but instead, that output row was suppressed entirely.
2732 Store <link linkend="wal"><acronym>WAL</></link> in a continuous
2733 stream, rather than skipping the last 16MB segment every 4GB
2734 (Heikki Linnakangas)
2738 Previously, <acronym>WAL</> files with names ending in <literal>FF</>
2739 were not used because of this skipping. If you have <acronym>WAL</>
2740 backup or restore scripts that took this behavior into account, they
2741 will need to be adjusted.
2748 linkend="catalog-pg-constraint"><structname>pg_constraint.confmatchtype</></link>,
2749 store the default foreign key match type (non-<literal>FULL</>,
2750 non-<literal>PARTIAL</>) as <literal>s</> for <quote>simple</>
2755 Previously this case was represented by <literal>u</>
2756 for <quote>unspecified</>.
2767 <title>Changes</title>
2770 Below you will find a detailed account of the changes between
2771 <productname>PostgreSQL</productname> 9.3 and the previous major
2776 <title>Server</title>
2779 <title>Locking</title>
2785 Prevent non-key-field row updates from blocking foreign key checks
2786 (Álvaro Herrera, Noah Misch, Andres Freund, Alexander
2787 Shulgin, Marti Raudsepp, Alexander Shulgin)
2791 This change improves concurrency and reduces the probability of
2792 deadlocks when updating tables involved in a foreign-key constraint.
2793 <command>UPDATE</>s that do not change any columns referenced in a
2794 foreign key now take the new <literal>NO KEY UPDATE</> lock mode on
2795 the row, while foreign key checks use the new <literal>KEY SHARE</>
2796 lock mode, which does not conflict with <literal>NO KEY UPDATE</>.
2797 So there is no blocking unless a foreign-key column is changed.
2803 Add configuration variable <link
2804 linkend="guc-lock-timeout"><varname>lock_timeout</></link> to
2805 allow limiting how long a session will wait to acquire any one lock
2806 (Zoltán Böszörményi)
2815 <title>Indexes</title>
2821 Add <link linkend="rangetypes-indexing"><acronym>SP-GiST</></link>
2822 support for range data types (Alexander Korotkov)
2828 Allow <link linkend="GiST"><acronym>GiST</></link> indexes to be
2829 unlogged (Jeevan Chalke)
2835 Improve performance of <acronym>GiST</> index insertion by randomizing
2836 the choice of which page to descend to when there are multiple equally
2837 good alternatives (Heikki Linnakangas)
2843 Improve concurrency of hash index operations (Robert Haas)
2852 <title>Optimizer</title>
2858 Collect and use histograms of upper and lower bounds, as well as range
2859 lengths, for <link linkend="rangetypes">range types</link>
2860 (Alexander Korotkov)
2866 Improve optimizer's cost estimation for index access (Tom Lane)
2872 Improve optimizer's hash table size estimate for
2873 doing <literal>DISTINCT</> via hash aggregation (Tom Lane)
2879 Suppress no-op Result and Limit plan nodes
2880 (Kyotaro Horiguchi, Amit Kapila, Tom Lane)
2886 Reduce optimizer overhead by not keeping plans on the basis of cheap
2887 startup cost when the optimizer only cares about total cost overall
2897 <title>General Performance</title>
2903 Add <link linkend="SQL-COPY"><command>COPY FREEZE</></link>
2904 option to avoid the overhead of marking tuples as frozen later
2905 (Simon Riggs, Jeff Davis)
2911 Improve performance of <link
2912 linkend="datatype-numeric"><type>NUMERIC</></link> calculations
2919 Improve synchronization of sessions waiting for <link
2920 linkend="guc-commit-delay"><varname>commit_delay</></link>
2925 This greatly improves the usefulness of <varname>commit_delay</>.
2931 Improve performance of the <link
2932 linkend="SQL-CREATETABLE"><command>CREATE TEMPORARY TABLE ... ON
2933 COMMIT DELETE ROWS</></link> option by not truncating such temporary
2934 tables in transactions that haven't touched any temporary tables
2935 (Heikki Linnakangas)
2941 Make vacuum recheck visibility after it has removed expired tuples
2946 This increases the chance of a page being marked as all-visible.
2952 Add per-resource-owner lock caches (Jeff Janes)
2956 This speeds up lock bookkeeping at statement completion in
2957 multi-statement transactions that hold many locks; it is particularly
2958 useful for <application>pg_dump</>.
2964 Avoid scanning the entire relation cache at commit of a transaction
2965 that creates a new relation (Jeff Janes)
2969 This speeds up sessions that create many tables in successive
2970 small transactions, such as a <application>pg_restore</> run.
2976 Improve performance of transactions that drop many relations
2986 <title>Monitoring</title>
2992 Add optional ability to <link
2993 linkend="app-initdb-data-checksums">checksum</link> data pages and
2994 report corruption (Simon Riggs, Jeff Davis, Greg Smith, Ants Aasma)
2998 The checksum option can be set during <link
2999 linkend="APP-INITDB">initdb</link>.
3005 Split the <link linkend="monitoring-stats">statistics collector's</link>
3006 data file into separate global and per-database files (Tomas Vondra)
3010 This reduces the I/O required for statistics tracking.
3016 Fix the statistics collector to operate properly in cases where the
3017 system clock goes backwards (Tom Lane)
3021 Previously, statistics collection would stop until the time again
3022 reached the latest time previously recorded.
3028 Emit an informative message to postmaster standard error when we
3029 are about to stop logging there
3034 This should help reduce user confusion about where to look for log
3035 output in common configurations that log to standard error only during
3045 <title>Authentication</title>
3051 When an authentication failure occurs, log the relevant
3052 <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
3053 line, to ease debugging of unintended failures
3060 Improve <link linkend="auth-ldap"><acronym>LDAP</></link> error
3061 reporting and documentation (Peter Eisentraut)
3067 Add support for specifying <acronym>LDAP</> authentication parameters
3068 in <acronym>URL</> format, per RFC 4516 (Peter Eisentraut)
3075 linkend="guc-ssl-ciphers"><varname>ssl_ciphers</></link> parameter
3076 to start with <literal>DEFAULT</>, rather than <literal>ALL</>,
3077 then remove insecure ciphers (Magnus Hagander)
3081 This should yield a more appropriate SSL cipher set.
3087 Parse and load <link
3088 linkend="auth-username-maps"><filename>pg_ident.conf</></link>
3089 once, not during each connection (Amit Kapila)
3093 This is similar to how <filename>pg_hba.conf</> is processed.
3102 <title>Server Settings</title>
3108 Greatly reduce System V <link linkend="sysvipc">shared
3109 memory</link> requirements (Robert Haas)
3113 On Unix-like systems, <function>mmap()</> is now used for most
3114 of <productname>PostgreSQL</>'s shared memory. For most users, this
3115 will eliminate any need to adjust kernel parameters for shared memory.
3121 Allow the postmaster to listen on multiple Unix-domain sockets
3122 (Honza Horák)
3126 The configuration parameter
3127 <varname>unix_socket_directory</> is replaced by <link
3128 linkend="guc-unix-socket-directories"><varname>unix_socket_directories</></link>,
3129 which accepts a list of directories.
3135 Allow a directory of configuration files to be processed (Magnus
3136 Hagander, Greg Smith, Selena Deckelmann)
3140 Such a directory is specified with <link
3141 linkend="config-includes"><varname>include_dir</></link> in the server
3148 Increase the maximum <link
3149 linkend="APP-INITDB">initdb</link>-configured value for <link
3150 linkend="guc-shared-buffers"><varname>shared_buffers</></link>
3151 to 128MB (Robert Haas)
3155 This is the maximum value that initdb will attempt to set in <link
3156 linkend="config-setting-configuration-file"><filename>postgresql.conf</></link>;
3157 the previous maximum was 32MB.
3163 Remove the <link linkend="guc-external-pid-file">external
3164 <acronym>PID</> file</link>, if any, on postmaster exit
3176 <title>Replication and Recovery</title>
3182 Allow a streaming replication standby to <link
3183 linkend="protocol-replication">follow a timeline switch</link>
3184 (Heikki Linnakangas)
3188 This allows streaming standby servers to receive WAL data from a slave
3189 newly promoted to master status. Previously, other standbys would
3190 require a resync to begin following the new master.
3196 Add <acronym>SQL</> functions <link
3197 linkend="functions-admin-backup"><function>pg_is_in_backup()</></link>
3199 linkend="functions-admin-backup"><function>pg_backup_start_time()</></link>
3204 These functions report the status of base backups.
3210 Improve performance of streaming log shipping with <link
3211 linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
3212 disabled (Andres Freund)
3218 Allow much faster promotion of a streaming standby to primary (Simon
3219 Riggs, Kyotaro Horiguchi)
3225 Add the last checkpoint's redo location to <link
3226 linkend="APP-PGCONTROLDATA"><application>pg_controldata</></link>'s
3227 output (Fujii Masao)
3231 This information is useful for determining which <acronym>WAL</>
3232 files are needed for restore.
3238 Allow tools like <link
3239 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
3240 to run on computers with different architectures (Heikki
3245 WAL files can still only be replayed on servers with the same
3246 architecture as the primary; but they can now be transmitted to and
3247 stored on machines of any architecture, since the
3248 streaming replication protocol is now machine-independent.
3255 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
3256 <option>--write-recovery-conf</> output a
3257 minimal <filename>recovery.conf</> file (Zoltán
3258 Böszörményi, Magnus Hagander)
3262 This simplifies setting up a standby server.
3269 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
3271 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
3272 <option>--xlog-method</> to handle streaming timeline switches
3273 (Heikki Linnakangas)
3280 linkend="guc-wal-receiver-timeout"><varname>wal_receiver_timeout</></link>
3281 parameter to control the <acronym>WAL</> receiver's timeout
3286 This allows more rapid detection of connection failure.
3292 Change the <link linkend="wal"><acronym>WAL</></link> record format to
3293 allow splitting the record header across pages (Heikki Linnakangas)
3297 The new format is slightly more compact, and is more efficient to
3307 <title>Queries</title>
3313 Implement <acronym>SQL</>-standard <link
3314 linkend="queries-lateral"><literal>LATERAL</></link> option for
3315 <literal>FROM</>-clause subqueries and function calls (Tom Lane)
3319 This feature allows subqueries and functions in <literal>FROM</> to
3320 reference columns from other tables in the <literal>FROM</>
3321 clause. The <literal>LATERAL</> keyword is optional for functions.
3327 Add support for piping <link
3328 linkend="SQL-COPY"><command>COPY</></link> and <link
3329 linkend="APP-PSQL"><application>psql</></link> <command>\copy</>
3330 data to/from an external program (Etsuro Fujita)
3336 Allow a multirow <link
3337 linkend="SQL-VALUES"><literal>VALUES</></link> clause in a rule
3338 to reference <literal>OLD</>/<literal>NEW</> (Tom Lane)
3347 <title>Object Manipulation</title>
3353 Add support for <link linkend="event-triggers">event triggers</link>
3354 (Dimitri Fontaine, Robert Haas, Álvaro Herrera)
3358 This allows server-side functions written in event-enabled
3359 languages to be called when DDL commands are run.
3365 Allow <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
3366 wrappers</link> to support writes (inserts/updates/deletes) on foreign
3367 tables (KaiGai Kohei)
3373 Add <link linkend="SQL-CREATESCHEMA"><command>CREATE SCHEMA ... IF
3374 NOT EXISTS</></link> clause (Fabrízio de Royes Mello)
3380 Make <link linkend="SQL-REASSIGN-OWNED"><command>REASSIGN
3381 OWNED</></link> also change ownership of shared objects
3382 (Álvaro Herrera)
3388 Make <link linkend="sql-createaggregate"><command>CREATE
3389 AGGREGATE</></link> complain if the given initial value string is not
3390 valid input for the transition datatype (Tom Lane)
3396 Suppress <link linkend="SQL-CREATETABLE"><command>CREATE
3397 TABLE</></link>'s messages about implicit index and sequence creation
3402 These messages now appear at <literal>DEBUG1</> verbosity, so that
3403 they will not be shown by default.
3409 Allow <link linkend="SQL-DROPTABLE"><command>DROP TABLE IF
3410 EXISTS</></link> to succeed when a non-existent schema is specified
3411 in the table name (Bruce Momjian)
3415 Previously, it threw an error if the schema did not exist.
3421 Provide clients with <link
3422 linkend="libpq-pqresulterrorfield">constraint violation details</link>
3423 as separate fields (Pavel Stehule)
3427 This allows clients to retrieve table, column, data type, or
3428 constraint name error details. Previously such information had to be
3429 extracted from error strings. Client library support is required to
3430 access these fields.
3437 <title><command>ALTER</></title>
3443 Support <literal>IF NOT EXISTS</> option in <link
3444 linkend="SQL-ALTERTYPE"><command>ALTER TYPE ... ADD VALUE</></link>
3449 This is useful for conditionally adding values to enumerated types.
3455 Add <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ALL
3456 SET</></link> to establish settings for all users (Peter Eisentraut)
3460 This allows settings to apply to all users in all databases. <link
3461 linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE SET</></link>
3462 already allowed addition of settings for all users in a single
3463 database. <filename>postgresql.conf</> has a similar effect.
3469 Add support for <link linkend="SQL-ALTERRULE"><command>ALTER RULE
3470 ... RENAME</></link> (Ali Dar)
3479 <title><link linkend="rules-views"><command>VIEWs</></link></title>
3485 Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
3486 views</link> (Kevin Grittner)
3490 Unlike ordinary views, where the base tables are read on every access,
3491 materialized views create physical tables at creation or refresh time.
3492 Access to the materialized view then reads from its physical
3493 table. There is not yet any facility for incrementally refreshing
3494 materialized views or auto-accessing them via base table access.
3500 Make simple views <link
3501 linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
3506 Simple views that reference some or all columns from a
3507 single base table are now updatable by default. More
3508 complex views can be made updatable using <link
3509 linkend="SQL-CREATETRIGGER"><literal>INSTEAD OF</></link> triggers
3510 or <link linkend="SQL-CREATERULE"><literal>INSTEAD</></link> rules.
3516 Add <link linkend="SQL-CREATEVIEW"><command>CREATE RECURSIVE
3517 VIEW</></link> syntax (Peter Eisentraut)
3521 Internally this is translated into <command>CREATE VIEW ... WITH
3528 Improve view/rule printing code to handle cases where referenced
3529 tables are renamed, or columns are renamed, added, or dropped
3534 Table and column renamings can produce cases where, if we merely
3535 substitute the new name into the original text of a rule or view, the
3536 result is ambiguous. This change fixes the rule-dumping code to insert
3537 manufactured table and column aliases when needed to preserve the
3549 <title>Data Types</title>
3555 Increase the maximum size of <link linkend="largeObjects">large
3556 objects</link> from 2GB to 4TB (Nozomi Anzai, Yugo Nagata)
3560 This change includes adding 64-bit-capable large object access
3561 functions, both in the server and in libpq.
3567 Allow text <link linkend="datatype-timezones">timezone
3568 designations</link>, e.g. <quote>America/Chicago</>, in the
3569 <quote>T</> field of <acronym>ISO</>-format <type>timestamptz</type>
3570 input (Bruce Momjian)
3577 <title><link linkend="datatype-json"><type>JSON</></link></title>
3583 Add <link linkend="functions-json">operators and functions</link>
3584 to extract elements from <type>JSON</> values (Andrew Dunstan)
3590 Allow <type>JSON</> values to be <link
3591 linkend="functions-json-table">converted into records</link>
3598 Add <link linkend="functions-json-table">functions</link> to convert
3599 scalars, records, and <type>hstore</> values to <type>JSON</> (Andrew
3612 <title>Functions</title>
3619 linkend="array-functions-table"><function>array_remove()</></link>
3621 linkend="array-functions-table"><function>array_replace()</></link>
3622 functions (Marco Nenciarini, Gabriele Bartolini)
3629 linkend="functions-string-other"><function>concat()</></link>
3631 linkend="functions-string-format"><function>format()</></link>
3632 to properly expand <literal>VARIADIC</>-labeled arguments
3640 linkend="functions-string-format"><function>format()</></link>
3641 to provide field width and left/right alignment options (Pavel Stehule)
3648 linkend="functions-formatting-table"><function>to_char()</></link>,
3650 linkend="functions-formatting-table"><function>to_date()</></link>,
3652 linkend="functions-formatting-table"><function>to_timestamp()</></link>
3653 handle negative (BC) century values properly
3658 Previously the behavior was either wrong or inconsistent
3659 with positive/<acronym>AD</> handling, e.g. with the format mask
3660 <quote>IYYY-IW-DY</>.
3667 linkend="functions-formatting-table"><function>to_date()</></link>
3669 linkend="functions-formatting-table"><function>to_timestamp()</></link>
3670 return proper results when mixing <acronym>ISO</> and Gregorian
3671 week/day designations (Bruce Momjian)
3678 linkend="functions-info-catalog-table"><function>pg_get_viewdef()</></link>
3679 to start a new line by default after each <literal>SELECT</> target
3680 list entry and <literal>FROM</> entry (Marko Tiikkaja)
3684 This reduces line length in view printing, for instance in <link
3685 linkend="APP-PGDUMP"><application>pg_dump</></link> output.
3691 Fix <function>map_sql_value_to_xml_value()</> to print values of
3692 domain types the same way their base type would be printed
3697 There are special formatting rules for certain built-in types such as
3698 <type>boolean</>; these rules now also apply to domains over these
3708 <title>Server-Side Languages</title>
3711 <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
3717 Allow PL/pgSQL to use <literal>RETURN</> with a composite-type
3718 expression (Asif Rehman)
3722 Previously, in a function returning a composite type,
3723 <literal>RETURN</> could only reference a variable of that type.
3729 Allow PL/pgSQL to access <link
3730 linkend="plpgsql-exception-diagnostics">constraint violation
3731 details</link> as separate fields (Pavel Stehule)
3737 Allow PL/pgSQL to access the number of rows processed by
3738 <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
3742 A <command>COPY</> executed in a PL/pgSQL function now updates the
3743 value retrieved by <link
3744 linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
3745 x = ROW_COUNT</></link>.
3751 Allow unreserved keywords to be used as identifiers everywhere in
3756 In certain places in the PL/pgSQL grammar, keywords had to be quoted
3757 to be used as identifiers, even if they were nominally unreserved.
3766 <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
3772 Add PL/Python result object string handler (Peter Eisentraut)
3776 This allows <literal>plpy.debug(rv)</literal> to output something reasonable.
3782 Make PL/Python convert OID values to a proper Python numeric type
3789 Handle <link linkend="spi"><acronym>SPI</></link> errors raised
3790 explicitly (with PL/Python's <literal>RAISE</>) the same as
3791 internal <acronym>SPI</> errors (Oskari Saarenmaa and Jan Urbanski)
3802 <title>Server Programming Interface (<link linkend="spi">SPI</link>)</title>
3808 Prevent leakage of <acronym>SPI</> tuple tables during subtransaction
3813 At the end of any failed subtransaction, the core SPI code now
3814 releases any SPI tuple tables that were created during that
3815 subtransaction. This avoids the need for SPI-using code to keep track
3816 of such tuple tables and release them manually in error-recovery code.
3817 Failure to do so caused a number of transaction-lifespan memory leakage
3818 issues in PL/pgSQL and perhaps other SPI clients. <link
3819 linkend="spi-spi-freetupletable"><function>SPI_freetuptable()</></link>
3820 now protects itself against multiple freeing requests, so any existing
3821 code that did take care to clean up shouldn't be broken by this change.
3827 Allow <acronym>SPI</> functions to access the number of rows processed
3828 by <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
3837 <title>Client Applications</title>
3843 Add command-line utility <link
3844 linkend="app-pg-isready"><application>pg_isready</></link> to
3845 check if the server is ready to accept connections (Phil Sorber)
3851 Support multiple <option>--table</> arguments for <link
3852 linkend="APP-PGRESTORE"><application>pg_restore</></link>,
3853 <link linkend="APP-CLUSTERDB"><application>clusterdb</></link>,
3854 <link linkend="APP-REINDEXDB"><application>reindexdb</></link>,
3855 and <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
3860 This is similar to the way <link
3861 linkend="APP-PGDUMP"><application>pg_dump</></link>'s
3862 <option>--table</> option works.
3868 Add <option>--dbname</> option to <link
3869 linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, <link
3870 linkend="app-pgbasebackup"><application>pg_basebackup</></link>, and
3872 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
3873 to allow specifying a connection string (Amit Kapila)
3879 Add libpq function <link
3880 linkend="libpq-pqconninfo"><function>PQconninfo()</></link>
3881 to return connection information (Zoltán
3882 Böszörményi, Magnus Hagander)
3889 <title><link linkend="APP-PSQL"><application>psql</></link></title>
3895 Adjust function cost settings so <application>psql</> tab
3896 completion and pattern searching are more efficient (Tom Lane)
3902 Improve <application>psql</>'s tab completion coverage (Jeff Janes,
3903 Dean Rasheed, Peter Eisentraut, Magnus Hagander)
3909 Allow the <application>psql</> <option>--single-transaction</>
3910 mode to work when reading from standard input (Fabien Coelho,
3915 Previously this option only worked when reading from a file.
3921 Remove <application>psql</> warning when connecting to an older
3922 server (Peter Eisentraut)
3926 A warning is still issued when connecting to a server of a newer major
3927 version than <application>psql</>'s.
3934 <title><link linkend="APP-PSQL-meta-commands">Backslash Commands</link></title>
3940 Add <application>psql</> command <command>\watch</> to repeatedly
3941 execute a SQL command (Will Leinweber)
3947 Add <application>psql</> command <command>\gset</> to store query
3948 results in <application>psql</> variables (Pavel Stehule)
3954 Add <acronym>SSL</> information to <application>psql</>'s
3955 <command>\conninfo</> command (Alastair Turner)
3961 Add <quote>Security</> column to <application>psql</>'s
3962 <command>\df+</> output (Jon Erdman)
3968 Allow <application>psql</> command <command>\l</> to accept a database
3969 name pattern (Peter Eisentraut)
3975 In <application>psql</>, do not allow <command>\connect</> to
3976 use defaults if there is no active connection (Bruce Momjian)
3980 This might be the case if the server had crashed.
3986 Properly reset state after failure of a SQL command executed with
3987 <application>psql</>'s <literal>\g</> <replaceable>file</>
3992 Previously, the output from subsequent SQL commands would unexpectedly
3993 continue to go to the same file.
4002 <title>Output</title>
4008 Add a <literal>latex-longtable</> output format to
4009 <application>psql</> (Bruce Momjian)
4013 This format allows tables to span multiple pages.
4019 Add a <literal>border=3</> output mode to the <application>psql</>
4020 <literal>latex</> format (Bruce Momjian)
4026 In <application>psql</>'s tuples-only and expanded output modes, no
4027 longer emit <quote>(No rows)</> for zero rows (Peter Eisentraut)
4033 In <application>psql</>'s unaligned, expanded output mode, no longer
4034 print an empty line for zero rows (Peter Eisentraut)
4045 <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
4051 Add <application>pg_dump</> <option>--jobs</> option to dump tables in
4052 parallel (Joachim Wieland)
4058 Make <application>pg_dump</> output functions in a more predictable
4059 order (Joel Jacobson)
4065 Fix tar files emitted by <application>pg_dump</>
4066 to be <acronym>POSIX</> conformant (Brian Weaver, Tom Lane)
4072 Add <option>--dbname</> option to <application>pg_dump</>, for
4073 consistency with other client commands (Heikki Linnakangas)
4077 The database name could already be supplied last without a flag.
4086 <title><link linkend="APP-INITDB"><application>initdb</></link></title>
4092 Make initdb fsync the newly created data directory (Jeff Davis)
4096 This insures data integrity in event of a system crash shortly after
4097 initdb. This can be disabled by using <option>--nosync</>.
4103 Add initdb <option>--sync-only</> option to sync the data directory to durable
4104 storage (Bruce Momjian)
4108 This is used by <link
4109 linkend="pgupgrade"><application>pg_upgrade</></link>.
4115 Make initdb issue a warning about placing the data directory at the
4116 top of a file system mount point (Bruce Momjian)
4127 <title>Source Code</title>
4133 Add infrastructure to allow plug-in <link
4134 linkend="bgworker">background worker processes</link>
4135 (Álvaro Herrera)
4141 Create a centralized timeout <acronym>API</> (Zoltán
4142 Böszörményi)
4148 Create libpgcommon and move <function>pg_malloc()</> and other
4149 functions there (Álvaro Herrera, Andres Freund)
4153 This allows libpgport to be used solely for portability-related code.
4159 Add support for list links embedded in larger structs (Andres Freund)
4165 Use <literal>SA_RESTART</> for all signals,
4166 including <literal>SIGALRM</> (Tom Lane)
4172 Ensure that the correct text domain is used when
4173 translating <function>errcontext()</> messages
4174 (Heikki Linnakangas)
4180 Standardize naming of client-side memory allocation functions (Tom Lane)
4186 Provide support for <quote>static assertions</> that will fail at
4187 compile time if some compile-time-constant condition is not met
4188 (Andres Freund, Tom Lane)
4194 Support <function>Assert()</> in client-side code (Andrew Dunstan)
4200 Add decoration to inform the C compiler that some <function>ereport()</>
4201 and <function>elog()</> calls do not return (Peter Eisentraut,
4202 Andres Freund, Tom Lane, Heikki Linnakangas)
4208 Allow options to be passed to the regression
4209 test output comparison utility via <link
4210 linkend="regress-evaluation"><envar>PG_REGRESS_DIFF_OPTS</></link>
4217 Add isolation tests for <link
4218 linkend="SQL-CREATEINDEX"><command>CREATE INDEX
4219 CONCURRENTLY</></link> (Abhijit Menon-Sen)
4225 Remove typedefs for <type>int2</>/<type>int4</> as they are better
4226 represented as <type>int16</>/<type>int32</> (Peter Eisentraut)
4232 Fix <link linkend="install">install-strip</link> on Mac <productname>OS
4233 X</> (Peter Eisentraut)
4239 Remove <link linkend="configure">configure</link> flag
4240 <option>--disable-shared</>, as it is no longer supported
4247 Rewrite pgindent in <application>Perl</> (Andrew Dunstan)
4253 Provide Emacs macro to set Perl formatting to
4254 match <productname>PostgreSQL</>'s perltidy settings (Peter Eisentraut)
4260 Run tool to check the keyword list whenever the backend grammar is
4267 Change the way <literal>UESCAPE</> is lexed, to significantly reduce
4268 the size of the lexer tables (Heikki Linnakangas)
4274 Centralize <application>flex</> and <application>bison</>
4275 <application>make</> rules (Peter Eisentraut)
4279 This is useful for <application>pgxs</> authors.
4285 Change many internal backend functions to return object <type>OID</>s
4286 rather than void (Dimitri Fontaine)
4290 This is useful for event triggers.
4296 Invent pre-commit/pre-prepare/pre-subcommit events for transaction
4297 callbacks (Tom Lane)
4301 Loadable modules that use transaction callbacks might need modification
4302 to handle these new event types.
4309 linkend="functions-info-catalog-table"><function>pg_identify_object()</></link>
4310 to produce a machine-readable description of a database object
4311 (Álvaro Herrera)
4317 Add post-<command>ALTER</>-object server hooks (KaiGai Kohei)
4323 Implement a generic binary heap and use it for Merge-Append
4324 operations (Abhijit Menon-Sen)
4330 Provide a tool to help detect timezone abbreviation changes when
4331 updating the <filename>src/timezone/data</> files
4338 Add <application>pkg-config</> support for <application>libpq</>
4339 and <application>ecpg</> libraries (Peter Eisentraut)
4345 Remove <filename>src/tool/backend</>, now that the content is on
4346 the <productname>PostgreSQL</> wiki (Bruce Momjian)
4352 Split out <link linkend="wal"><acronym>WAL</></link> reading as
4353 an independent facility (Heikki Linnakangas, Andres Freund)
4359 Use a 64-bit integer to represent <link
4360 linkend="wal"><acronym>WAL</></link> positions
4361 (<structname>XLogRecPtr</>) instead of two 32-bit integers
4362 (Heikki Linnakangas)
4366 Generally, tools that need to read the <acronym>WAL</> format
4367 will need to be adjusted.
4373 Allow <link linkend="plpython">PL/Python</link> to support
4374 platform-specific include directories (Peter Eisentraut)
4380 Allow <link linkend="plpython">PL/Python</link> on <productname>OS
4381 X</> to build against custom versions of <application>Python</>
4391 <title>Additional Modules</title>
4397 Add a <link linkend="postgres-fdw"><productname>Postgres</> foreign
4398 data wrapper</link> contrib module to allow access to
4399 other <productname>Postgres</> servers (Shigeru Hanada)
4403 This foreign data wrapper supports writes.
4409 Add <link linkend="pgxlogdump"><application>pg_xlogdump</></link>
4410 contrib program (Andres Freund)
4416 Add support for indexing of regular-expression searches in
4417 <link linkend="pgtrgm"><productname>pg_trgm</></link>
4418 (Alexander Korotkov)
4424 Improve <link linkend="pgtrgm"><productname>pg_trgm</></link>'s
4425 handling of multibyte characters (Tom Lane)
4429 On a platform that does not have the wcstombs() or towlower() library
4430 functions, this could result in an incompatible change in the contents
4431 of <productname>pg_trgm</> indexes for non-ASCII data. In such cases,
4432 <command>REINDEX</> those indexes to ensure correct search results.
4438 Add a <link linkend="pgstattuple">pgstattuple</link> function to report
4439 the size of the pending-insertions list of a <acronym>GIN</> index
4446 Make <link linkend="oid2name"><application>oid2name</></link>,
4447 <link linkend="pgbench"><application>pgbench</></link>, and
4448 <link linkend="vacuumlo"><application>vacuumlo</></link> set
4449 <varname>fallback_application_name</> (Amit Kapila)
4455 Improve output of <link
4456 linkend="pgtesttiming"><application>pg_test_timing</></link>
4463 Improve output of <link
4464 linkend="pgtestfsync"><application>pg_test_fsync</></link>
4471 Create a dedicated foreign data wrapper, with its own option validator
4472 function, for <link linkend="dblink">dblink</link> (Shigeru Hanada)
4476 When using this FDW to define the target of a <application>dblink</>
4477 connection, instead of using a hard-wired list of connection options,
4478 the underlying <application>libpq</> library is consulted to see what
4479 connection options it supports.
4486 <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
4492 Allow <application>pg_upgrade</> to do dumps and restores in
4493 parallel (Bruce Momjian, Andrew Dunstan)
4497 This allows parallel schema dump/restore of databases, as well as
4498 parallel copy/link of data files per tablespace. Use the
4499 <option>--jobs</> option to specify the level of parallelism.
4505 Make <application>pg_upgrade</> create Unix-domain sockets in
4506 the current directory (Bruce Momjian, Tom Lane)
4510 This reduces the possibility that someone will accidentally connect
4517 Make <application>pg_upgrade</> <option>--check</> mode properly
4518 detect the location of non-default socket directories (Bruce
4525 Improve performance of <application>pg_upgrade</> for databases
4526 with many tables (Bruce Momjian)
4532 Improve <application>pg_upgrade</>'s logs by showing
4533 executed commands (Álvaro Herrera)
4539 Improve <application>pg_upgrade</>'s status display during
4540 copy/link (Bruce Momjian)
4549 <title><link linkend="pgbench"><application>pgbench</></link></title>
4555 Add <option>--foreign-keys</> option to <application>pgbench</>
4560 This adds foreign key constraints to the standard tables created by
4561 <application>pgbench</>, for use in foreign key performance testing.
4567 Allow <application>pgbench</> to aggregate performance statistics
4568 and produce output every <option>--aggregate-interval</>
4569 seconds (Tomas Vondra)
4575 Add <application>pgbench</> <option>--sampling-rate</> option
4576 to control the percentage of transactions logged (Tomas Vondra)
4582 Reduce and improve the status message output of
4583 <application>pgbench</>'s initialization mode (Robert Haas,
4590 Add <application>pgbench</> <option>-q</> mode to print one output
4591 line every five seconds (Tomas Vondra)
4597 Output <application>pgbench</> elapsed and estimated remaining
4598 time during initialization (Tomas Vondra)
4604 Allow <application>pgbench</> to use much larger scale factors,
4605 by changing relevant columns from <type>integer</> to <type>bigint</>
4606 when the requested scale factor exceeds 20000
4618 <title>Documentation</title>
4624 Allow <productname>EPUB</>-format documentation to be created
4631 Update <productname>FreeBSD</> kernel configuration documentation
4638 Improve <link linkend="tutorial-window"><literal>WINDOW</>
4639 function</link> documentation (Bruce Momjian, Florian Pflug)
4645 Add <link linkend="docguide-toolsets">instructions</link> for setting
4646 up the documentation tool chain on Mac <productname>OS X</>
4654 linkend="guc-commit-delay"><varname>commit_delay</></link>
4655 documentation (Peter Geoghegan)