33.10. 控制功能

这些函数控制 libpq 行为的其他细节。

  • PQclientEncoding
    • 返回 Client 端编码。
int PQclientEncoding(const PGconn *conn);

请注意,它返回编码 ID,而不是诸如EUC_JP之类的符号字符串。如果不成功,则返回-1.要将编码 ID 转换为编码名称,可以使用:

char *pg_encoding_to_char(int encoding_id);
  • PQsetClientEncoding
    • 设置 Client 端编码。
int PQsetClientEncoding(PGconn *conn, const char *encoding);
  • conn 是与服务器的连接, encoding *是您要使用的编码。如果函数成功设置了编码,则返回 0,否则返回-1.可以使用PQclientEncoding确定此连接的当前编码。
  • PQsetErrorVerbosity
    • 确定PQerrorMessagePQresultErrorMessage返回的消息的详细程度。
typedef enum
{
    PQERRORS_TERSE,
    PQERRORS_DEFAULT,
    PQERRORS_VERBOSE
} PGVerbosity;

PGVerbosity PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity);

PQsetErrorVerbosity设置详细模式,并返回连接的先前设置。在* TERSE *模式下,返回的消息仅包括严重性,主要文本和位置;这通常适合单行。默认模式产生的消息包括以上内容以及任何详细信息,提示或上下 Literals 段(这些字段可能跨越多行)。 * VERBOSE *模式包括所有可用字段。更改详细程度不会影响已存在的PGresult对象可用的消息,只会影响随后创建的对象。 (但是,如果要打印以前的错误并使用不同的详细程度,请参见PQresultVerboseErrorMessage.)

  • PQsetErrorContextVisibility
    • 确定对PQerrorMessagePQresultErrorMessage返回的消息中的CONTEXT字段的处理。
typedef enum
{
    PQSHOW_CONTEXT_NEVER,
    PQSHOW_CONTEXT_ERRORS,
    PQSHOW_CONTEXT_ALWAYS
} PGContextVisibility;

PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, PGContextVisibility show_context);

PQsetErrorContextVisibility设置上下文显示模式,返回连接的先前设置。此模式控制消息中是否包含CONTEXT字段(除非详细设置为* TERSE *,在这种情况下永远不会显示CONTEXT)。 * NEVER 模式从不包含CONTEXT,而 ALWAYS 始终包含它(如果可用)。在 ERRORS *模式(默认)下,CONTEXT字段仅用于错误消息,而不用于通知和警告。更改此模式不会影响已存在的PGresult对象可用的消息,只会影响随后创建的对象。 (但如果要使用其他显示模式打印先前的错误,请参见PQresultVerboseErrorMessage.)

  • PQtrace
    • 启用 Client 端/服务器通信到调试文件流的跟踪。
void PQtrace(PGconn *conn, FILE *stream);

Note

在 Windows 上,如果 libpq 库和应用程序使用不同的标志编译,则此函数调用将使应用程序崩溃,因为FILE指针的内部表示形式不同。具体来说,该库以及使用该库的所有应用程序的多线程/单线程,发行/调试和静态/动态标志应相同。

  • PQuntrace
    • 禁用由PQtrace开始的跟踪。
void PQuntrace(PGconn *conn);