Tom Lane wrote:
> Andrew Dunstan <[EMAIL PROTECTED]> writes:
> > In that case, though, the solution will presumably look at least a bit 
> > different from those discussed so far in this thread. Or would you have 
> > psql detect that in place of a string there was "stdin" or whatever and 
> > then replace it with the inline string before passing it to the backend?
> 
> Please see the archives.  I think that what was being discussed was
> something along the lines of
> 
>       foo=> CREATE FUNCTION myfunc(...) RETURNS ... AS
>       foo=> \beginliteral
>       foo'> type my function definition here
>       foo'> and here
>       foo'> \endliteral
>       foo-> LANGUAGE plpgsql;
> 
> and psql would proceed to quotify whatever you entered between
> the two backslash commands.  (Notice this could be used for any
> string-literal entry problem, not only CREATE FUNCTION.)  I'm fuzzy on
> the details though; this may not have been the best idea presented.

Let me jump in --- there is the issue of how to prevent the backend from
running the query through the lexer/parser.  The cleanest idea presented
was:

        >CREATE FUNCTION bob() RETURNS INTEGER AS stdin LANGUAGE 'plpgsql';
        >BEGIN
        >       ...
        >END;
        >\.

The interesting thing I missed at first viewing was that there is a
semicolon after the first line.  This allows the backend to go into a
COPY-like mode where the client can pass lines to the backend bypassing
the lexer/parser.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

               http://archives.postgresql.org

Reply via email to