Re: Re: Can not decompress a compressed string under plpy!

Started by Timmyalmost 17 years ago3 messagesgeneral
Jump to latest
#1Timmy
timheit@netvigator.com

Hi,
I have stored a compressed string in a table field.
The compressed string is created by zlib using python.
I want to decompress this string by zlib under plpy but plpy fails to do
so. Is plpy not support decompression? Why?

Thanks!

A bit more information is required. What version of Postgres are you using,

what

OS? I am guessing that the compressed string is being created by a Python
program external to the database and then inserted into a field, is this
correct? You are then trying to decompress the string via a plpythonu

function

within the database,correct? Did you import the zlib module into the

plpythonu

function?

--
Adrian Klaver
aklaver@comcast.net

Yes, most of your guess is correct.
I'm using postgresql 8.3.x and ms windows 2000.
The compressed string is saved to the table in binary
format using the psycopg. I had set the table field to bytea data type.
I want to use the plpythonu to decompress the stored
string.
Althout I imported the zlib module, it still failed.
I can successfully get back the decompressed string if
I use the psycopg either inside or outside the plpythonu.
But if without psycopg, plpythonu itself can not decompress the string.
I can use the psycopg inside the plpythonu but I must need to write security information (including user
name,password,server ip,port number,...) to the connection string inside plpythonu too.
This is a problem.

Thanks!

#2Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Timmy (#1)
Re: Re: Re: [GENERAL] Can not decompress a compressed string under plpy!

On Thursday 21 May 2009 3:26:22 pm Timmy wrote:

Yes, most of your guess is correct.
I'm using postgresql 8.3.x and ms windows 2000.
The compressed string is saved to the table in binary
format using the psycopg. I had set the table field to bytea data type.
I want to use the plpythonu to decompress the stored
string.
Althout I imported the zlib module, it still failed.
I can successfully get back the decompressed string if
I use the psycopg either inside or outside the plpythonu.
But if without psycopg, plpythonu itself can not decompress the string.
I can use the psycopg inside the plpythonu but I must need to write
security information (including user name,password,server ip,port
number,...) to the connection string inside plpythonu too. This is a
problem.

Thanks!

Now you are getting outside my experience level. As a guess though I would say
that psycopg is taking care of escaping the data on the way out, whereas your
plpythonu function is not.
See www.postgresql.org/docs/8.3/interactive/datatype-binary.html for more
information.

--
Adrian Klaver
aklaver@comcast.net

#3Jasen Betts
jasen@xnet.co.nz
In reply to: Timmy (#1)
Re: Re: Re: Can not decompress a compressed string under plpy!

On 2009-05-21, Timmy <timheit@netvigator.com> wrote:

Yes, most of your guess is correct.
I'm using postgresql 8.3.x and ms windows 2000.
The compressed string is saved to the table in binary
format using the psycopg. I had set the table field to bytea data type.
I want to use the plpythonu to decompress the stored
string.
Althout I imported the zlib module, it still failed.
I can successfully get back the decompressed string if
I use the psycopg either inside or outside the plpythonu.
But if without psycopg, plpythonu itself can not decompress the string.
I can use the psycopg inside the plpythonu but I must need to write security information (including user
name,password,server ip,port number,...) to the connection string inside plpythonu too.
This is a problem.

try running stripslashes on the returned value.
bytea values are returned double-slashed.