Обсуждение: \ef should probably append semicolons

Поиск
Список
Период
Сортировка

\ef should probably append semicolons

От
"Joshua Tolley"
Дата:
The new \ef psql command creates nicely usable "CREATE OR REPLACE
FUNCTION ..." text based on the function I tell it to edit, but the
text it creates *doesn't* include a final semicolon, so when I exit my
editor-of-choice after messing with my function, it doesn't run the
code I've given it until I type one of my own. This is annoying. See
attached for a patch to fix it.

- Josh / eggyknap

Вложения

Re: \ef should probably append semicolons

От
Tom Lane
Дата:
"Joshua Tolley" <eggyknap@gmail.com> writes:
> The new \ef psql command creates nicely usable "CREATE OR REPLACE
> FUNCTION ..." text based on the function I tell it to edit, but the
> text it creates *doesn't* include a final semicolon, so when I exit my
> editor-of-choice after messing with my function, it doesn't run the
> code I've given it until I type one of my own. This is annoying.

This is intentional.

If the semicolon is there, the command will be squirted to the backend
instantaneously upon your exiting the $EDITOR.  The potential bad
consequences of that seem to me to outweigh the annoyance factor of
typing ; and return.

Now, if you want to fix psql so that even with a semicolon there it
will redisplay the command buffer and wait for a return, then I'd agree
that that's an improvement.  I couldn't figure out how to get readline
to cooperate with that ... but I didn't spend a lot of time looking.
        regards, tom lane


Re: \ef should probably append semicolons

От
"Joshua Tolley"
Дата:
On Fri, Oct 10, 2008 at 7:10 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> "Joshua Tolley" <eggyknap@gmail.com> writes:
>> The new \ef psql command creates nicely usable "CREATE OR REPLACE
>> FUNCTION ..." text based on the function I tell it to edit, but the
>> text it creates *doesn't* include a final semicolon, so when I exit my
>> editor-of-choice after messing with my function, it doesn't run the
>> code I've given it until I type one of my own. This is annoying.
>
> This is intentional.
>
> If the semicolon is there, the command will be squirted to the backend
> instantaneously upon your exiting the $EDITOR.  The potential bad
> consequences of that seem to me to outweigh the annoyance factor of
> typing ; and return.

Something in the back of my mind told me this might have been on
purpose -- despite a number of us around a table at PG West agreeing
current behavior was a pain.

> Now, if you want to fix psql so that even with a semicolon there it
> will redisplay the command buffer and wait for a return, then I'd agree
> that that's an improvement.  I couldn't figure out how to get readline
> to cooperate with that ... but I didn't spend a lot of time looking.

Mmm... but that's so much harder than a 2 line patch :)  Thanks for
commenting. I may consider that in the (admittedly unlikely) event I
feel like getting personal with readline.

- Josh / eggyknap


Re: \ef should probably append semicolons

От
"David E. Wheeler"
Дата:
On Oct 10, 2008, at 20:27, Joshua Tolley wrote:

>> Now, if you want to fix psql so that even with a semicolon there it
>> will redisplay the command buffer and wait for a return, then I'd  
>> agree
>> that that's an improvement.  I couldn't figure out how to get  
>> readline
>> to cooperate with that ... but I didn't spend a lot of time looking.
>
> Mmm... but that's so much harder than a 2 line patch :)  Thanks for
> commenting. I may consider that in the (admittedly unlikely) event I
> feel like getting personal with readline.

Not to mention libedit! :-)

Best,

David


Re: \ef should probably append semicolons

От
David Fetter
Дата:
On Fri, Oct 10, 2008 at 09:10:50PM -0400, Tom Lane wrote:
> "Joshua Tolley" <eggyknap@gmail.com> writes:
> > The new \ef psql command creates nicely usable "CREATE OR REPLACE
> > FUNCTION ..." text based on the function I tell it to edit, but the
> > text it creates *doesn't* include a final semicolon, so when I exit my
> > editor-of-choice after messing with my function, it doesn't run the
> > code I've given it until I type one of my own. This is annoying.
> 
> This is intentional.
> 
> If the semicolon is there, the command will be squirted to the backend
> instantaneously upon your exiting the $EDITOR.  The potential bad
> consequences of that seem to me to outweigh the annoyance factor of
> typing ; and return.

To mitigate this annoyance, we could have \ef prepend a
multi-line-style comment (proof against editor wrapping) that reads
something like:

/*
To make these changes take effect immediately, put a semicolon after
the $FUNCTION$ tag
*/

Speaking of the $FUNCTION$ tag, it appears to be being put in there
unconditionally, which will eventually break somebody's code.  How
does pg_dump handle the dollar quoting situation, and could this
machinery be used here?

Cheers,
David.
-- 
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter      XMPP: david.fetter@gmail.com

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate