Every so often, when working with functions, errors get reported with context information similar to this:
Context: PL/pgSQL function "test_function" line 5 at SQL statement
Often, the function source is kept under version control (or in a file annotated, commented, etc in certain ways) such that the file line number does not correspond to the function source line number.
In such cases, a typical approach would be to go and do
\df+ test_function
which nicely produces function metadata and source as contained in the database. For non-trivial functions it is, however, slightly cumbersome to count the line numbers onscreen (let alone line break settings).
Hence I wonder whether an approach along these lines:
select row_number() over () || src_line from ( select unnest(string_to_array(prosrc, E'\n')) as src_line from pg_proc where proname = 'FUNC_NAME' ) as func_src;
would be a worthwhile change to the query "\df+" uses ?
do you know \sf+ fce command?
Regards
Pavel
(Resorting to "\ef" won't align temp file lines with function source line numbers either, because pgsql boilerplate is needed for function definition etc.)