As far as I can see, ecpg has no notion of a "default" open
connection. You can do "CONNECT TO DEFAULT" but that just specifies
letting libpq use all its default connection parameters --- the
resulting connection is not special subsequently. In particular,
SET CONNECTION = DEFAULT and DISCONNECT DEFAULT simply act on a
connection named DEFAULT, if you've made one; they do not have
special lookup rules. But the documentation of these commands
makes it look like they do.
Simplest fix, I think, is just to remove the paras suggesting that
DEFAULT is special here.
Also, SET CONNECTION *does* have one special lookup rule, which
is that it recognizes CURRENT as an alias for the currently selected
connection. SET CONNECTION = CURRENT is a no-op, so it's pretty
useless, but nonetheless it does something different from selecting
a connection by name; so we'd better document it.
Per report from Sylvain Frandaz. Back-patch to all supported
versions.
Discussion: https://postgr.es/m/
169824721149.
1769274.
1553568436817652238@wrigleys.postgresql.org
</simpara>
</listitem>
- <listitem>
- <simpara>
- <literal>DEFAULT</literal>
- </simpara>
- </listitem>
-
<listitem>
<simpara>
<literal>CURRENT</literal>
<synopsis>
DISCONNECT <replaceable class="parameter">connection_name</replaceable>
DISCONNECT [ CURRENT ]
-DISCONNECT DEFAULT
DISCONNECT ALL
</synopsis>
</refsynopsisdiv>
</listitem>
</varlistentry>
- <varlistentry>
- <term><literal>DEFAULT</literal></term>
- <listitem>
- <para>
- Close the default connection.
- </para>
- </listitem>
- </varlistentry>
-
<varlistentry>
<term><literal>ALL</literal></term>
<listitem>
int
main(void)
{
- EXEC SQL CONNECT TO testdb AS DEFAULT USER testuser;
EXEC SQL CONNECT TO testdb AS con1 USER testuser;
EXEC SQL CONNECT TO testdb AS con2 USER testuser;
EXEC SQL CONNECT TO testdb AS con3 USER testuser;
EXEC SQL DISCONNECT CURRENT; /* close con3 */
- EXEC SQL DISCONNECT DEFAULT; /* close DEFAULT */
EXEC SQL DISCONNECT ALL; /* close con2 and con1 */
return 0;
</varlistentry>
<varlistentry>
- <term><literal>DEFAULT</literal></term>
+ <term><literal>CURRENT</literal></term>
<listitem>
<para>
- Set the connection to the default connection.
+ Set the connection to the current connection (thus, nothing happens).
</para>
</listitem>
</varlistentry>