Home Explore Blog CI



postgresql

21th chunk of `doc/src/sgml/installation.sgml`
2e0b5e125509b9db711dd6b10532c45f1b891a54491255580000000100000fa4
 breaks on-disk database compatibility,
         meaning you cannot use <command>pg_upgrade</command> to upgrade to
         a build with a different WAL block size.
        </para>
       </listitem>
      </varlistentry>

     </variablelist>

   </sect3>

   <sect3 id="configure-options-devel">
    <title>Developer Options</title>

    <para>
     Most of the options in this section are only of interest for
     developing or debugging <productname>PostgreSQL</productname>.
     They are not recommended for production builds, except
     for <option>--enable-debug</option>, which can be useful to enable
     detailed bug reports in the unlucky event that you encounter a bug.
     On platforms supporting DTrace, <option>--enable-dtrace</option>
     may also be reasonable to use in production.
    </para>

    <para>
     When building an installation that will be used to develop code inside
     the server, it is recommended to use at least the
     options <option>--enable-debug</option>
     and <option>--enable-cassert</option>.
    </para>

     <variablelist>

      <varlistentry id="configure-option-enable-debug">
       <term><option>--enable-debug</option></term>
       <listitem>
        <para>
         Compiles all programs and libraries with debugging symbols.
         This means that you can run the programs in a debugger
         to analyze problems. This enlarges the size of the installed
         executables considerably, and on non-GCC compilers it usually
         also disables compiler optimization, causing slowdowns. However,
         having the symbols available is extremely helpful for dealing
         with any problems that might arise.  Currently, this option is
         recommended for production installations only if you use GCC.
         But you should always have it on if you are doing development work
         or running a beta version.
        </para>
       </listitem>
      </varlistentry>

      <varlistentry id="configure-option-enable-cassert">
       <term><option>--enable-cassert</option></term>
       <listitem>
        <para>
         Enables <firstterm>assertion</firstterm> checks in the server, which test for
         many <quote>cannot happen</quote> conditions.  This is invaluable for
         code development purposes, but the tests can slow down the
         server significantly.
         Also, having the tests turned on won't necessarily enhance the
         stability of your server!  The assertion checks are not categorized
         for severity, and so what might be a relatively harmless bug will
         still lead to server restarts if it triggers an assertion
         failure.  This option is not recommended for production use, but
         you should have it on for development work or when running a beta
         version.
        </para>
       </listitem>
      </varlistentry>

      <varlistentry id="configure-option-enable-tap-tests">
       <term><option>--enable-tap-tests</option></term>
       <listitem>
        <para>
         Enable tests using the Perl TAP tools.  This requires a Perl
         installation and the Perl module <literal>IPC::Run</literal>.
         See <xref linkend="regress-tap"/> for more information.
        </para>
       </listitem>
      </varlistentry>

      <varlistentry id="configure-option-enable-depend">
       <term><option>--enable-depend</option></term>
       <listitem>
        <para>
         Enables automatic dependency tracking.  With this option, the
         makefiles are set up so that all affected object files will
         be rebuilt when any header file is changed.  This is useful
         if you are doing development work, but is just wasted overhead
         if you intend only to compile once and install.  At present,
         this option only works with GCC.
        </para>
       </listitem>
      </varlistentry>

      <varlistentry id="configure-option-enable-coverage">
       <term><option>--enable-coverage</option></term>

Title: PostgreSQL Developer Options
Summary
This section describes configure options for PostgreSQL that are mostly of interest for developers, including options for enabling debug symbols, assertion checks, and test suites, which can help with code development and debugging, but are not recommended for production builds due to potential performance impacts.