Обсуждение: how to emit line number in a function?

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

how to emit line number in a function?

От
Bricklen Anderson
Дата:
I couldn't find any useful references in the docs or archives for emitting the
line number of a plpgsql function (in a RAISE statement). I'd like to use it for
debugging some complex functions.
Does anyone have any tips on where to look, or an example of this?


Cheers,

Bricklen

--
_______________________________

This e-mail may be privileged and/or confidential, and the sender does
not waive any related rights and obligations. Any distribution, use or
copying of this e-mail or the information it contains by other than an
intended recipient is unauthorized. If you received this e-mail in
error, please advise me (by return e-mail or otherwise) immediately.
_______________________________

Re: how to emit line number in a function?

От
Richard Huxton
Дата:
Bricklen Anderson wrote:
> I couldn't find any useful references in the docs or archives for emitting the
> line number of a plpgsql function (in a RAISE statement). I'd like to use it for
> debugging some complex functions.
> Does anyone have any tips on where to look, or an example of this?

I don't think you can do so yourself. However, recent versions of PG
should display the line number of a RAISE NOTICE or similar if you have
the error verbosity high enough.

--
   Richard Huxton
   Archonet Ltd

Re: how to emit line number in a function?

От
Bricklen Anderson
Дата:
Richard Huxton wrote:
> Bricklen Anderson wrote:
>
>>I couldn't find any useful references in the docs or archives for emitting the
>>line number of a plpgsql function (in a RAISE statement). I'd like to use it for
>>debugging some complex functions.
>>Does anyone have any tips on where to look, or an example of this?
>
>
> I don't think you can do so yourself. However, recent versions of PG
> should display the line number of a RAISE NOTICE or similar if you have
> the error verbosity high enough.
>
Okay, thanks for the head's up.
Is there any other way to get the current line number, for example, an inline
function call to elog(?) or something? It's not a huge deal, but it would be
useful for debugging and timings.

--
_______________________________

This e-mail may be privileged and/or confidential, and the sender does
not waive any related rights and obligations. Any distribution, use or
copying of this e-mail or the information it contains by other than an
intended recipient is unauthorized. If you received this e-mail in
error, please advise me (by return e-mail or otherwise) immediately.
_______________________________

Re: how to emit line number in a function?

От
"Jim C. Nasby"
Дата:
On Thu, Nov 03, 2005 at 09:25:27AM -0800, Bricklen Anderson wrote:
> Richard Huxton wrote:
> > Bricklen Anderson wrote:
> >
> >>I couldn't find any useful references in the docs or archives for emitting the
> >>line number of a plpgsql function (in a RAISE statement). I'd like to use it for
> >>debugging some complex functions.
> >>Does anyone have any tips on where to look, or an example of this?
> >
> >
> > I don't think you can do so yourself. However, recent versions of PG
> > should display the line number of a RAISE NOTICE or similar if you have
> > the error verbosity high enough.
> >
> Okay, thanks for the head's up.
> Is there any other way to get the current line number, for example, an inline
> function call to elog(?) or something? It's not a huge deal, but it would be
> useful for debugging and timings.

This seems to be something useful to have... can we get a TODO? Unless
maybe Bricklen wants to submit a patch... :)
--
Jim C. Nasby, Sr. Engineering Consultant      jnasby@pervasive.com
Pervasive Software      http://pervasive.com    work: 512-231-6117
vcard: http://jim.nasby.net/pervasive.vcf       cell: 512-569-9461

Re: how to emit line number in a function?

От
Bricklen Anderson
Дата:
Jim C. Nasby wrote:
> This seems to be something useful to have... can we get a TODO? Unless
> maybe Bricklen wants to submit a patch... :)

I can barely even spell C ...

--
_______________________________

This e-mail may be privileged and/or confidential, and the sender does
not waive any related rights and obligations. Any distribution, use or
copying of this e-mail or the information it contains by other than an
intended recipient is unauthorized. If you received this e-mail in
error, please advise me (by return e-mail or otherwise) immediately.
_______________________________

Re: how to emit line number in a function?

От
Jerry Sievers
Дата:
Bricklen Anderson <BAnderson@presinet.com> writes:

> I couldn't find any useful references in the docs or archives for emitting the
> line number of a plpgsql function (in a RAISE statement). I'd like to use it for
> debugging some complex functions.
> Does anyone have any tips on where to look, or an example of this?

Have a look at the m4 macro processor

changequote({,})dnl
define({func_body},{$$begin
    raise exception 'I barfed on line #__line__';
end$$})dnl

create function some_func()
returns whatever
as func_body
language plpgsql;

This can be useful sometimes... but may ADD to your debugging
headaches if not used artfully!

HTH

--
-------------------------------------------------------------------------------
Jerry Sievers   305 854-3001 (home)     WWW ECommerce Consultant
                305 321-1144 (mobile    http://www.JerrySievers.com/

Re: how to emit line number in a function?

От
Bricklen Anderson
Дата:
Jerry Sievers wrote:
> Bricklen Anderson <BAnderson@presinet.com> writes:
>
>
>>I couldn't find any useful references in the docs or archives for emitting the
>>line number of a plpgsql function (in a RAISE statement). I'd like to use it for
>>debugging some complex functions.
>>Does anyone have any tips on where to look, or an example of this?
>
>
> Have a look at the m4 macro processor
>
> changequote({,})dnl
> define({func_body},{$$begin
>     raise exception 'I barfed on line #__line__';
> end$$})dnl
>
> create function some_func()
> returns whatever
> as func_body
> language plpgsql;
>
> This can be useful sometimes... but may ADD to your debugging
> headaches if not used artfully!
>
> HTH
>
I'll look into that, thanks for the suggestion.


Cheers,

Bricklen

--
_______________________________

This e-mail may be privileged and/or confidential, and the sender does
not waive any related rights and obligations. Any distribution, use or
copying of this e-mail or the information it contains by other than an
intended recipient is unauthorized. If you received this e-mail in
error, please advise me (by return e-mail or otherwise) immediately.
_______________________________