Excerpts from Walter Negro's message of vie may 28 08:00:09 -0400 2010:
> Álvaro,
> Hice nuevas pruebas y decidí enviar el dato bytea configurado como binario.
> Según la documentación, el parámetro paramLengths sólo es tomado en 
> cuenta si el dato es enviado con formato binario.
> Algunas veces la documentación puede no ser exactamente lo que ocurre 
> internamente por muchas razones, así que me puse a mirar el código de la 
> libpq y encontré que si el parámetro no es pasado como binario, la 
> librería calcula el largo del string usando la función strlen(). Por lo 
> tanto, la única forma de pasar correctamente un dato binario a un campo 
> bytea, que pueda contener caracteres nulos, es pasarlo justamente como 
> binario.

OK, eso es lo que sospechaba, gracias por confirmarlo.

> Así que la conclusión que saco es que los datos bytea hay que pasarlos 
> configurados binario porque si no, el servidor puede hacer conversiones, 
> además de ser la única forma de pasar datos binarios que contengan 
> caracteres nulos.

Supongo que la otra alternativa es escapar estos datos, usando \000
donde haya caracteres nulos.


¿Has probado usar la biblioteca libpqtypes?
http://libpqtypes.esilo.com/

-- 
Álvaro Herrera <alvhe...@commandprompt.com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a