FAQ

"Takahiro Itagaki" wrote:

Bug reference: 5487
Logged by: Takahiro Itagaki
Email address: [email protected]
Description: dblink failed with 63 bytes connection names
Details:

Contib/dblink module seems to have a bug in handling
connection names in NAMEDATALEN-1 bytes.
Here is a patch to fix the bug. I think it comes from wrong usage
of snprintf(NAMEDATALEN - 1). It just copies 62 bytes + \0.

In addition, it should be safe to use pg_mbcliplen() to truncate
extra bytes in connection names because we might return invalid
text when a multibyte character is at 62 or 63 bytes.

Note that the fix should be ported to previous versions, too.

It cannot use exiting connections with 63 bytes name
in some cases. For example, we cannot disconnect
such connections. Also, we can reconnect with the
same name and will have two connections with the name.

=# SELECT dblink_connect(repeat('1234567890', 6) || 'ABC',
'host=localhost');
dblink_connect
----------------
OK
(1 row)

=# SELECT dblink_get_connections();
dblink_get_connections
-------------------------------------------------------------------
{123456789012345678901234567890123456789012345678901234567890ABC}
(1 row)

=# SELECT dblink_disconnect(repeat('1234567890', 6) || 'ABC');
ERROR: connection
"123456789012345678901234567890123456789012345678901234567890ABC" not
available
Regards,
---
Takahiro Itagaki
NTT Open Source Software Center

Search Discussions

Discussion Posts

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 1 of 5 | next ›
Discussion Overview
grouppgsql-hackers @
categoriespostgresql
postedJun 1, '10 at 2:54a
activeJun 3, '10 at 1:07a
posts5
users2
websitepostgresql.org...
irc#postgresql

People

Translate

site design / logo © 2023 Grokbase