As always, there are some functions that just don't fit anywhere. よくあることですが、うまく分類できない関数がいくつか存在します。
PQfreemem
#Frees memory allocated by <application>libpq</application>. libpqが割り当てたメモリを解放します。
void PQfreemem(void *ptr);
Frees memory allocated by <application>libpq</application>, particularly
<xref linkend="libpq-PQescapeByteaConn"/>,
<xref linkend="libpq-PQescapeBytea"/>,
<xref linkend="libpq-PQunescapeBytea"/>,
and <function>PQnotifies</function>.
It is particularly important that this function, rather than
<function>free()</function>, be used on Microsoft Windows. This is because
allocating memory in a DLL and releasing it in the application works
only if multithreaded/single-threaded, release/debug, and static/dynamic
flags are the same for the DLL and the application. On non-Microsoft
Windows platforms, this function is the same as the standard library
function <function>free()</function>.
具体的にはPQescapeByteaConn
、PQescapeBytea
、PQunescapeBytea
およびPQnotifies
によりlibpqが割り当てたメモリを解放します。
Microsoft Windowsにおいてfree()
ではなく、この関数を使用することが特に重要です。
DLLにおけるメモリ割り当てとアプリケーションにおけるその解放が、DLLとアプリケーションとでマルチスレッド/シングルスレッド、リリース用/デバッグ用、静的/動的フラグが同じ場合でのみ動作するためです。
Microsoft Windowsプラットフォーム以外では、この関数は標準ライブラリのfree()
関数と同じです。
PQconninfoFree
#
Frees the data structures allocated by
<xref linkend="libpq-PQconndefaults"/> or <xref linkend="libpq-PQconninfoParse"/>.
PQconndefaults
もしくはPQconninfoParse
が割り当てたデータ構造を解放します。
void PQconninfoFree(PQconninfoOption *connOptions);
If the argument is a <symbol>NULL</symbol> pointer, no operation is
performed.
引数がNULL
ポインタの場合、操作は実行されません。
A simple <xref linkend="libpq-PQfreemem"/> will not do for this, since
the array contains references to subsidiary strings.
単純なPQfreemem
は、配列が補助文字列への参照を含んでいることから、このためには作業しません。
PQencryptPasswordConn
#Prepares the encrypted form of a <productname>PostgreSQL</productname> password. PostgreSQLパスワードの暗号化された形式を準備します。
char *PQencryptPasswordConn(PGconn *conn, const char *passwd, const char *user, const char *algorithm);
This function is intended to be used by client applications that
wish to send commands like <literal>ALTER USER joe PASSWORD
'pwd'</literal>. It is good practice not to send the original cleartext
password in such a command, because it might be exposed in command
logs, activity displays, and so on. Instead, use this function to
convert the password to encrypted form before it is sent.
この関数は、ALTER USER joe PASSWORD 'pwd'
のようなコマンドを送信したいクライアントアプリケーションで使用されることを意図したものです。
こうしたコマンドでは、コマンドログが活動の監視などで晒されてしまうため、元々の平文テキストでパスワードを送信しないことが推奨されています。
その代わりに、この関数を使用して送信前にパスワードを暗号化形式に変換してください。
The <parameter>passwd</parameter> and <parameter>user</parameter> arguments
are the cleartext password, and the SQL name of the user it is for.
<parameter>algorithm</parameter> specifies the encryption algorithm
to use to encrypt the password. Currently supported algorithms are
<literal>md5</literal> and <literal>scram-sha-256</literal> (<literal>on</literal> and
<literal>off</literal> are also accepted as aliases for <literal>md5</literal>, for
compatibility with older server versions). Note that support for
<literal>scram-sha-256</literal> was introduced in <productname>PostgreSQL</productname>
version 10, and will not work correctly with older server versions. If
<parameter>algorithm</parameter> is <symbol>NULL</symbol>, this function will query
the server for the current value of the
<xref linkend="guc-password-encryption"/> setting. That can block, and
will fail if the current transaction is aborted, or if the connection
is busy executing another query. If you wish to use the default
algorithm for the server but want to avoid blocking, query
<varname>password_encryption</varname> yourself before calling
<xref linkend="libpq-PQencryptPasswordConn"/>, and pass that value as the
<parameter>algorithm</parameter>.
passwd
とuser
引数は、関数が使用する平文のパスワードとそのSQL上のユーザ名です。
algorithm
は、パスワードを暗号化するために使用する暗号化アルゴリズムを指定します。
現在サポートされているアルゴリズムは、md5
とscram-sha-256
です。
(古いサーババージョンとの互換性のために、md5
の別名として、on
とoff
も受け付けます。)
scram-sha-256
のサポートは、PostgreSQLバージョン10で導入されたので、古いサーババージョンでは正しく動作しないことに注意してください。
algorithm
がNULL
なら、この関数はサーバに問合せて現在のpassword_encryption設定を返します。
これは、ブロックする可能性があり、また現在のトランザクションがアボートしているか、あるいは他の問合せを実行中でビジーなら失敗します。
サーバのデフォルトアルゴリズムを使用したいが、ブロックは避けたい、という場合は、PQencryptPasswordConn
を呼び出す前にpassword_encryption
を自分で調べ、その値をalgorithm
に渡してください。
The return value is a string allocated by <function>malloc</function>.
The caller can assume the string doesn't contain any special characters
that would require escaping. Use <xref linkend="libpq-PQfreemem"/> to free the
result when done with it. On error, returns <symbol>NULL</symbol>, and
a suitable message is stored in the connection object.
戻り値はmalloc
で割り当てられた文字列です。
呼び出し元は、その文字列にエスケープしなければならない特殊な文字列が含まれていないことを仮定することができます。
処理が終わった時にPQfreemem
を使用して結果を解放してください。
エラーの場合にNULL
が返され、接続オブジェクトに対応するメッセージが格納されます。
PQchangePassword
#Changes a <productname>PostgreSQL</productname> password. 《機械翻訳》PostgreSQLのパスワードを変更します。
PGresult *PQchangePassword(PGconn *conn, const char *user, const char *passwd);
This function uses <function>PQencryptPasswordConn</function>
to build and execute the command <literal>ALTER USER ... PASSWORD
'...'</literal>, thereby changing the user's password. It exists for
the same reason as <function>PQencryptPasswordConn</function>, but
is more convenient as it both builds and runs the command for you.
<xref linkend="libpq-PQencryptPasswordConn"/> is passed a
<symbol>NULL</symbol> for the algorithm argument, hence encryption is
done according to the server's <xref linkend="guc-password-encryption"/>
setting.
《機械翻訳》この関数はPQencryptPasswordConn
を使用して、コマンドALTER USER .パスワード '...'
,.これにより、ユーザのパスワードが変更されます。
これはPQencryptPasswordConn
と同じ理由で存在しますが、コマンドを構築して実行するのでより便利です。
PQencryptPasswordConn
はアルゴリズム引数にNULL
を渡すので、サーバのpassword_encryption設定に従って暗号化が行われます。
The <parameter>user</parameter> and <parameter>passwd</parameter> arguments
are the SQL name of the target user, and the new cleartext password.
《機械翻訳》user
とpasswd
引数は、対象ユーザのSQL名と新しい平文パスワードです。
Returns a <structname>PGresult</structname> pointer representing
the result of the <literal>ALTER USER</literal> command, or
a null pointer if the routine failed before issuing any command.
The <xref linkend="libpq-PQresultStatus"/> function should be called
to check the return value for any errors (including the value of a null
pointer, in which case it will return
<symbol>PGRES_FATAL_ERROR</symbol>). Use
<xref linkend="libpq-PQerrorMessage"/> to get more information about
such errors.
《マッチ度[58.859470]》戻り値はPGresult
へのポインタ、場合によってはNULLポインタです。
メモリ不足の状態、あるいはサーバへのコマンド送信が不可能といった深刻なエラーの場合を除けば、通常非NULLのポインタが返ります。
PQresultStatus
関数を呼び出して、何かエラー(NULLポインタ値を含むエラー。この場合はPGRES_FATAL_ERROR
が返されます)がないか戻り値を検査しなければなりません。
こうしたエラーの詳しい情報は
PQerrorMessage
で得ることができます。
《機械翻訳》ALTER USER
コマンドの結果を表すPGresult
ポインタ、またはコマンドを発行する前にルーチンが失敗した場合はNULLポインタを返します。
エラーの結果(NULLポインタの場合はPGRES_FATAL_ERROR
を返します)を確認するには、PQresultStatus
関数を呼び出す必要があります。
このようなエラーについての詳細は
PQerrorMessage
を参照してください。
PQencryptPassword
#Prepares the md5-encrypted form of a <productname>PostgreSQL</productname> password. md5暗号化形式のPostgreSQLパスワードを準備します。
char *PQencryptPassword(const char *passwd, const char *user);
<xref linkend="libpq-PQencryptPassword"/> is an older, deprecated version of
<xref linkend="libpq-PQencryptPasswordConn"/>. The difference is that
<xref linkend="libpq-PQencryptPassword"/> does not
require a connection object, and <literal>md5</literal> is always used as the
encryption algorithm.
PQencryptPassword
は、古くて非推奨のバージョンのPQencryptPasswordConn
です。
違いは、PQencryptPassword
はコネクションオブジェクトを必要とせず、md5
が常に暗号化アルゴリズムに使用されることです。
PQmakeEmptyPGresult
#
Constructs an empty <structname>PGresult</structname> object with the given status.
与えられたステータスで空のPGresult
オブジェクトを構築します。
PGresult *PQmakeEmptyPGresult(PGconn *conn, ExecStatusType status);
This is <application>libpq</application>'s internal function to allocate and
initialize an empty <structname>PGresult</structname> object. This
function returns <symbol>NULL</symbol> if memory could not be allocated. It is
exported because some applications find it useful to generate result
objects (particularly objects with error status) themselves. If
<parameter>conn</parameter> is not null and <parameter>status</parameter>
indicates an error, the current error message of the specified
connection is copied into the <structname>PGresult</structname>.
Also, if <parameter>conn</parameter> is not null, any event procedures
registered in the connection are copied into the
<structname>PGresult</structname>. (They do not get
<literal>PGEVT_RESULTCREATE</literal> calls, but see
<xref linkend="libpq-PQfireResultCreateEvents"/>.)
Note that <xref linkend="libpq-PQclear"/> should eventually be called
on the object, just as with a <structname>PGresult</structname>
returned by <application>libpq</application> itself.
これは空のPGresult
オブジェクトを割り当てて、初期化するlibpqの内部関数です。
メモリが割り当てられなかった場合、この関数はNULL
を返します。
一部のアプリケーションで結果オブジェクト(特にエラーステータスを伴ったオブジェクト)それ自身を生成することが便利であることが分かりましたので、外部公開されました。
conn
が非NULで、status
がエラーを示唆している場合、特定された接続の現在のエラーメッセージはPGresult
にコピーされます。
同時に、conn
が非NULLの場合、接続で登録された任意のイベントプロシージャはPGresult
にコピーされます。
(それらはPGEVT_RESULTCREATE
呼び出しを受けませんが、PQfireResultCreateEvents
を理解します。)
libpq自身で返されたPGresult
と同様に、最終的にはこのオブジェクトに対してPQclear
を呼び出さなければならないことに注意してください。
PQfireResultCreateEvents
#
Fires a <literal>PGEVT_RESULTCREATE</literal> event (see <xref
linkend="libpq-events"/>) for each event procedure registered in the
<structname>PGresult</structname> object. Returns non-zero for success,
zero if any event procedure fails.
PGresult
オブジェクトに登録されたそれぞれのイベントプロシージャに対し、PGEVT_RESULTCREATE
イベント(32.14を参照)を発行します。
イベントプロシージャが成功の場合は非ゼロ、失敗の場合はゼロを返します。
int PQfireResultCreateEvents(PGconn *conn, PGresult *res);
The <literal>conn</literal> argument is passed through to event procedures
but not used directly. It can be <symbol>NULL</symbol> if the event
procedures won't use it.
conn
引数はイベントプロシージャに渡されますが、直接には使用されません。
イベントプロシージャが使用しない場合はNULL
で構いません。
Event procedures that have already received a
<literal>PGEVT_RESULTCREATE</literal> or <literal>PGEVT_RESULTCOPY</literal> event
for this object are not fired again.
このオブジェクトに対し、PGEVT_RESULTCREATE
もしくはPGEVT_RESULTCOPY
イベントを過去に受け取ったイベントプロシージャは再び発行されません。
The main reason that this function is separate from
<xref linkend="libpq-PQmakeEmptyPGresult"/> is that it is often appropriate
to create a <structname>PGresult</structname> and fill it with data
before invoking the event procedures.
この関数がPQmakeEmptyPGresult
と分離されている主たる理由は、多くの場合イベントプロシージャを呼び出す前にPGresult
を作成し、データを挿入するのが適切であることによります。
PQcopyResult
#
Makes a copy of a <structname>PGresult</structname> object. The copy is
not linked to the source result in any way and
<xref linkend="libpq-PQclear"/> must be called when the copy is no longer
needed. If the function fails, <symbol>NULL</symbol> is returned.
PGresult
オブジェクトのコピーを作ります。
コピーは元の結果にいかなる方法でもリンクされず、コピーが不要になった時にPQclear
を呼び出されなければなりません。
関数が失敗するとNULL
が返されます。
PGresult *PQcopyResult(const PGresult *src, int flags);
This is not intended to make an exact copy. The returned result is
always put into <literal>PGRES_TUPLES_OK</literal> status, and does not
copy any error message in the source. (It does copy the command status
string, however.) The <parameter>flags</parameter> argument determines
what else is copied. It is a bitwise OR of several flags.
<literal>PG_COPYRES_ATTRS</literal> specifies copying the source
result's attributes (column definitions).
<literal>PG_COPYRES_TUPLES</literal> specifies copying the source
result's tuples. (This implies copying the attributes, too.)
<literal>PG_COPYRES_NOTICEHOOKS</literal> specifies
copying the source result's notify hooks.
<literal>PG_COPYRES_EVENTS</literal> specifies copying the source
result's events. (But any instance data associated with the source
is not copied.)
The event procedures receive <literal>PGEVT_RESULTCOPY</literal> events.
これは正確なコピーの作成を目的としたものではありません。
返された結果は常にPGRES_TUPLES_OK
状態の中に置かれ、元の結果におけるエラーメッセージはまったくコピーされません。
(しかしコマンド状態文字列をコピーします。)
flags
引数はその他にコピーするものがないかを決定します。
それはいくつかのフラグのビット単位のORです。
PG_COPYRES_ATTRS
は元の結果の属性(列定義)のコピーを指定します。
PG_COPYRES_TUPLES
は元の結果のタプルのコピーを指定します。
(これは属性もコピーされることを意味しています。)
PG_COPYRES_NOTICEHOOKS
は元の結果の警告フックのコピーを指定します。
PG_COPYRES_EVENTS
は元の結果イベントのコピーを指定します。
(しかし、元の結果に関連したインスタンスデータはまったくコピーされません。)
イベントプロシージャは、PGEVT_RESULTCOPY
イベントを受信します。
PQsetResultAttrs
#
Sets the attributes of a <structname>PGresult</structname> object.
PGresult
オブジェクトの属性を設定します。
int PQsetResultAttrs(PGresult *res, int numAttributes, PGresAttDesc *attDescs);
The provided <parameter>attDescs</parameter> are copied into the result.
If the <parameter>attDescs</parameter> pointer is <symbol>NULL</symbol> or
<parameter>numAttributes</parameter> is less than one, the request is
ignored and the function succeeds. If <parameter>res</parameter>
already contains attributes, the function will fail. If the function
fails, the return value is zero. If the function succeeds, the return
value is non-zero.
提供されたattDescs
は結果にコピーされます。
もしattDescs
ポインタがNULL
、またはnumAttributes
が1未満の場合、要求は無視され、関数は成功します。
res
が既に属性を所有している場合、関数は失敗に終わります。
関数が失敗すると、戻り値はゼロです。
関数が成功すると戻り値は非ゼロになります。
PQsetvalue
#
Sets a tuple field value of a <structname>PGresult</structname> object.
PGresult
オブジェクトのタプルフィールド値を設定します。
int PQsetvalue(PGresult *res, int tup_num, int field_num, char *value, int len);
The function will automatically grow the result's internal tuples array
as needed. However, the <parameter>tup_num</parameter> argument must be
less than or equal to <xref linkend="libpq-PQntuples"/>, meaning this
function can only grow the tuples array one tuple at a time. But any
field of any existing tuple can be modified in any order. If a value at
<parameter>field_num</parameter> already exists, it will be overwritten.
If <parameter>len</parameter> is -1 or
<parameter>value</parameter> is <symbol>NULL</symbol>, the field value
will be set to an SQL null value. The
<parameter>value</parameter> is copied into the result's private storage,
thus is no longer needed after the function
returns. If the function fails, the return value is zero. If the
function succeeds, the return value is non-zero.
必要に応じて関数は自動的に結果の内部タプル配列を肥大化させます。
しかし、tup_num
引数はPQntuples
と同じか、もしくは小さくなければなりません。
その意味は、この関数は一回にタプル配列を1タプル大きくさせるだけだからです。
とは言っても、存在するいかなるタプルの任意のフィールドも、順序を問わず変更できます。
もしfield_num
に値が既に存在すれば、書き換えられます。
len
が-1、またはvalue
がNULL
であれば、フィールドの値はSQLのNULLに設定されます。
value
は結果のプライベート格納領域にコピーされるため、関数が返った後ではもう必要がなくなります。
関数が失敗すると、戻り値はゼロです。
関数が成功すると戻り値は非ゼロになります。
PQresultAlloc
#
Allocate subsidiary storage for a <structname>PGresult</structname> object.
PGresult
オブジェクトに補助ストレージを割り当てます。
void *PQresultAlloc(PGresult *res, size_t nBytes);
Any memory allocated with this function will be freed when
<parameter>res</parameter> is cleared. If the function fails,
the return value is <symbol>NULL</symbol>. The result is
guaranteed to be adequately aligned for any type of data,
just as for <function>malloc</function>.
res
が消去された時、この関数で割り付けられたメモリは解放されます。
関数が失敗すると戻り値はNULL
です。
malloc
と同じように、どのような種類のデータでも結果は適切に整列されることが保証されています。
PQresultMemorySize
#
Retrieves the number of bytes allocated for
a <structname>PGresult</structname> object.
PGresult
オブジェクトのために割り当てられたバイト数を取り出します。
size_t PQresultMemorySize(const PGresult *res);
This value is the sum of all <function>malloc</function> requests
associated with the <structname>PGresult</structname> object, that is,
all the memory that will be freed by <xref linkend="libpq-PQclear"/>.
This information can be useful for managing memory consumption.
《マッチ度[88.888889]》この値はPGresult
オブジェクトに関連するmalloc
要求すべての和、すなわちPQclear
で解放される空間全体です。
この情報はメモリ消費を管理するのに有用でしょう。
《機械翻訳》この値は、PGresult
オブジェクトに関連する全てのmalloc
要求、つまりPQclear
で解放される全てのメモリの合計です。
この情報はメモリ消費量を管理するのに役立ちます。
PQlibVersion
#Return the version of <productname>libpq</productname> that is being used. 使用中のlibpqのバージョンを返します。
int PQlibVersion(void);
The result of this function can be used to determine, at
run time, whether specific functionality is available in the currently
loaded version of libpq. The function can be used, for example,
to determine which connection options are available in
<xref linkend="libpq-PQconnectdb"/>.
この関数の結果を使用して、現在読み込まれているバージョンのlibpqで特定の機能が利用可能かどうかを実行時に決定することができます。
例えばこの関数を使用して、PQconnectdb
でどの接続オプションが利用できるかを確認することができます。
The result is formed by multiplying the library's major version number by 10000 and adding the minor version number. For example, version 10.1 will be returned as 100001, and version 11.0 will be returned as 110000. 返却値の形式は、メジャーバージョン番号に10000を掛け、マイナーバージョン番号を加えたものです。 例えば、バージョン10.1では100001を返し、バージョン11.0では110000を返します。
Prior to major version 10, <productname>PostgreSQL</productname> used
three-part version numbers in which the first two parts together
represented the major version. For those
versions, <xref linkend="libpq-PQlibVersion"/> uses two digits for each
part; for example version 9.1.5 will be returned as 90105, and
version 9.2.0 will be returned as 90200.
バージョン10よりも前では、PostgreSQLでは、最初の2つの部分がメジャーバージョンを表す、3つの部分からなるバージョン番号が使われていました。
これらのバージョンでは、PQlibVersion
はそれぞれの部分に2桁の数字を使います。
たとえば、バージョン9.1.5では90105が返され、バージョン9.2.0では90200が返されます。
Therefore, for purposes of determining feature compatibility,
applications should divide the result of <xref linkend="libpq-PQlibVersion"/>
by 100 not 10000 to determine a logical major version number.
In all release series, only the last two digits differ between
minor releases (bug-fix releases).
ですから、機能の互換性を見極めるのが目的なら、アプリケーションはPQlibVersion
の結果を10000ではなく、100で割り、論理的なメジャーバージョンを求めるべきです。
すべてのリリースで、最後の2桁だけがマイナーリリースで異なります。
(バグ修正リリースです。)
This function appeared in <productname>PostgreSQL</productname> version 9.1, so it cannot be used to detect required functionality in earlier versions, since calling it will create a link dependency on version 9.1 or later. この関数はPostgreSQLバージョン9.1で追加されました。 このため以前のバージョンにおいて要求される機能を検知するために使用することができません。 この関数の呼び出しがバージョン9.1以降とのリンク依存性を作成するためです。
PQgetCurrentTimeUSec
#
Retrieves the current time, expressed as the number of microseconds
since the Unix epoch (that is, <type>time_t</type> times 1 million).
《機械翻訳》現在時間を取得します。
これは、Unixエポックからの経過時間をマイクロ秒単位で表したものですtime_t
×100万)。
pg_usec_time_t PQgetCurrentTimeUSec(void);
This is primarily useful for calculating timeout values to use with
<xref linkend="libpq-PQsocketPoll"/>.
《機械翻訳》これは主に、PQsocketPoll
で使用するタイムアウト値を計算する場合に便利です。