Re: Feature request: include script file into function body - Mailing list pgsql-bugs

From Steve White
Subject Re: Feature request: include script file into function body
Date
Msg-id 20110202111808.GA21282@cashmere.aip.de
Whole thread Raw
In response to Re: Feature request: include script file into function body  (Robert Haas <robertmhaas@gmail.com>)
Responses Re: Feature request: include script file into function body  (Pavel Stehule <pavel.stehule@gmail.com>)
Re: Feature request: include script file into function body  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
Hi, Robert,

On  1.02.11, Robert Haas wrote:
>
> Can't you already do it this way:
>
> \set yadda `cat yadda_yadda.py`
> CREATE FUNCTION yadda_yadda() returns text language plpythonu AS
> :'yadda';
>
> I guess it probably won't work on Windows...
>
This would also satisfy my immediate needs...
if only I could get it to work.

I made a file 'yadda_yadda.py' containing only the line:
print 'hello world'

====================================================================
d=# \set yadda `cat yadda_yadda.py`
d=# \echo :yadda
print 'hello world'
====================================================================

So far, so good.

But the :'yadda'; produces an error--it seems the variable yadda isn't
expanded in the presence of the quotes.

====================================================================
d=# CREATE FUNCTION yadda_yadda() returns text language plpythonu AS
:'yadda';
ERROR:  syntax error at or near ":"
LINE 2: :'yadda';
====================================================================

Without the quotes, the colon expands the variable, but not into a
string function body:

====================================================================
d=# CREATE FUNCTION yadda_yadda() returns text language plpythonu AS
:yadda;
ERROR:  syntax error at or near "print"
LINE 2: print 'hello world';
====================================================================

Just for completeness and blind optimism let's try putting string
delimiters on the outside.  The command succeeds but with the wrong
effect.

====================================================================
d=# CREATE OR REPLACE FUNCTION yadda_yadda() returns text language plpythonu AS
$$:yadda$$;
CREATE FUNCTION
cepheids=# \df+ yadda_yadda
                                                             List of functions
  Schema   |    Name     | Result data type | Argument data types |  Type  | Volatility |  Owner   | Language  | Source
code| Description  

-----------+-------------+------------------+---------------------+--------+------------+----------+-----------+-------------+-------------
 astronomy | yadda_yadda | text             |                     | normal | volatile   | cepheids | plpythonu | :yadda
    |  
====================================================================



Please explain.

--
| -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
| Steve White                                             +49(331)7499-202
| E-Science                                        Zi. 27  Villa Turbulenz
| -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
| Astrophysikalisches Institut Potsdam (AIP)
| An der Sternwarte 16, D-14482 Potsdam
|
| Vorstand: Prof. Dr. Matthias Steinmetz, Peter A. Stolz
|
| Stiftung privaten Rechts, Stiftungsverzeichnis Brandenburg: III/7-71-026
| -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: Feature request: include script file into function body
Next
From: Pavel Stehule
Date:
Subject: Re: Feature request: include script file into function body