@@ -3385,25 +3385,23 @@ size_t PQescapeStringConn(PGconn *conn,
3385
3385
3386
3386
<listitem>
3387
3387
<para>
3388
- <function>PQescapeString</> is an older, deprecated version of
3389
- <function>PQescapeStringConn</>.
3390
3388
<synopsis>
3391
3389
size_t PQescapeString (char *to, const char *from, size_t length);
3392
3390
</synopsis>
3393
3391
</para>
3394
3392
3395
3393
<para>
3396
- The only difference from <function>PQescapeStringConn </> is that
3397
- <function>PQescapeString </> does not take <structname>PGconn</>
3398
- or <parameter>error</> parameters.
3394
+ <function>PQescapeString </> is an older, deprecated version of
3395
+ <function>PQescapeStringConn </>; the difference is that it does
3396
+ not take <parameter>conn</> or <parameter>error</> parameters.
3399
3397
Because of this, it cannot adjust its behavior depending on the
3400
3398
connection properties (such as character encoding) and therefore
3401
3399
<emphasis>it might give the wrong results</>. Also, it has no way
3402
3400
to report error conditions.
3403
3401
</para>
3404
3402
3405
3403
<para>
3406
- <function>PQescapeString</> can be used safely in
3404
+ <function>PQescapeString</> can be used safely in single-threaded
3407
3405
client programs that work with only one <productname>PostgreSQL</>
3408
3406
connection at a time (in this case it can find out what it needs to
3409
3407
know <quote>behind the scenes</>). In other contexts it is a security
@@ -3435,11 +3433,16 @@ unsigned char *PQescapeByteaConn(PGconn *conn,
3435
3433
</para>
3436
3434
3437
3435
<para>
3438
- Certain byte values must be escaped when used as part of a
3439
- <type>bytea</type> literal in an <acronym>SQL</acronym> statement.
3440
- <function>PQescapeByteaConn</function> escapes bytes using
3441
- either hex encoding or backslash escaping. See <xref
3442
- linkend="datatype-binary"> for more information.
3436
+ Certain byte values <emphasis>must</emphasis> be escaped (but all
3437
+ byte values <emphasis>can</emphasis> be escaped) when used as part
3438
+ of a <type>bytea</type> literal in an <acronym>SQL</acronym>
3439
+ statement. In general, to escape a byte, it is converted into the
3440
+ three digit octal number equal to the octet value, and preceded by
3441
+ usually two backslashes. The single quote (<literal>'</>) and backslash
3442
+ (<literal>\</>) characters have special alternative escape
3443
+ sequences. See <xref linkend="datatype-binary"> for more
3444
+ information. <function>PQescapeByteaConn</function> performs this
3445
+ operation, escaping only the minimally required bytes.
3443
3446
</para>
3444
3447
3445
3448
<para>
@@ -3496,13 +3499,20 @@ unsigned char *PQescapeBytea(const unsigned char *from,
3496
3499
<para>
3497
3500
The only difference from <function>PQescapeByteaConn</> is that
3498
3501
<function>PQescapeBytea</> does not take a <structname>PGconn</>
3499
- parameter. Because of this, <function>PQescapeBytea</> can
3500
- only be used safely in client programs that use a single
3501
- <productname>PostgreSQL</> connection at a time (in this case
3502
- it can find out what it needs to know <quote>behind the
3503
- scenes</>). It <emphasis>might give the wrong results</> if
3504
- used in programs that use multiple database connections (use
3505
- <function>PQescapeByteaConn</> in such cases).
3502
+ parameter. Because of this, it cannot adjust its behavior
3503
+ depending on the connection properties (in particular, whether
3504
+ standard-conforming strings are enabled) and therefore
3505
+ <emphasis>it might give the wrong results</>. Also, it has no
3506
+ way to return an error message on failure.
3507
+ </para>
3508
+
3509
+ <para>
3510
+ <function>PQescapeBytea</> can be used safely in single-threaded
3511
+ client programs that work with only one <productname>PostgreSQL</>
3512
+ connection at a time (in this case it can find out what it needs
3513
+ to know <quote>behind the scenes</>). In other contexts it is
3514
+ a security hazard and should be avoided in favor of
3515
+ <function>PQescapeByteaConn</>.
3506
3516
</para>
3507
3517
</listitem>
3508
3518
</varlistentry>
0 commit comments