跳至主要內容

KlustronDB大约 1 分钟

34.10. Control Functions

These functions control miscellaneous details of libpq's behavior.

PQclientEncoding : Returns the client encoding.

```synopsis
int PQclientEncoding(const PGconn *conn);
```

Note that it returns the encoding ID, not a symbolic string
such as `EUC_JP`. If unsuccessful, it returns -1.
To convert an encoding ID to an encoding name, you
can use:

```synopsis
char *pg_encoding_to_char(int encoding_id);
```

PQsetClientEncoding : Sets the client encoding.

```synopsis
int PQsetClientEncoding(PGconn *conn, const char *encoding);
```

**`conn`** is a connection to the server,
and **`encoding`** is the encoding you want to
use. If the function successfully sets the encoding, it returns 0,
otherwise -1. The current encoding for this connection can be
determined by using `PQclientEncoding`.

PQsetErrorVerbosity : Determines the verbosity of messages returned by PQerrorMessage and PQresultErrorMessage.

```synopsis
typedef enum
{
    PQERRORS_TERSE,
    PQERRORS_DEFAULT,
    PQERRORS_VERBOSE
} PGVerbosity;

PGVerbosity PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity);
```

`PQsetErrorVerbosity` sets the verbosity mode, returning
the connection's previous setting. In **TERSE** mode,
returned messages include severity, primary text, and position only;
this will normally fit on a single line. The default mode produces
messages that include the above plus any detail, hint, or context
fields (these might span multiple lines). The **VERBOSE**
mode includes all available fields. Changing the verbosity does not
affect the messages available from already-existing
`PGresult` objects, only subsequently-created ones.
(But see `PQresultVerboseErrorMessage` if you
want to print a previous error with a different verbosity.)

PQsetErrorContextVisibility : Determines the handling of CONTEXT fields in messages returned by PQerrorMessage and PQresultErrorMessage.

```synopsis
typedef enum
{
    PQSHOW_CONTEXT_NEVER,
    PQSHOW_CONTEXT_ERRORS,
    PQSHOW_CONTEXT_ALWAYS
} PGContextVisibility;

PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, PGContextVisibility show_context);
```

`PQsetErrorContextVisibility` sets the context display mode,
returning the connection's previous setting. This mode controls
whether the `CONTEXT` field is included in messages
(unless the verbosity setting is **TERSE**, in which
case `CONTEXT` is never shown). The **NEVER** mode
never includes `CONTEXT`, while **ALWAYS** always
includes it if available. In **ERRORS** mode (the
default), `CONTEXT` fields are included only for error
messages, not for notices and warnings. Changing this mode does not
affect the messages available from
already-existing `PGresult` objects, only
subsequently-created ones.
(But see `PQresultVerboseErrorMessage` if you
want to print a previous error with a different display mode.)

PQtrace : Enables tracing of the client/server communication to a debugging file stream.

```synopsis
void PQtrace(PGconn *conn, FILE *stream);
```

### Note

On Windows, if the libpq library and an application are
compiled with different flags, this function call will crash the
application because the internal representation of the `FILE`
pointers differ. Specifically, multithreaded/single-threaded,
release/debug, and static/dynamic flags should be the same for the
library and all applications using that library.

PQuntrace : Disables tracing started by PQtrace.

```synopsis
void PQuntrace(PGconn *conn);
```