]> granicus.if.org Git - postgresql/commitdiff
Update 9.4 release notes.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 14 Dec 2014 19:58:06 +0000 (14:58 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 14 Dec 2014 19:58:06 +0000 (14:58 -0500)
Set release date, do a final pass of wordsmithing, improve some other
new-in-9.4 documentation.

doc/src/sgml/datatype.sgml
doc/src/sgml/plpgsql.sgml
doc/src/sgml/release-9.4.sgml

index 223ba6ade8e78df770df1580d15a2d937fa73db2..3a565e8d786cb2730cfb82e06b53d3cbc1b8caa7 100644 (file)
@@ -3180,9 +3180,10 @@ SELECT person.name, holidays.num_weeks FROM person, holidays
     </indexterm>
 
     <para>
-     Lines (<type>line</type>) are represented by the linear equation Ax + By
-     + C = 0, where A and B are not both zero.  Values of
-     type <type>line</type> is input and output in the following form:
+     Lines are represented by the linear
+     equation <replaceable>A</>x + <replaceable>B</>y + <replaceable>C</> = 0,
+     where <replaceable>A</> and <replaceable>B</> are not both zero.  Values
+     of type <type>line</type> are input and output in the following form:
 <synopsis>
 { <replaceable>A</replaceable>, <replaceable>B</replaceable>, <replaceable>C</replaceable> }
 </synopsis>
@@ -3200,7 +3201,7 @@ SELECT person.name, holidays.num_weeks FROM person, holidays
      <literal>(<replaceable>x1</replaceable>,<replaceable>y1</replaceable>)</literal>
      and
      <literal>(<replaceable>x2</replaceable>,<replaceable>y2</replaceable>)</literal>
-     are two (different) points on the line.
+     are two different points on the line.
     </para>
    </sect2>
 
@@ -3216,9 +3217,9 @@ SELECT person.name, holidays.num_weeks FROM person, holidays
     </indexterm>
 
     <para>
-     Line segments (<type>lseg</type>) are represented by pairs of points.
-     Values of type <type>lseg</type> are specified using any of the following
-     syntaxes:
+     Line segments are represented by pairs of points that are the endpoints
+     of the segment.  Values of type <type>lseg</type> are specified using any
+     of the following syntaxes:
 
 <synopsis>
 [ ( <replaceable>x1</replaceable> , <replaceable>y1</replaceable> ) , ( <replaceable>x2</replaceable> , <replaceable>y2</replaceable> ) ]
index e0a266807982974569d7626d5470fe4e7db6ead0..5db6610aa29e4be5bc150e2da18040ecf2685a4b 100644 (file)
@@ -1078,15 +1078,26 @@ END;
      always sets <literal>FOUND</literal> to true.
     </para>
 
+    <para>
+     For <command>INSERT</>/<command>UPDATE</>/<command>DELETE</> with
+     <literal>RETURNING</>, <application>PL/pgSQL</application> reports
+     an error for more than one returned row, even when
+     <literal>STRICT</literal> is not specified.  This is because there
+     is no option such as <literal>ORDER BY</> with which to determine
+     which affected row should be returned.
+    </para>
+
     <para>
      If <literal>print_strict_params</> is enabled for the function,
-     you will get information about the parameters passed to the
-     query in the <literal>DETAIL</> part of the error message produced
-     when the requirements of STRICT are not met.  You can change this
-     setting on a system-wide basis by setting
+     then when an error is thrown because the requirements
+     of <literal>STRICT</> are not met, the <literal>DETAIL</> part of
+     the error message will include information about the parameters
+     passed to the query.
+     You can change the <literal>print_strict_params</>
+     setting for all functions by setting
      <varname>plpgsql.print_strict_params</>, though only subsequent
      function compilations will be affected.  You can also enable it
-     on a per-function basis by using a compiler option:
+     on a per-function basis by using a compiler option, for example:
 <programlisting>
 CREATE FUNCTION get_userid(username text) RETURNS int
 AS $$
@@ -1100,15 +1111,12 @@ BEGIN
 END
 $$ LANGUAGE plpgsql;
 </programlisting>
-    </para>
-
-    <para>
-     For <command>INSERT</>/<command>UPDATE</>/<command>DELETE</> with
-     <literal>RETURNING</>, <application>PL/pgSQL</application> reports
-     an error for more than one returned row, even when
-     <literal>STRICT</literal> is not specified.  This is because there
-     is no option such as <literal>ORDER BY</> with which to determine
-     which affected row should be returned.
+     On failure, this function might produce an error message such as
+<programlisting>
+ERROR:  query returned no rows
+DETAIL:  parameters: $1 = 'nosuchuser'
+CONTEXT:  PL/pgSQL function get_userid(text) line 6 at SQL statement
+</programlisting>
     </para>
 
     <note>
@@ -2767,28 +2775,36 @@ END;
   </sect2>
 
   <sect2 id="plpgsql-get-diagnostics-context">
-   <title>Obtaining the Call Stack Context Information</title>
+   <title>Obtaining Current Execution Information</title>
+
+   <para>
+    The <command>GET <optional> CURRENT </optional> DIAGNOSTICS</command>
+    command retrieves information about current execution state (whereas
+    the <command>GET STACKED DIAGNOSTICS</command> command discussed above
+    reports information about the execution state as of a previous error).
+    This command has the form:
+   </para>
 
 <synopsis>
-GET <optional> CURRENT </optional> DIAGNOSTICS <replaceable>variable</replaceable> { = | := } <replaceable>PG_CONTEXT</replaceable> <optional> , ... </optional>;
+GET <optional> CURRENT </optional> DIAGNOSTICS <replaceable>variable</replaceable> { = | := } <replaceable>item</replaceable> <optional> , ... </optional>;
 </synopsis>
 
    <para>
-    Calling <command>GET DIAGNOSTICS</command> with status
-    item <varname>PG_CONTEXT</> will return a text string with line(s) of
-    text describing the call stack.  The first row refers to the
+    Currently only one information item is supported.  Status
+    item <literal>PG_CONTEXT</> will return a text string with line(s) of
+    text describing the call stack.  The first line refers to the
     current function and currently executing <command>GET DIAGNOSTICS</command>
-    command.  The second and any subsequent rows refer to the calling functions
-    up the call stack.
+    command.  The second and any subsequent lines refer to calling functions
+    further up the call stack.  For example:
 
 <programlisting>
-CREATE OR REPLACE FUNCTION public.outer_func() RETURNS integer AS $$
+CREATE OR REPLACE FUNCTION outer_func() RETURNS integer AS $$
 BEGIN
   RETURN inner_func();
 END;
 $$ LANGUAGE plpgsql;
 
-CREATE OR REPLACE FUNCTION public.inner_func() RETURNS integer AS  $$
+CREATE OR REPLACE FUNCTION inner_func() RETURNS integer AS $$
 DECLARE
   stack text;
 BEGIN
@@ -2801,8 +2817,9 @@ $$ LANGUAGE plpgsql;
 SELECT outer_func();
 
 NOTICE:  --- Call Stack ---
-PL/pgSQL function inner_func() line 4 at GET DIAGNOSTICS
+PL/pgSQL function inner_func() line 5 at GET DIAGNOSTICS
 PL/pgSQL function outer_func() line 3 at RETURN
+CONTEXT:  PL/pgSQL function outer_func() line 3 at RETURN
  outer_func
  ------------
            1
index 9bbf95304388fc9b6962947cf68c5a5e570859e1..961e4617978e965ab065ee368c28e0efc23f15f4 100644 (file)
@@ -6,9 +6,7 @@
 
   <note>
    <title>Release Date</title>
-   <simpara>2014-??-??</simpara>
-   <simpara>Current as of 2014-11-17</simpara>
-   <!-- Be sure to remove "delta from 9.4beta" items below before final! -->
+   <simpara>2014-12-18</simpara>
   </note>
 
   <sect2>
 
      <listitem>
       <para>
-       Allow <link linkend="rules-materializedviews">materialized views</>
-       to be refreshed without blocking reads
+       Add <link linkend="datatype-json"><type>jsonb</></link>, a more
+       capable and efficient data type for storing <acronym>JSON</> data
       </para>
      </listitem>
 
      <listitem>
       <para>
-       Add support for <link linkend="logicaldecoding">logical decoding</>
-       of WAL data, to allow database changes to be streamed out in a
-       customizable format
+       Add new <acronym>SQL</> command <xref linkend="SQL-ALTERSYSTEM">
+       for changing <filename>postgresql.conf</> configuration file entries
       </para>
      </listitem>
 
      <listitem>
       <para>
-        Allow <link linkend="bgworker">background worker processes</>
-        to be dynamically registered, started and terminated
+       Reduce lock strength for some <xref linkend="SQL-ALTERTABLE">
+       commands
       </para>
      </listitem>
 
      <listitem>
       <para>
-       Add <link linkend="datatype-json"><type>jsonb</></link>, a more
-       capable and efficient data type for storing <acronym>JSON</> data
+       Allow <link linkend="rules-materializedviews">materialized views</>
+       to be refreshed without blocking concurrent reads
       </para>
      </listitem>
 
      <listitem>
       <para>
-       Add new <acronym>SQL</> command <xref linkend="SQL-ALTERSYSTEM">
-       for updating <filename>postgresql.conf</> configuration file entries
+       Add support for <link linkend="logicaldecoding">logical decoding</>
+       of WAL data, to allow database changes to be streamed out in a
+       customizable format
       </para>
      </listitem>
 
      <listitem>
       <para>
-       Reduce lock strength for some <xref linkend="SQL-ALTERTABLE">
-       commands
+        Allow <link linkend="bgworker">background worker processes</>
+        to be dynamically registered, started and terminated
       </para>
      </listitem>
 
 
    <itemizedlist>
 
-    <!-- delta from 9.4beta2, be sure to remove before final: -->
-    <listitem>
-     <para>
-      Change on-disk format of <type>jsonb</> data
-      (Heikki Linnakangas and Tom Lane)
-     </para>
-
-     <para>
-      The on-disk representation was changed after 9.4beta2 to improve
-      efficiency.  <application>pg_upgrade</> will refuse to upgrade any
-      9.4beta1 or 9.4beta2 database containing <type>jsonb</> columns; you
-      will need to use <application>pg_dumpall</> instead to migrate such
-      databases.
-     </para>
-    </listitem>
-
-    <!-- delta from 9.4beta3, be sure to remove before final: -->
-    <listitem>
-     <para>
-      Fix representation of numeric values in <type>jsonb</> GIN indexes
-      (Tom Lane)
-     </para>
-
-     <para>
-      Numeric items within <type>jsonb</> values are converted to strings
-      for storage in GIN <literal>jsonb_ops</> indexes.  In 9.4beta3,
-      trailing zeroes in such items were mishandled.  Beta testers
-      should <command>REINDEX</> any such indexes after upgrading, to ensure
-      that searches for numeric values will find the expected rows.  Note
-      that <literal>jsonb_path_ops</> indexes were not affected by this bug.
-     </para>
-    </listitem>
-
     <listitem>
      <para>
       Tighten checks for multidimensional <link
 
      <para>
       Previously, an input array string that started with a single-element
-      array dimension could later contain multidimensional segments,
-      e.g. <literal>'{{1}, {2,3}}'::int[]</>.
+      sub-array could later contain multi-element sub-arrays,
+      e.g. <literal>'{{1}, {2,3}}'::int[]</> would be accepted.
      </para>
     </listitem>
 
     <listitem>
      <para>
       The <link linkend="functions-json-op-table"><type>json</type>
-      <literal>#&gt;</> <type>text[]</> path extraction operator</link> now
+      <literal>#&gt;</> <type>text[]</></link> path extraction operator now
       returns its lefthand input, not NULL, if the array is empty (Tom Lane)
      </para>
 
 
     <listitem>
      <para>
-      Use the last specified <xref linkend="recovery-target"> if multiple
-      values are specified (Heikki Linnakangas)
+      Use the last specified <link linkend="recovery-target-settings">recovery
+      target parameter</link> if multiple target parameters are specified
+      (Heikki Linnakangas)
+     </para>
+
+     <para>
+      Previously, there was an undocumented precedence order among
+      the <literal>recovery_target_<replaceable>xxx</></literal> parameters.
      </para>
     </listitem>
 
      </para>
     </listitem>
 
-    <!-- delta from 9.4beta2, be sure to remove before final: -->
-    <listitem>
-     <para>
-      Update time zone data files to tzdata release 2014j for DST law
-      changes in Russia and elsewhere
-     </para>
-
-     <para>
-      This change is more significant than most time zone updates because
-      many Russian zone abbreviations are changing meaning, including IRKT,
-      KRAT, MAGT, MSK, NOVT, OMST, SAKT, VLAT, YAKT, and YEKT.
-      <productname>PostgreSQL</> will now associate the correct UTC offset
-      with these abbreviations depending on the given date.  Also, IANA
-      has formally recognized abbreviations of the form
-      A<replaceable>x</>ST/A<replaceable>x</>DT for Australian timezones,
-      so adopt those names as part of the <quote>Default</> abbreviation
-      set in <productname>PostgreSQL</>.  The <quote>Australia</>
-      abbreviation set now need be selected only if it's desired to use
-      historical abbreviations that conflict with abbreviations commonly
-      used elsewhere, such as EST or SAST.
-     </para>
-    </listitem>
-
    </itemizedlist>
 
   </sect2>
        </para>
 
        <para>
-        The <filename>contrib/worker_spi</> module shows an example of use
+        The new <filename>worker_spi</> module shows an example of use
         of this feature.
        </para>
       </listitem>
        </para>
 
        <para>
-        This feature is illustrated in <xref linkend="test-shm-mq">.
+        This feature is illustrated in the <filename>test_shm_mq</filename>
+        module.
        </para>
       </listitem>
 
        <para>
         Indexes upgraded via <xref linkend="pgupgrade"> will work fine
         but will still be in the old, larger <acronym>GIN</> format.
-        Use <xref linkend="SQL-REINDEX"> to recreate such an index in the
+        Use <xref linkend="SQL-REINDEX"> to recreate old GIN indexes in the
         new format.
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve speed of <xref linkend="SQL-COPY">
-        with <literal>DEFAULT</> <link
+        Improve speed of <xref linkend="SQL-COPY"> with default <link
         linkend="functions-sequence-table"><function>nextval()</></link>
         columns (Simon Riggs)
        </para>
 
       <listitem>
        <para>
-        Make the planner more aggressive in extracting restriction clauses
+        Make the planner more aggressive about extracting restriction clauses
         from mixed <literal>AND</>/<literal>OR</> clauses (Tom Lane)
        </para>
       </listitem>
       <listitem>
        <para>
         Add new <acronym>SQL</> command <xref linkend="SQL-ALTERSYSTEM">
-        for updating <filename>postgresql.conf</> configuration file entries
+        for changing <filename>postgresql.conf</> configuration file entries
         (Amit Kapila)
        </para>
 
 
        <para>
         The previous level was <literal>LOG</>, which was too verbose
-        for per-session libraries.
+        for libraries loaded per-session.
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Add <link linkend="recovery-config"><filename>recovery.conf</></link>
-        parameter <xref linkend="recovery-min-apply-delay">
+        Add recovery parameter <xref linkend="recovery-min-apply-delay">
         to delay replication (Robert Haas, Fabr&iacute;zio de Royes Mello,
         Simon Riggs)
        </para>
       <listitem>
        <para>
         Add <link linkend="queries-tablefunctions"><literal>WITH
-        ORDINALITY</></link> syntax to number rows returned from
-        set-returning functions in the <literal>FROM</> clause
+        ORDINALITY</></link> syntax to number the rows returned from a
+        set-returning function in the <literal>FROM</> clause
         (Andrew Gierth, David Fetter)
        </para>
 
 
       <listitem>
        <para>
-        Allow <link linkend="rules-materializedviews">materialized views</>
-        to be refreshed without blocking reads
-        (Kevin Grittner)
+        Allow a <link linkend="rules-materializedviews">materialized view</>
+        to be refreshed without blocking other sessions from reading the view
+        meanwhile (Kevin Grittner)
        </para>
 
        <para>
        <para>
         The line <emphasis>segment</> data type (<link
         linkend="datatype-lseg"><type>lseg</></link>) has always been
-        fully supported.  The previous <type>line</> data type (enabled
-        only via a compile-time option) is not binary or dump-compatible.
+        fully supported.  The previous <type>line</> data type (which was
+        enabled only via a compile-time option) is not binary or
+        dump-compatible with the new implementation.
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Support time zone abbreviations that change from time to time
-        (Tom Lane)
+        Support time zone abbreviations that change UTC offset from time to
+        time (Tom Lane)
        </para>
 
        <para>
         Update the zone abbreviation definition files to make use of this
         feature in timezone locales that have changed the UTC offset of their
         abbreviations since 1970 (according to the IANA timezone database).
+        In such timezones, <productname>PostgreSQL</> will now associate the
+        correct UTC offset with the abbreviation depending on the given date.
        </para>
       </listitem>
 
         </para>
 
         <para>
-         This new type allows faster access to values in a JSON
-         document and faster and more useful indexing of JSON columns.
+         This new type allows faster access to values within a JSON
+         document, and faster and more useful indexing of JSON columns.
          Scalar values in <type>jsonb</> documents are stored as appropriate
          scalar SQL types, and the JSON document structure is pre-parsed
          rather than being stored as text as in the original <type>json</>
       <listitem>
        <para>
         Add control over which rows are passed
-        into aggregate functions using the <link
+        into aggregate functions via the <link
         linkend="syntax-aggregates"><literal>FILTER</></link> clause
         (David Fetter)
        </para>
 
       <listitem>
        <para>
-        Add aggregates <link
+        Add standard ordered-set aggregates <link
         linkend="functions-orderedset-table"><function>percentile_cont()</></link>,
         <function>percentile_disc()</>, <function>mode()</>, <link
         linkend="functions-hypothetical-table"><function>rank()</></link>,
         types (Tom Lane)
        </para>
        <para>
-        This allows proper declaration of aggregates like the built-in
-        aggregate <function>array_agg()</> in SQL.
+        This allows proper declaration in SQL of aggregates like the built-in
+        aggregate <function>array_agg()</>.
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Add ability to store the PL/PgSQL
-        call stack into a variable using <link
-        linkend="plpgsql-get-diagnostics-context"><literal>PG_CONTEXT</></link>
+        Add ability to retrieve the current PL/PgSQL call stack
+        using <link linkend="plpgsql-get-diagnostics-context"><command>GET
+        DIAGNOSTICS</></link>
         (Pavel Stehule, Stephen Frost)
        </para>
       </listitem>
       <listitem>
        <para>
         Add option <link
-        linkend="plpgsql-statements-assignment"><option>print_strict_params</></link>
-        to output parameters passed to queries generating <link
-        linkend="plpgsql-statements-sql-onerow"><literal>STRICT</></link>
-        errors (Marko Tiikkaja)
+        linkend="plpgsql-statements-sql-onerow"><option>print_strict_params</></link>
+        to display the parameters passed to a query that violated a
+        <literal>STRICT</> constraint (Marko Tiikkaja)
        </para>
       </listitem>
 
        </para>
 
        <para>
-        Currently only shadowed variable errors/warnings are available.
+        Currently only warnings/errors about shadowed variables are available.
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Allow Control-C to abort <application>psql</> when hung at connection
-        startup (Peter Eisentraut)
+        Allow Control-C to abort <application>psql</> when it's hung at
+        connection startup (Peter Eisentraut)
        </para>
       </listitem>
 
 
        <listitem>
         <para>
-         Make <application>psql</> <command>\db+</> show tablespace options
+         Make <application>psql</>'s <command>\db+</> show tablespace options
          (Magnus Hagander)
         </para>
        </listitem>
 
        <listitem>
         <para>
-         Make <application>psql</> <command>\do+</> display the functions
-         which implement the operators (Marko Tiikkaja)
+         Make <command>\do+</> display the functions
+         that implement the operators (Marko Tiikkaja)
         </para>
        </listitem>
 
        <listitem>
         <para>
-         Make <application>psql</> <command>\d+</> output an
+         Make <command>\d+</> output an
          <literal>OID</> line only if an <literal>oid</literal> column
-         exists in a table (Bruce Momjian)
+         exists in the table (Bruce Momjian)
         </para>
 
         <para>
 
        <listitem>
         <para>
-         Fix <application>psql</> <command>\copy</> to no longer require
+         Fix <command>\copy</> to no longer require
          a space between <literal>stdin</> and a semicolon (Etsuro Fujita)
         </para>
        </listitem>
 
        <listitem>
         <para>
-         Output the row count at the end
-         of <application>psql</> <command>\copy</> just
-         like <xref linkend="SQL-COPY"> (Kumar Rajeev Rastogi)
+         Output the row count at the end of <command>\copy</>, just
+         like <command>COPY</> already did (Kumar Rajeev Rastogi)
         </para>
        </listitem>
 
        <listitem>
         <para>
-         Fix <application>psql</> <command>\conninfo</> to display the
-         server's <acronym>IP</> address for clients that connect using
+         Fix <command>\conninfo</> to display the
+         server's <acronym>IP</> address for connections using
          <literal>hostaddr</> (Fujii Masao)
         </para>
 
 
        <listitem>
         <para>
-         Mention the <acronym>SSL</> protocol version in
-         <application>psql</>'s <command>\conninfo</> (Marko Kreen)
+         Show the <acronym>SSL</> protocol version in
+         <command>\conninfo</> (Marko Kreen)
         </para>
        </listitem>
 
        <listitem>
         <para>
-         Add <application>psql</> tab completion for <command>\pset</>
+         Add tab completion for <command>\pset</>
          (Pavel Stehule)
         </para>
        </listitem>
 
        <listitem>
         <para>
-         Allow <application>psql</>'s <command>\pset</> with no arguments
+         Allow <command>\pset</> with no arguments
          to show all settings (Gilles Darold)
         </para>
        </listitem>
 
        <listitem>
         <para>
-         In <application>psql</>, display the history file name written by
-         <command>\s</> without converting it to an absolute path (Tom Lane)
+         Make <command>\s</> display the name of the history file it wrote
+         without converting it to an absolute path (Tom Lane)
         </para>
 
         <para>
         Currently, these tests are run by <literal>make check-world</>
         only if the <option>--enable-tap-tests</> option was given
         to <application>configure</>.
-        This might become the default in some future release.
+        This might become the default behavior in some future release.
        </para>
       </listitem>
 
       <listitem>
        <para>
         Improve support for <envar>VPATH</> builds of <acronym>PGXS</>
-        modules  (C&eacute;dric Villemain, Andrew Dunstan)
+        modules  (C&eacute;dric Villemain, Andrew Dunstan, Peter Eisentraut)
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Various minor security and sanity fixes reported by the
+        Fix various minor security and sanity issues reported by the
         <productname>Coverity</> scanner (Stephen Frost)
        </para>
       </listitem>
 
       <listitem>
        <para>
-        Improve <application>Valgrind</> detection of invalid memory usage
+        Improve detection of invalid memory usage when testing
+        <productname>PostgreSQL</> with <application>Valgrind</>
         (Noah Misch)
        </para>
       </listitem>
         Allow <application>pgindent</> to accept a command-line list
         of typedefs (Bruce Momjian)
        </para>
+      </listitem>
 
+      <listitem>
        <para>
-        <application>pgindent</> is also now smarter about blank lines
-        around preprocessor conditionals.
+        Make <application>pgindent</> smarter about blank lines
+        around preprocessor conditionals (Bruce Momjian)
        </para>
       </listitem>
 
       <listitem>
        <para>
         Improve <xref linkend="pgtrgm">'s choice of trigrams for indexed
-        regular expression searches by discouraging the selection of
-        trigrams containing whitespace (Alexander Korotkov)
+        regular expression searches (Alexander Korotkov)
+       </para>
+
+       <para>
+        This change discourages use of trigrams containing whitespace, which
+        are usually less selective.
        </para>
       </listitem>
 
 
       <listitem>
        <para>
-        Pass <xref linkend="pgupgrade"> user name (<option>-U</> option) to
-        analyze scripts (Bruce Momjian)
+        Pass <xref linkend="pgupgrade">'s user name (<option>-U</>) option to
+        generated analyze scripts (Bruce Momjian)
        </para>
       </listitem>