These approaches are to some extent orthogonal, ISTM. Maybe the best
solution would be to do as Tom suggests and just change psql (and, I
would add, pg_dump) to act nicely here, and if other interface
users/authors need/want something along these lines re-examine the
issue. I use JDBC for my web clients in my current project, but I
wouldn't create a function in the client. I probably wouldn't using
DBI/DBD:Pg either. So taking myself as a sample of one perhaps it is
true that it's only needed in psql :-)
I'm all for minimal solutions as long as they look nice.
cheers
andrew
Tom Lane wrote:
>Bruce Momjian <pgman@candle.pha.pa.us> writes:
>
>
>>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:
>>[snip]
>>
>>
>
>That's the same idea that was being discussed in this thread. I was
>trying to remind people of the existence of prior discussion with
>different (and IMHO better) ideas.
>
>
>
>>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.
>>
>>
>
>What I don't like about this scheme is that it requires mods on both the
>backend and client sides, to solve a problem that could be solved as
>well or better (and definitely more simply) on the client side alone.
>People are being misled by considering only psql, which is so stupid
>that it might actually not need any change to be used with a COPY-based
>function definition mode. I doubt that is true of any other client.
>For a client that actually understands it's doing a function definition,
>this is *not* simpler nor better. Instead of running a
>string-literal-quotify transformation on the function text (which you
>must admit is trivial), the client has to support switching into the
>COPY protocol. That's not simpler. Add in any meaningful error
>recovery (what do you do if the backend doesn't switch into COPY mode?)
>and it's substantially more complex.
>
>
>