pg.ddx.io  pgsql-interfaces@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Michele Bendazzoli <mickymouse@mickymouse.it>
To: pgsql-interfaces@postgresql.org
Subject: Re: plpythonu strange syntax error
Date: Sat, 05 Mar 2005 16:46:02 +0100
Message-ID: <1110037562.15329.21.camel@mickymouse.i.mickymouse.it> (raw)
In-Reply-To: <20050218174007.GA66076@winnie.fuhr.org>
References: <1108719498.4676.14.camel@mickymouse.i.mickymouse.it>
	<20050218095623.GA54765@winnie.fuhr.org>
	<1108725960.4676.18.camel@mickymouse.i.mickymouse.it>
	<1108727087.4676.28.camel@mickymouse.i.mickymouse.it>
	<20050218174007.GA66076@winnie.fuhr.org>

Excuse me if i don't replay before, but i haven't the possibility to try
pgadmin in a windows system (it is located in the Customer's Firm).

Il giorno ven, 18-02-2005 alle 10:40 -0700, Michael Fuhr ha scritto:
cut

> If I'm interpreting that correctly, then regardless of platform, a
> string containing code to be executed must end its lines with LF
> (\n), not CRLF (\r\n).  When running an ordinary Python script, a
> CRLF => LF translation presumably happens as the script is read,
> before the code is executed.  You might not be getting that translation
> when using pgAdmin.  As I recall from the thread, there was also
> concern about restoring a function that had been dumped with pg_dump.
> 
> Have you checked whether the plpythonu code contains carriage
> returns?  I forget if there's an easier way, but you could do
> this:
> 
> SELECT replace(prosrc, '\r', 'CR')
> FROM pg_proc
> WHERE proname = 'foo';
> 
> I just created a plpythonu function with a carriage return and the
> above command shows this:
> 
>      replace      
> ------------------
>  x = 1CR
> return x
> (1 row)

> Trying to run the function fails:
> 
> SELECT foo();
> ERROR:  plpython: could not compile function "foo"
> DETAIL:  exceptions.SyntaxError: invalid syntax (line 2)
> 
> If I strip the carriage return from the function's prosrc column
> then it works:
> 
> UPDATE pg_proc SET prosrc = replace(prosrc, '\r', '')
> WHERE proname = 'foo';
> 
> SELECT foo();
>  foo 
> -----
>    1
> (1 row)
> 
> You might try that to see if it works (be careful modifying system
> tables -- I'd suggest using a transaction so you can ROLLBACK if
> the update affected too many rows).

Yes it works. So the problem is that in Windows system PGAdmin seem to
create the function with CRLF characters. 

I don't know if it is a python fault or a pgadmin fault but I think that
someone should fix it, because it is impossibile to use PGAdmin to
create plpython function in windows ...

Thank you for the the quick and precise response.

ciao, Michele




view thread (9+ messages)  latest in thread

Message-ID: <1110037562.15329.21.camel@mickymouse.i.mickymouse.it>
Permalink:  ../1110037562.15329.21.camel@mickymouse.i.mickymouse.it/
Also on:    postgresql.org/message-id/1110037562.15329.21.camel@mickymouse.i.mickymouse.it

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-interfaces@postgresql.org
  Cc: mickymouse@mickymouse.it
  Subject: Re: plpythonu strange syntax error
  In-Reply-To: <1110037562.15329.21.camel@mickymouse.i.mickymouse.it>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox