September 6th, 2008 by depesz | Tags: , , , , | 2 comments »
Did it help? If yes - maybe you can help me?

Today, Tom Lane committed patch, written by Abhijit Menon-Sen, which adds interesting feature to psql. Namely – it simplifies changing definition of functions.

Commit message pretty much explains everything:

Implement a psql command "\ef" to edit the definition of a function.
In support of that, create a backend function pg_get_functiondef().
The psql command is functional but maybe a bit rough around the edges...
 
Abhijit Menon-Sen

To elaborate a bit.

To change function definition before, you had to basically pg_dump -s the database, find the function, change it, and load to psql.

Other option was simply to keep creation.sql file, and modify it when you had to modify the function.

But now, it's simpler. It is enough to call \ef function_name, and your favorite $EDITOR will be launched, with full “CREATE OR REPLACE FUNCTION…" conveniently put in the edited buffer.

In case there is more than 1 function with given name, you will get nice error message:

# \ef texticlike
ERROR: more than one function named "texticlike"
LINE 1: SELECT 'texticlike'::pg_catalog.regproc::pg_catalog.oid
^

And, then you can use \ef with function params, like:

# \ef texticlike(citext, text)

Great addition. psql gets better and better.

  1. 2 comments

  2. # jan
    Jul 1, 2015

    Hi depesz, how about for overloaded functions?
    When i’m trying to use \ef and specifying an overloaded function it throws an error. ERROR: more than one function named “functionname”.

    Thanks!

  3. Jul 1, 2015

    @jan:
    then just \ef function_name(argument, types)

Leave a comment