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

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

From
Timmy
Date:
> > 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!





Re: Re: Re: [GENERAL] Can not decompress a compressed string under plpy!

From
Adrian Klaver
Date:
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

Re: Re: Re: Can not decompress a compressedstring under plpy!

From
Jasen Betts
Date:
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.