1 <!-- doc/src/sgml/release-9.3.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
4 <sect1 id="release-9-3">
5 <title>Release 9.3</title>
8 <title>Release Date</title>
9 <simpara>2013-XX-XX, CURRENT AS OF 2013-05-03</simpara>
13 <title>Overview</title>
16 ADD HERE Major enhancements include:
19 <!-- This list duplicates items below, but without authors or details-->
22 The above items are explained in more detail in the sections below.
29 <title>Migration to Version 9.3</title>
32 A dump/restore using <link
33 linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, or use
34 of <link linkend="pgupgrade"><application>pg_upgrade</></link>, is
35 required for those wishing to migrate data from any previous release.
39 Version 9.3 contains a number of changes that may affect compatibility
40 with previous releases. Observe the following incompatibilities:
44 <title>Server Settings</title>
50 Rename <varname>replication_timeout</> to <link
51 linkend="guc-wal-sender-timeout"><varname>wal_sender_timeout</></link>
56 This setting controls the <link
57 linkend="wal"><acronym>WAL</></link> sender timeout.
63 Require superuser privileges to set <link
64 linkend="guc-commit-delay"><varname>commit_delay</></link>
65 because it can now potentially delay other sessions (Simon Riggs)
71 Allow in-memory sorts to use their full memory allocation (Jeff Janes)
75 Users who have set <link
76 linkend="guc-work-mem"><varname>work_mem</></link> based on the
77 previous behavior should revisit that setting.
92 Throw an error if expiring tuple is again updated or deleted (Kevin Grittner)
99 Change <link linkend="SQL-CREATETABLE"><literal>ON UPDATE
100 SET NULL/SET DEFAULT</></link> foreign key actions to affect
101 all referenced columns, not just those referenced in the
102 <command>UPDATE</> (Tom Lane)
106 Previously only columns referenced in the <command>UPDATE</> were
107 set to null or <literal>DEFAULT</>.
113 Internally store default foreign key matches (non-<literal>FULL</>,
114 non-<literal>PARTIAL</>) as <quote>simple</> (Tom Lane)
118 These were previously stored as "<unspecified>".
119 This changes the value stored in system column <link
120 linkend="catalog-pg-constraint"><structname>pg_constraint.confmatchtype</></link>.
126 Store <link linkend="wal"><acronym>WAL</></link> in a continuous
127 stream, rather than skipping the last 16MB segment every 4GB
132 Previously, <acronym>WAL</> files ending in <literal>FF</> were
133 not used. If you have <acronym>WAL</> backup or restore scripts
134 that took that skipping into account, they need to be adjusted.
145 <title>Changes</title>
148 Below you will find a detailed account of the changes between
149 <productname>PostgreSQL</productname> 9.3 and the previous major
154 <title>Server</title>
157 <title>Locking</title>
163 Prevent non-key-field row updates from locking foreign key rows
164 (Álvaro Herrera, Noah Misch, Andres Freund, Alexander
165 Shulgin, Marti Raudsepp)
169 This improves concurrency and reduces the probability of deadlocks.
170 <command>UPDATE</>s on non-key columns use the new <command>SELECT
171 FOR NO KEY UPDATE</> lock type, and foreign key checks use the
172 new <command>SELECT FOR KEY SHARE</> lock mode.
178 Add configuration variable <link
179 linkend="guc-lock-timeout"><varname>lock_timeout</></link> to limit
180 lock wait duration (Zoltán Böszörményi)
186 Add cache of local locks (Jeff Janes)
190 This speeds lock release at statement completion in
191 transactions that hold many locks; it is particularly useful
192 for <application>pg_dump</>.
201 <title>Indexes</title>
207 Add <link linkend="rangetypes-indexing"><type>SP-GiST</></link>
208 support for range data types (Alexander Korotkov)
214 Allow unlogged <link linkend="SPGiST"><type>GiST</></link> indexes
221 Improve concurrency of hash indexes (Robert Haas)
230 <title>Optimizer</title>
236 Collect and use histograms for <link linkend="rangetypes">range
237 types</link> (Alexander Korotkov)
243 Reduce optimizer overhead by discarding plans with unneeded cheaper
244 startup costs (Tom Lane)
250 Improve optimizer cost estimation for index access (Tom Lane)
259 <title>General Performance</title>
265 Add <link linkend="SQL-COPY"><command>COPY FREEZE</></link>
266 option to avoid the overhead of later marking tuples as committed
267 (Simon Riggs, Jeff Davis)
273 Improve performance of <link
274 linkend="datatype-numeric"><type>NUMERIC</></link> calculations
281 Improve grouping of sessions waiting for <link
282 linkend="guc-commit-delay"><varname>commit_delay</></link>
287 This improves the usefulness and behavior of
288 <varname>commit_delay</>.
294 Improve performance for transactions creating, rebuilding, or
295 dropping many relations (Jeff Janes, Tomas Vondra)
301 Improve performance of the <link
302 linkend="SQL-CREATETABLE"><command>CREATE TEMPORARY TABLE ... ON
303 COMMIT DELETE ROWS</></link> clause by only issuing delete if
304 the temporary table was accessed (Heikki Linnakangas)
310 Have vacuum recheck visibility after it has removed expired tuples
315 This increases the chance of a page being marked as all-visible.
322 linkend="guc-stats-temp-directory"><filename>pg_stat_tmp</></link>
323 statistics file into per-database and global files (Tomas Vondra)
327 This reduces the statistics management read and write overhead.
336 <title>Monitoring</title>
342 Add optional ability to <link
343 linkend="app-initdb-data-checksums">checksum</link> data pages and
344 report corruption (Simon Riggs, Jeff Davis, Greg Smith, Ants Aasma)
348 The checksum option can be set during <link
349 linkend="APP-INITDB">initdb</link>.
356 linkend="functions-admin-signal-table"><function>pg_terminate_backend()</></link>
357 to terminate other backends with the same role (Dan Farina)
361 Previously, only superusers could terminate other sessions.
368 linkend="runtime-config-statistics-collector">statistics
369 collector</link> to operate properly in cases where the system
370 clock goes backwards (Tom Lane)
374 Previously statistics collection would stop until the time again
375 reached the previously-stored latest time.
384 <title>Authentication</title>
390 Improve <link linkend="auth-ldap"><acronym>LDAP</></link> error
391 reporting and documentation (Peter Eisentraut)
397 Add support for <acronym>LDAP</> authentication to be specified
398 in <acronym>URL</> format (Peter Eisentraut)
405 linkend="guc-ssl-ciphers"><varname>ssl_ciphers</></link> parameter
406 to start with <literal>DEFAULT</>, rather than <literal>ALL</>,
407 then remove insecure ciphers (Magnus Hagander)
411 It is assumed <literal>DEFAULT</> is more appropriate cipher set.
418 linkend="auth-username-maps"><filename>pg_ident.conf</></link>
419 once, not during each connection (Amit Kapila)
423 This is similar to how <link
424 linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
434 <title>Server Settings</title>
440 Dramatically reduce System V <link linkend="sysvipc">shared
441 memory</link> requirements (Robert Haas)
445 Instead, on Unix-like systems, <function>mmap()</> is used for
446 shared memory. This eliminates the requirement of increasing
447 System V shared memory kernel parameters.
453 Allow the postmaster to listen on multiple Unix-domain sockets
458 This renames configuration parameter
459 <varname>unix_socket_directory</> to <link
460 linkend="guc-unix-socket-directories"><varname>unix_socket_directories</></link>,
461 which accepts a list of directories.
467 Allow a directory of configuration files to be processed (Magnus
468 Hagander, Greg Smith, Selena Deckelmann)
472 The directory is specified as <link
473 linkend="config-includes"><varname>include_dir</></link> in server
480 Increase the maximum <link
481 linkend="APP-INITDB">initdb</link>-configured value for <link
482 linkend="guc-shared-buffers"><varname>shared_buffers</></link>
483 to 128MB (Robert Haas)
487 This is the maximum value initdb attempts to set in <link
488 linkend="config-setting-configuration-file"><filename>postgresql.conf</></link>;
489 the previous value was 32MB.
495 Remove the <link linkend="guc-external-pid-file">external
496 <acronym>PID</> file</link> on postmaster exit (Peter Eisentraut)
507 <title>Replication and Recovery</title>
513 Allow a streaming replication standby to <link
514 linkend="protocol-replication">follow a timeline switch</link>
519 This allows streaming standbys to feed from newly-promoted slaves.
520 Previously slaves required access to a <acronym>WAL</> archive directory to
527 Add <acronym>SQL</> functions <link
528 linkend="functions-admin-backup"><function>pg_is_in_backup()</></link>
530 linkend="functions-admin-backup"><function>pg_backup_start_time()</></link>
535 These functions report the status of base backups.
541 Improve performance of streaming log shipping with <link
542 linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
543 disabled (Andres Freund)
549 Allow much faster promotion of a streaming standby to primary (Simon
550 Riggs, Kyotaro Horiguchi)
556 Add the last checkpoint's redo location to <link
557 linkend="APP-PGCONTROLDATA"><application>pg_controldata</></link>'s
562 This information is useful for determining the <acronym>WAL</>
563 files needed for restore.
569 Allow tools like <link
570 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
571 to run on computers with different architectures (Heikki
579 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
580 <option>--write-recovery-conf</> output a
581 minimal <filename>recovery.conf</> (Zoltán
582 Böszörményi, Magnus Hagander)
586 This simplifies setting up a standby server.
593 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
595 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
596 <option>--xlog-method</> to handle streaming timeline switches
604 linkend="guc-wal-receiver-timeout"><varname>wal_receiver_timeout</></link>
605 parameter to control the <acronym>WAL</> receiver timeout
610 This allows more rapid detection of
611 connection failure. No longer set <link
612 linkend="guc-wal-receiver-status-interval"><varname>wal_receiver_status_interval</></link>?
619 <title><link linkend="wal">Write-Ahead Log</link>
620 (<acronym>WAL</>)</title>
626 Change the <acronym>WAL</> record format to allow splitting the record header
627 across pages (Heikki Linnakangas)
631 The new format is slightly more compact.
642 <title>Queries</title>
648 Implement <acronym>SQL</>-standard <link
649 linkend="queries-lateral"><literal>LATERAL</></link> for
650 <literal>FROM</>-clause subqueries and function calls (Tom Lane)
654 This is useful in allowing <literal>FROM</> subqueries and
655 functions to reference output from tables in the <literal>FROM</>
656 clause. The <literal>LATERAL</> keyword is optional for functions.
662 Add support for piping <link
663 linkend="SQL-COPY"><command>COPY</></link> and <link
664 linkend="APP-PSQL"><application>psql</></link> <command>\copy</>
665 to/from an external program (Etsuro Fujita)
671 Improve query string error location reporting (Tom Lane)
675 Only <command>CREATE SCHEMA ... IF NOT EXISTS</>? If so, remove it.
684 <title>Object Manipulation</title>
690 Add support to <link linkend="event-triggers">event triggers</link>
691 (Dimitri Fontaine, Robert Haas, Álvaro Herrera)
695 This allows C functions to be called when specific commands are run.
701 Allow a multi-row <link
702 linkend="SQL-VALUES"><literal>VALUES</></link> clause in rules
703 to reference <literal>OLD</>/<literal>NEW</> (Tom Lane)
709 Add <link linkend="SQL-CREATESCHEMA"><command>CREATE SCHEMA ... IF
710 NOT EXISTS</></link> clause (Fabrízio de Royes Mello)
716 Have <link linkend="SQL-REASSIGN-OWNED"><command>REASSIGN
717 OWNED</></link> also change ownership of shared objects
718 (Álvaro Herrera)
725 <title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
731 No longer output messages about implicit index and sequence creation (Robert Haas)
735 These messages now appear with <literal>DEBUG1</>-level output.
741 Allow <command>DROP TABLE IF NOT EXISTS</> to succeed for a
742 non-existent schema (Bruce Momjian)
746 Previously, it threw an error if the schema did not exist.
755 <title>Constraints</title>
761 Provide clients with <link
762 linkend="libpq-pqresulterrorfield">constraint violation details</link>
763 as separate fields (Pavel Stehule)
767 This allows clients to retrieve table, column, data type, or constraint
768 name error details. Previously such information had to be extracted from
769 error strings. Client language support is required to access these
779 <title><command>ALTER</></title>
785 Add the <link linkend="SQL-ALTERTYPE"><command>ALTER TYPE ... IF
786 NOT EXISTS</></link> clause when adding enumerated type labels
791 This is useful for conditional label creation in transaction blocks.
797 Add <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ALL
798 SET</></link> to add settings to all users (Peter Eisentraut)
802 This allows settings to apply to all users in all databases. <link
803 linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE SET</></link>
804 already allowed addition of settings for all users in a single
805 database. <filename>postgresql.conf</> has a similar effect.
811 Add support for <link linkend="SQL-ALTERRULE"><command>ALTER RULE
812 ... RENAME</></link> (Ali Dar)
821 <title><link linkend="rules-views"><command>VIEWs</></link></title>
827 Add a <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
828 view</link> relations (Kevin Grittner)
832 Unlike ordinary views, where the base tables are read on every access,
833 materialized views create physical tables at creation or refresh time.
834 Access to the materialized view reads from these materialized physical
835 tables. There is no facility for incrementally refreshing materialized
836 views or auto-accessing them via base table access.
842 Make simple views <link
843 linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
848 Simple views that reference some or all columns from a
849 single base table are now updatable by default. More
850 complex views can be made updatable using <link
851 linkend="SQL-CREATETRIGGER"><literal>INSTEAD OF</></link> triggers
852 or <link linkend="SQL-CREATERULE"><literal>INSTEAD</></link> rules.
858 Allow views and rules to handle cases where referenced tables are
859 renamed, or columns are renamed, added, or dropped (Tom Lane)
860 HOW DOES IT HANDLE A DROPPED REFERENCED COLUMN?
866 Add <link linkend="SQL-CREATEVIEW"><command>CREATE RECURSIVE
867 VIEW</></link> syntax (Peter Eisentraut)
871 Internally this is translated into <command>CREATE VIEW ... WITH
878 When converting a table to a view, remove its system columns (Tom Lane)
890 <title>Data Types</title>
896 Increase the maximum length of <link linkend="lo-open">large
897 objects</link> from 2GB to 4TB (Nozomi Anzai, Yugo Nagata)
901 This change includes new libpq and server-side 64-bit-enabled functions.
907 Allow text <link linkend="datatype-timezones">timezone
908 designations</link>, e.g. <quote>America/Chicago</> when using
909 the <acronym>ISO</> <quote>T</> timestamptz format (Bruce Momjian)
916 <title><link linkend="datatype-json"><type>JSON</></link></title>
922 Add <link linkend="functions-json">operators and functions</link>
923 to extract values from <type>JSON</> data strings (Andrew Dunstan)
929 Allow <type>JSON</> data strings to be <link
930 linkend="functions-json-table">converted into records</link>
937 Add <link linkend="functions-json-table">functions</link>
938 to convert values, records, and hstore data to <type>JSON</>
951 <title>Functions</title>
958 linkend="array-functions-table"><function>array_remove()</></link>
960 linkend="array-functions-table"><function>array_replace()</></link>
961 functions (Marco Nenciarini, Gabriele Bartolini)
968 linkend="functions-string-other"><function>concat()</></link>
970 linkend="functions-string-format"><function>format()</></link>
971 to properly expand <literal>VARIADIC</>-labeled arguments
979 linkend="functions-string-format"><function>format()</></link>
980 to handle field width and left/right alignment (Pavel Stehule)
987 linkend="functions-formatting-table"><function>to_char()</></link>,
989 linkend="functions-formatting-table"><function>to_date()</></link>,
991 linkend="functions-formatting-table"><function>to_timestamp()</></link>
992 properly handle negative century designations (<literal>CC</>)
997 Previously the behavior was either wrong or inconsistent
998 with positive/<acronym>AD</> handling, e.g. format mask
999 <quote>IYYY-IW-DY</>.
1006 linkend="functions-formatting-table"><function>to_date()</></link>
1008 linkend="functions-formatting-table"><function>to_timestamp()</></link>
1009 return proper results when mixing <acronym>ISO</> and Gregorian
1010 week/day designations (Bruce Momjian)
1017 linkend="functions-info-catalog-table"><function>pg_get_viewdef()</></link>
1018 to default to wrapping after every <link
1019 linkend="SQL-SELECT"><command>SELECT</></link> target list and
1020 <literal>FROM</> entry (Marko Tiikkaja)
1024 This causes view output, like from <link
1025 linkend="APP-PGDUMP"><application>pg_dump</></link>, to be
1032 Have <function>map_sql_value_to_xml_value()</> properly expand
1033 domains (Pavel Stehule) WHAT IS THE USER-VISIBLE AFFECT HERE?
1034 map_sql_value_to_xml_value IS A C FUNCTION
1040 Force cached functions to be replanned if the <link
1041 linkend="guc-search-path"><varname>search_path</></link> changes
1046 Previously functions already run in the current session ignored
1047 <varname>search_path</> changes.
1057 <title>Server-Side Languages</title>
1063 Allow <link linkend="spi-spi-execute"><acronym>SPI</></link>
1064 functions to access the number of rows processed by
1065 <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1072 <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
1078 Allow PL/pgSQL to use <literal>RETURN</> with a composite-type
1079 expressions (Asif Rehman)
1083 Previously <literal>RETURN</> could only reference composite-type variables.
1089 Allow PL/pgSQL to access the number of rows processed by
1090 <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1094 The command is <link
1095 linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
1096 x = ROW_COUNT</></link>.
1102 Allow greater flexibility in where keywords can be used in PL/pgSQL (Tom Lane)
1111 <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
1117 Add PL/Python result object string handler (Peter Eisentraut)
1121 This allows plpy.debug(rv) to output something reasonable.
1127 Have PL/Python convert oid values to a proper Python numeric type
1134 Handle <link linkend="spi"><acronym>SPI</></link> errors raised
1135 explicitly with PL/Python's <literal>RAISE</> the same as as
1136 internal <acronym>SPI</> errors (Oskari Saarenmaa and Jan Urbanski)
1147 <title>Client Applications</title>
1153 Add command-line utility <link
1154 linkend="app-pg-isready"><application>pg_isready</></link> to
1155 check if the server is ready to accept connections (Phil Sorber)
1161 Support multiple <option>--table</> arguments for <link
1162 linkend="APP-PGRESTORE"><application>pg_restore</></link>,
1163 <link linkend="APP-CLUSTERDB"><application>clusterdb</></link>,
1164 <link linkend="APP-REINDEXDB"><application>reindexdb</></link>,
1165 and <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
1170 This is similar to the <link
1171 linkend="APP-PGDUMP"><application>pg_dump</></link> <option>--table</>
1178 Add <option>--dbname</> option to <link
1179 linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, <link
1180 linkend="app-pgbasebackup"><application>pg_basebackup</></link>,
1182 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
1183 to specify the connection string (Amit Kapila)
1189 Add libpq function <link
1190 linkend="libpq-pqconninfo"><function>PQconninfo()</></link>
1191 to return connection information (Zoltán
1192 Böszörményi, Magnus Hagander)
1199 <title><link linkend="APP-PSQL"><application>psql</></link></title>
1205 Adjust function cost settings so <application>psql</> tab
1206 completion and pattern searching is more efficient (Tom Lane)
1212 Improve <application>psql</> tab completion coverage (Jeff Janes,
1219 Allow the <application>psql</> <option>--single-transaction</> mode to work when
1220 reading from standard input (Fabien Coelho, Robert Haas)
1224 Previously this option only worked when reading from a file.
1230 Remove <application>psql</> warning when connecting to an older
1231 server (Peter Eisentraut)
1235 The warning when connecting to a newer server was retained.
1242 <title><link linkend="R2-APP-PSQL-4">Backslash Commands</link></title>
1248 Add <application>psql</> <command>\watch</> command to repeatedly
1249 execute commands (Will Leinweber)
1255 Add <application>psql</> command <command>\gset</> to store query
1256 results in <application>psql</> variables (Pavel Stehule)
1262 Add <acronym>SSL</> information to <application>psql</>'s
1263 <command>\conninfo</> command (Alastair Turner)
1269 Add <quote>Security</> label to <application>psql</> <command>\df+</>
1276 Allow <application>psql</> <command>\l</> to accept a database
1277 name pattern (Peter Eisentraut)
1283 In <application>psql</>, do not allow <command>\connect</> to
1284 use defaults if there is no active connection (Bruce Momjian)
1288 This might be the case if the server had crashed.
1294 Properly reset state if <application>psql</>'s <quote>\g file</>
1295 command failed (Tom Lane)
1299 Previously failed commands discarded output from subsequent commands.
1308 <title>Output</title>
1314 Add a <literal>latex-longtable</> output format to
1315 <application>psql</> (Bruce Momjian)
1319 Longtable allows tables to span multiple pages.
1325 Add a <literal>border=3</> output mode to the <application>psql</>
1326 <literal>latex</> format (Bruce Momjian)
1332 In <application>psql</> tuples-only and expanded modes, no longer
1333 output <quote>(No rows)</> (Peter Eisentraut)
1339 In <application>psql</>, no longer print an empty line for
1340 unaligned, expanded output for zero rows (Peter Eisentraut)
1351 <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
1357 Add <application>pg_dump</> <option>--jobs</> to dump in parallel
1358 when using directory output format (Joachim Wieland)
1364 Have <application>pg_dump</> output functions in a predictable
1365 order (Joel Jacobson)
1371 Fix tar files emitted by <application>pg_dump</> and <link
1372 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
1373 to be <acronym>POSIX</> conformant (Brian Weaver, Tom Lane)
1379 Add <option>--dbname</> option to <application>pg_dump</>, for
1380 consistency with other client commands (Heikki Linnakangas)
1384 The database name could already be supplied last without a flag.
1393 <title><link linkend="APP-INITDB"><application>initdb</></link></title>
1399 Have initdb fsync the newly created data directory (Jeff Davis)
1403 This can be disabled by using <option>--nosync</>.
1409 Add initdb <option>--sync-only</> option to sync the data directory to durable
1410 storage (Bruce Momjian)
1414 This is used by <link
1415 linkend="pgupgrade"><application>pg_upgrade</></link>.
1421 Have initdb issue a warning about placing the data directory at the
1422 top of file system mount points (Bruce Momjian)
1433 <title>Source Code</title>
1439 Add an embedded list interface (Andres Freund)
1445 Add infrastructure to better support plug-in <link
1446 linkend="bgworker">background worker processes</link>
1447 (Álvaro Herrera)
1453 Create a centralized timeout <acronym>API</> (Zoltán
1454 Böszörményi)
1460 Create libpgcommon and move <function>pg_malloc()</> and other
1461 functions there (Álvaro Herrera, Andres Freund)
1465 This allows libpgport to be used solely for porting code.
1471 Standardize on naming of client-side memory allocation functions (Tom Lane)
1477 Add compiler designations to indicate some <function>ereport()</>
1478 and <function>elog()</> calls do not return (Peter Eisentraut,
1479 Andres Freund, Tom Lane, Heikki Linnakangas)
1485 Allow options to be passed to the regression
1486 test output comparison utility via <link
1487 linkend="regress-evaluation"><envar>PG_REGRESS_DIFF_OPTS</></link>
1494 Add isolation tests for <link
1495 linkend="SQL-CREATEINDEX"><command>CREATE INDEX
1496 CONCURRENTLY</></link> (Abhijit Menon-Sen)
1502 Remove typedefs for <type>int2</>/<type>int4</> as they are better
1503 represented as <type>int16</>/<type>int32</> (Peter Eisentraut)
1509 Fix <link linkend="install">install-strip</link> on Mac <productname>OS
1510 X</> (Peter Eisentraut)
1516 Remove <link linkend="configure">configure</link> flag
1517 <option>--disable-shared</>, as it is no longer used (Bruce
1524 Rewrite pgindent in <application>Perl</> (Andrew Dunstan)
1530 Add emacs macro to match <productname>PostgreSQL</> perltidy
1531 formatting (Peter Eisentraut)
1537 Run tool to check the keyword list when the backend grammar is
1544 Centralize <application>flex</> and <application>bison</>
1545 <application>make</> rules (Peter Eisentraut)
1549 This is useful for <application>pgxs</> authors.
1555 Add <function>Assert()</> functionality to client-side code for
1556 frontend code (Andrew Dunstan)
1562 Change many internal many backend functions to return <type>OID</>s
1563 rather than void (Dimitri Fontaine)
1567 This is useful for event triggers.
1573 Invent pre-commit/pre-prepare/pre-subcommit events for transaction
1574 callbacks (Tom Lane)
1578 Loadable modules that use transaction callbacks might need modification
1579 to handle these new event types.
1586 linkend="functions-info-catalog-table"><function>pg_identify_object()</></link>
1587 to dump an object in machine-readable format (Álvaro
1594 Add post-<command>ALTER</>-object server hooks (KaiGai Kohei)
1600 Implement a generic binary heap and use it for Merge-Append
1601 operations (Abhijit Menon-Sen)
1607 Improve ability to detect official timezone abbreviation changes
1614 Add <application>pkg-config</> support <application>libpq</>
1615 and <application>ecpg</> libraries (Peter Eisentraut)
1621 Remove <filename>src/tool/backend</>, now that the content is on
1622 the <productname>PostgreSQL</> wiki (Bruce Momjian)
1628 Split out <link linkend="wal"><acronym>WAL</></link> reading as
1629 an independent facility (Heikki Linnakangas, Andres Freund)
1635 Use a 64-bit integer to represent <link
1636 linkend="wal"><acronym>WAL</></link> positions
1637 (<structname>XLogRecPtr</>) instead of two 32-bit integers
1638 (Heikki Linnakangas)
1642 Generally, tools that need to read the <acronym>WAL</> format
1643 will need to be adjusted.
1649 Allow <link linkend="plpython">PL/Python</link> to support
1650 platform-specific include directories (Peter Eisentraut)
1656 Allow <link linkend="plpython">PL/Python</link> on <productname>OS
1657 X</> to build against custom versions of <application>Python</>
1667 <title>Additional Modules</title>
1673 Allow write-enabled <link
1674 linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data wrappers</link>
1675 to support writes (KaiGai Kohei)
1681 Add a <productname>Postgres</> <link linkend="postgres-fdw">foreign
1682 data wrapper</link> contrib module (Shigeru Hanada)
1686 This foreign data wrapper allows writes.
1692 Add <link linkend="pgxlogdump"><application>pg_xlogdump</></link>
1693 contrib program (Andres Freund)
1699 Add support for indexing of regular-expression searches in
1700 extension <link linkend="pgtrgm"><productname>pg_trgm</></link>
1701 (Alexander Korotkov)
1707 Improve <link linkend="pgtrgm"><productname>pg_trgm</></link>
1708 handling of multibyte characters (Tom Lane)
1714 Add <link linkend="pgstattuple">pgstattuple function</link> to report the
1715 size of the <type>GIN</> pending index insertion list (Fujii Masao)
1721 Have <link linkend="oid2name"><application>oid2name</></link>,
1722 <link linkend="pgbench"><application>pgbench</></link>, and
1723 <link linkend="vacuumlo"><application>vacuumlo</></link> set
1724 <varname>fallback_application_name</> (Amit Kapila)
1730 Improve output of <link
1731 linkend="pgtesttiming"><application>pg_test_timing</></link>
1738 Improve output of <link
1739 linkend="pgtestfsync"><application>pg_test_fsync</></link>
1746 Improve <link linkend="dblink">dblink</link> option validator
1758 <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
1764 Allow <application>pg_upgrade</> <option>--jobs</> to do
1765 parallelism (Bruce Momjian)
1769 This allows parallel schema dump/restore of databases, as well as
1770 parallel copy/link of data files per tablespace.
1776 Have <application>pg_upgrade</> create unix-domain sockets in
1777 the current directory (Bruce Momjian, Tom Lane)
1781 This reduces the possibility that someone will accidentally connect
1788 Have <application>pg_upgrade</> <option>--check</> mode properly
1789 detect the location of non-default socket directories (Bruce
1796 Improve performance of <application>pg_upgrade</> for databases
1797 with many tables (Bruce Momjian)
1803 Increase <application>pg_upgrade</> logging content by showing
1804 executed command (Álvaro Herrera)
1810 Improve <application>pg_upgrade</>'s status display during
1811 copy/link (Bruce Momjian)
1820 <title><link linkend="pgbench"><application>pgbench</></link></title>
1826 Add <option>--foreign-keys</> option to <application>pgbench</> (Jeff Janes)
1830 This adds foreign key constraints to tables, for use in foreign
1831 key performance testing.
1837 Allow <application>pgbench</> to aggregate performance statistics
1838 and produce output every <option>--aggregate-interval</> specified
1839 seconds (Tomas Vondra)
1845 Add <application>pg_bench</> <option>--sampling-rate</> option
1846 to control the percentage of transactions logged (Tomas Vondra)
1852 Reduce and improve the status message output of
1853 <application>pgbench</>'s initialization mode (Robert Haas,
1860 Add <application>pgbench</> <option>-q</> mode to print one output
1861 line every five seconds (Tomas Vondra)
1865 Output <application>pgbench</> elapsed and estimated remaining
1866 time during initialization logging (Tomas Vondra)
1872 Allow <application>pgbench</> to use a larger scale factor
1884 <title>Documentation</title>
1890 Allow <productname>EPUB</>-format documentation to be created
1897 Update <productname>FreeBSD</> kernel configuration documentation
1904 Improve <link linkend="tutorial-window"><literal>WINDOW</>
1905 function</link> documentation (Bruce Momjian, Tom Lane)
1911 Add <link linkend="docguide">instructions</link> for setting
1912 up the documentation tool chain on Mac <productname>OS X</>
1920 linkend="guc-commit-delay"><varname>commit_delay</></link>
1921 documentation (Peter Geoghegan)