Skip to content
Snippets Groups Projects
release-9.2.sgml 310 KiB
Newer Older
    </itemizedlist>

    </sect4>

    <sect4>
     <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>

     <itemizedlist>

      <listitem>
       <para>
        Add PL/Python <acronym>SPI</acronym> cursor support (Jan
       <para>
        This allows PL/Python to read partial result sets.
       </para>
      </listitem>

      <listitem>
       <para>
        Add result metadata functions to PL/Python (Peter Eisentraut)
        Specifically, this adds result object functions
        <literal>.colnames</literal>, <literal>.coltypes</literal>, and
        <literal>.coltypmods</literal>.
      <listitem>
       <para>
        Remove support for Python 2.2 (Peter Eisentraut)
       </para>
      </listitem>

     </itemizedlist>

    </sect4>

    <sect4>
     <title><link linkend="xfunc-sql">SQL</link> Server-Side Language</title>

     <itemizedlist>
      <listitem>
       <para>
        Allow <acronym>SQL</acronym>-language functions to reference
        parameters by name (Matthew Draper)
        To use this, simply name the function arguments and then reference
        the argument names in the <acronym>SQL</acronym> function body.
       </para>
      </listitem>

    </sect4>

   </sect3>

   <sect3>
    <title>Client Applications</title>

    <itemizedlist>

      <listitem>
       <para>
        Add <link linkend="APP-INITDB"><application>initdb</></link>
        options <option>--auth-local</> and <option>--auth-host</>
        This allows separate control of <literal>local</> and
        <literal>host</> <filename>pg_hba.conf</filename> authentication
        settings.  <option>--auth</> still controls both.
       </para>
      </listitem>
      <listitem>
       <para>
        Add <option>--replication</>/<option>--no-replication</> flags to
        <link linkend="APP-CREATEUSER"><application>createuser</></link>
        to control replication permission (Fujii Masao)
      <listitem>
       <para>
        Add the <option>--if-exists</> option to <link
        linkend="APP-DROPDB"><application>dropdb</></link> and <link
        linkend="APP-DROPUSER"><application>dropuser</></link> (Josh
        Kupershmidt)
       </para>
      </listitem>
      <listitem>
       <para>
        Give command-line tools the ability to specify the name of the
        database to connect to, and fall back to <literal>template1</>
        if a <literal>postgres</> database connection fails (Robert Haas)
       </para>
      </listitem>
    </itemizedlist>

    <sect4>
     <title><link linkend="APP-PSQL"><application>psql</></link></title>

     <itemizedlist>

      <listitem>
       <para>
        Add a display mode to auto-expand output based on the
        display width (Peter Eisentraut)
       <para>
        This adds the <literal>auto</> option to the <command>\x</>
        command, which switches to the expanded mode when the normal
        output would be wider than the screen.
       </para>
      </listitem>
        Allow inclusion of a script file that is named relative to the
        directory of the file from which it was invoked (Gurjeet Singh)
        This is done with a new command <command>\ir</>.
      <listitem>
       <para>
        Add support for non-<acronym>ASCII</acronym> characters in
        <application>psql</> variable names (Tom Lane)
       </para>
      </listitem>
      <listitem>
       <para>
        Add support for major-version-specific <filename>.psqlrc</> files
        (Bruce Momjian)
       </para>
        <application>psql</> already supported minor-version-specific
        <filename>.psqlrc</> files.
      <listitem>
       <para>
        Provide environment variable overrides for <application>psql</>
        history and startup file locations (Andrew Dunstan)
       </para>
        <envar>PSQL_HISTORY</envar> and <envar>PSQLRC</envar> now
        determine these file names if set.
        Add a <command>\setenv</> command to modify
        the environment variables passed to child processes (Andrew Dunstan)
        Name <application>psql</>'s temporary editor files with a
        <filename>.sql</> extension (Peter Eisentraut)
       </para>

       <para>
        This allows extension-sensitive editors to select the right mode.
       </para>
        Allow <application>psql</> to use zero-byte field and record
        separators (Peter Eisentraut)
        Various shell tools use zero-byte (NUL) separators,
        e.g. <application>find</>.
        Make the <command>\timing</> option report times for
        failed queries (Magnus Hagander)
       </para>
        Previously times were reported only for successful queries.
        Unify and tighten <application>psql</>'s treatment of <command>\copy</>
        and SQL <command>COPY</> (Noah Misch)
        This fix makes failure behavior more predictable and honors
        <command>\set ON_ERROR_ROLLBACK</>.
     </itemizedlist>

    </sect4>

    <sect4>
     <title>Informational Commands</title>

     <itemizedlist>
      <listitem>
       <para>
        Make <command>\d</> on a sequence show the
        table/column name owning it (Magnus Hagander)
       </para>
      </listitem>
        Show statistics target for columns in <command>\d+</> (Magnus
        Hagander)
        Show role password expiration dates in <command>\du</>
        (Fabr&iacute;zio de Royes Mello)
        Display comments for casts, conversions, domains, and languages
        (Josh Kupershmidt)
        These are included in the output of <command>\dC+</>,
        <command>\dc+</>, <command>\dD+</>, and <command>\dL</> respectively.
        Display comments for <acronym>SQL</acronym>/<acronym>MED</acronym>
        objects (Josh Kupershmidt)
        These are included in the output of <command>\des+</>,
        <command>\det+</>, and <command>\dew+</> for foreign servers, foreign
        tables, and foreign data wrappers respectively.
        Change <command>\dd</> to display comments only for object types
        without their own backslash command (Josh Kupershmidt)
     </itemizedlist>

    </sect4>

    <sect4>
     <title>Tab Completion</title>

     <itemizedlist>

      <listitem>
       <para>
        In <application>psql</> tab completion, complete <acronym>SQL</>
        keywords in either upper or lower case according to the new <link
        linkend="APP-PSQL-variables"><literal>COMP_KEYWORD_CASE</></link>
        setting (Peter Eisentraut)
        Add tab completion support for
        <command>EXECUTE</command> (Andreas Karlsson)
      <listitem>
       <para>
        Allow tab completion of role references in
        <command>GRANT</command>/<command>REVOKE</command> (Peter
      <listitem>
       <para>
        Allow tab completion of file names to supply quotes, when necessary
        (Noah Misch)
       </para>
      </listitem>
        Change tab completion support for
        <command>TABLE</command> to also include views (Magnus Hagander)
     </itemizedlist>

    </sect4>

    <sect4>
     <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>

     <itemizedlist>

      <listitem>
       <para>
        Add an <option>--exclude-table-data</> option to
        <application>pg_dump</> (Andrew Dunstan)
       </para>
       <para>
        This allows dumping of a table's definition but not its data,
        on a per-table basis.
       </para>
      </listitem>
      <listitem>
       <para>
        Add a <option>--section</> option to <application>pg_dump</>
        and <application>pg_restore</> (Andrew Dunstan)
       <para>
        Valid values are <literal>pre-data</>, <literal>data</>,
        and <literal>post-data</>. The option can be
        given more than once to select two or more sections.
        linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link> dump all
        roles first, then all configuration settings on roles (Phil Sorber)
       </para>
        This allows a role's configuration settings to mention other
        roles without generating an error.
       </para>
      </listitem>
      <listitem>
       <para>
        Allow <application>pg_dumpall</> to avoid errors if the
        <literal>postgres</> database is missing in the new cluster
        (Robert Haas)
       </para>
      </listitem>
      <listitem>
       <para>
        Dump foreign server user mappings in user name order (Peter
        Eisentraut)
       </para>
       <para>
        This helps produce deterministic dump files.
       </para>
      </listitem>
      <listitem>
       <para>
        Dump operators in a predictable order (Peter Eisentraut)
       </para>
      </listitem>
      <listitem>
       <para>
        Tighten rules for when extension configuration tables are dumped
        by <application>pg_dump</> (Tom Lane)
       </para>
      </listitem>

      <listitem>
       <para>
        Make <application>pg_dump</> emit more useful dependency
        information (Tom Lane)
       </para>

       <para>
        The dependency links included in archive-format dumps were formerly
        of very limited use, because they frequently referenced objects that
        appeared nowhere in the dump.  Now they represent actual dependencies
        (possibly indirect) among the dumped objects.
       </para>
      </listitem>

      <listitem>
       <para>
        Improve <application>pg_dump</>'s performance when dumping many
        database objects (Tom Lane)
       </para>
      </listitem>

     </itemizedlist>

    </sect4>

   </sect3>

    <sect3>
     <title><link linkend="libpq"><application>libpq</></link></title>

     <itemizedlist>

      <listitem>
       <para>
        Allow <application>libpq</> connection strings to have the format of a
        <link linkend="libpq-connstring"><acronym>URI</acronym></link>
        (Alexander Shulgin)
        The syntax begins with <literal>postgres://</>.  This can allow
        applications to avoid implementing their own parser for URIs
        representing database connections.
        Add a <link linkend="libpq-connect-sslcompression">connection
        option</link> to disable <acronym>SSL</acronym> compression
        (Laurenz Albe)
       <para>
        This can be used to remove the overhead of <acronym>SSL</acronym>
        compression on fast networks.
       </para>
      </listitem>
        Add a <link linkend="libpq-single-row-mode">single-row processing
        mode</link> for better handling of large result sets
        (Kyotaro Horiguchi, Marko Kreen)
        Previously, <application>libpq</> always collected the entire query
        result in memory before passing it back to the application.
        Add <literal>const</> qualifiers to the declarations of the functions
        <function>PQconnectdbParams</>, <function>PQconnectStartParams</>,
        and <function>PQpingParams</> (Lionel Elie Mamane)
        Allow the <filename>.pgpass</> file to include escaped characters
        in the password field (Robert Haas)
        Make library functions use <function>abort()</> instead of
        <function>exit()</> when it is necessary to terminate the process
        (Peter Eisentraut)
        This choice does not interfere with the normal exit codes used by the
        program, and generates a signal that can be caught by the caller.
       </para>
      </listitem>
     </itemizedlist>

   </sect3>

   <sect3>
    <title>Source Code</title>

     <itemizedlist>

      <listitem>
       <para>
        Remove dead ports (Peter Eisentraut)
       </para>

       <para>
        The following platforms are no longer supported: dgux,
        nextstep, sunos4, svr4, ultrix4, univel, bsdi.
       </para>
      </listitem>

      <listitem>
       <para>
        Add support for building with <link linkend="install-windows">MS
        Visual Studio 2010</link> (Brar Piening)
        Enable compiling with the MinGW-w64 32-bit compiler (Lars Kanis)
        Install <filename>plpgsql.h</> into <filename>include/server</> during installation
        (Heikki Linnakangas)
       </para>
      </listitem>
      <listitem>
       <para>
        Improve the latch facility to include detection of postmaster death
        (Peter Geoghegan, Heikki Linnakangas, Tom Lane)
       </para>

       <para>
        This eliminates one of the main reasons that background processes
        formerly had to wake up to poll for events.
       </para>
      </listitem>

      <listitem>
       <para>
        Use C flexible array members, where supported (Peter Eisentraut)
       </para>
      </listitem>
      <listitem>
       <para>
        Improve the concurrent transaction regression tests
        (<application>isolationtester</>) (Noah Misch)
      <listitem>
       <para>
        Modify <application>thread_test</> to create its test files in
        the current directory, rather than <filename>/tmp</> (Bruce Momjian)
        Improve flex and bison warning and error reporting (Tom Lane)
      <listitem>
       <para>
        Add memory barrier support (Robert Haas)
       </para>
        This is currently unused.
      <listitem>
       <para>
        Modify pgindent to use a typedef file (Bruce Momjian)
       </para>
      </listitem>
      <listitem>
       <para>
        Add a hook for processing messages due to be sent to the server
      <listitem>
       <para>
        Add object access hooks for <command>DROP</command> commands
        (KaiGai Kohei)
       </para>
      </listitem>
      <listitem>
       <para>
        Centralize <command>DROP</command> handling for some object types
        (KaiGai Kohei)
       </para>
      </listitem>
      <listitem>
       <para>
        Add a <application>pg_upgrade</> test suite (Peter Eisentraut)
       </para>
      </listitem>
      <listitem>
       <para>
        Sync regular expression code with <acronym>TCL</acronym> 8.5.11
        and improve internal processing (Tom Lane)
       </para>
      </listitem>
      <listitem>
       <para>
        Move <acronym>CRC</acronym> tables to libpgport, and provide them
        in a separate include file (Daniel Farina)
      <listitem>
       <para>
        Add options to <application>git_changelog</> for use in major
        release note creation (Bruce Momjian)
       </para>
      </listitem>
        Support Linux's <filename>/proc/self/oom_score_adj</> API (Tom Lane)
    <title>Additional Modules</title>
        Improve efficiency of <link linkend="dblink">dblink</link> by using
        libpq's new single-row processing mode (Kyotaro Horiguchi, Marko
        Kreen)
        This improvement does not apply to
        <function>dblink_send_query()</>/<function>dblink_get_result()</>.
       </para>
      </listitem>
        Support <literal>force_not_null</> option in <link
        linkend="file-fdw">file_fdw</link> (Shigeru Hanada)
      <listitem>
       <para>
        Implement dry-run mode for <link
        linkend="pgarchivecleanup"><application>pg_archivecleanup</></link>
       <para>
        This only outputs the names of files to be deleted.
       </para>
      </listitem>
        Add new <link linkend="pgbench">pgbench</link> switches
        <option>--unlogged-tables</>, <option>--tablespace</>, and
        <option>--index-tablespace</> (Robert Haas)
       </para>
      </listitem>
      <listitem>
       <para>
        Change <link
        linkend="pgtestfsync"><application>pg_test_fsync</></link> to test
        for a fixed amount of time, rather than a fixed number of cycles
        (Bruce Momjian)
       </para>
       <para>
        The <option>-o</>/cycles option was removed, and
        <option>-s</>/seconds added.
       </para>
      </listitem>
      <listitem>
       <para>
        Add a <link
        linkend="pgtesttiming"><application>pg_test_timing</></link>
        utility to measure clock monotonicity and timing overhead (Ants
        Aasma, Greg Smith)
       </para>
      </listitem>
      <listitem>
       <para>
        Add a <link linkend="tcn">tcn</link> (triggered change notification)
        module to generate <command>NOTIFY</command> events on table changes
        (Kevin Grittner)
       </para>
      </listitem>

    </itemizedlist>

    <sect4>
     <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>

     <itemizedlist>

      <listitem>
       <para>
        Adjust <application>pg_upgrade</> environment variables (Bruce
        Momjian)
       </para>

       <para>
        Rename data, bin, and port environment
        variables to begin with <literal>PG</>, and support
        <envar>PGPORTOLD</envar>/<envar>PGPORTNEW</envar>, to replace
        <envar>PGPORT</envar>.
        Overhaul <application>pg_upgrade</> logging and failure reporting
        Create four append-only log files, and delete them on success.
        Add <option>-r</>/<option>--retain</> option to unconditionally
        retain these files.  Also remove <application>pg_upgrade</> options
        <option>-g</>/<option>-G</>/<option>-l</> options as unnecessary,
        and tighten log file permissions.
        Make <application>pg_upgrade</> create a script to incrementally
        generate more accurate optimizer statistics (Bruce Momjian)
        This reduces the time needed to generate minimal cluster statistics
        after an upgrade.
        Allow <application>pg_upgrade</> to upgrade an old cluster that
        does not have a <literal>postgres</> database (Bruce Momjian)
        Allow <application>pg_upgrade</> to handle cases where some
        old or new databases are missing, as long as they are empty
        Allow <application>pg_upgrade</> to handle configuration-only
        directory installations (Bruce Momjian)
        In <application>pg_upgrade</>, add <option>-o</>/<option>-O</>
        options to pass parameters to the servers (Bruce Momjian)
        This is useful for configuration-only directory installs.
        Change <application>pg_upgrade</> to use port 50432 by default
        (Bruce Momjian)
        This helps avoid unintended client connections during the upgrade.
      <listitem>
       <para>
        Reduce cluster locking in <application>pg_upgrade</> (Bruce
        Momjian)
       </para>
       <para>
        Specifically, only lock the old cluster if link mode is used,
        and do it right after the schema is restored.
    </itemizedlist>

    </sect4>

    <sect4>
     <title><link linkend="pgstatstatements"><application>pg_stat_statements</></link></title>

     <itemizedlist>

      <listitem>
       <para>
        Allow <application>pg_stat_statements</> to aggregate similar
        queries via SQL text normalization (Peter Geoghegan, Tom Lane)
       </para>

       <para>
        Users with applications that use non-parameterized SQL will now
        be able to monitor query performance without detailed log analysis.
        Add dirtied and written block counts and read/write times to
        <application>pg_stat_statements</> (Robert Haas, Ants Aasma)
        Prevent <application>pg_stat_statements</> from double-counting
        <command>PREPARE</command> and <command>EXECUTE</command> commands
    </itemizedlist>

    </sect4>

    <sect4>
     <title><link linkend="sepgsql">sepgsql</link></title>

     <itemizedlist>
      <listitem>
       <para>
        Support <literal>SECURITY LABEL</> on global objects (KaiGai
        Kohei, Robert Haas)
        Specifically, add security labels to databases,
        tablespaces, and roles.
       </para>
      </listitem>
      <listitem>
       <para>
        Allow sepgsql to honor database labels (KaiGai Kohei)
       </para>
      </listitem>
      <listitem>
       <para>
        Perform sepgsql permission checks during the creation of various
      <listitem>
       <para>
        Add <function>sepgsql_setcon()</> and related functions to control
        the sepgsql security domain (KaiGai Kohei)
        Add a user space access cache to sepgsql to improve performance
        (KaiGai Kohei)
       </para>
      </listitem>
     </itemizedlist>
    </sect4>

   </sect3>

   <sect3>
    <title>Documentation</title>

    <itemizedlist>

      <listitem>
       <para>
        Add a rule to optionally build HTML documentation using the
        stylesheet from the website (Magnus Hagander)
        Use <command>gmake STYLE=website draft</>.
      <listitem>
       <para>
        Improve <command>EXPLAIN</command> documentation (Tom Lane)
       </para>
      </listitem>
      <listitem>
       <para>
        Document that user/database names are preserved with double-quoting
        by command-line tools like <application>vacuumdb</>  (Bruce
        Momjian)
       </para>
      </listitem>
      <listitem>
       <para>
        Document the actual string returned by the client for MD5
        authentication (Cyan Ogilvie)
       </para>
      </listitem>
      <listitem>
       <para>
        Deprecate use of <literal>GLOBAL</> and <literal>LOCAL</> in
        <command>CREATE TEMP TABLE</> (Noah Misch)
       </para>

       <para>
        <productname>PostgreSQL</> has long treated these keyword as no-ops,
        and continues to do so; but in future they might mean what the SQL
        standard says they mean, so applications should avoid using them.
       </para>
      </listitem>