using __func__ to locate and distinguish some error messages
hi.
we have 450 appearance of
`cache lookup failed .*`
we have 141 appearance of
`could not open file .*`
so when it actually happens, it cannot quickly locate which function
where the error has happened.
maybe under certain conditions (e.g. certain build type or certain
log_min_messages),
we can also print out the function name by using gcc __func__.
or we can just do like:
if (!HeapTupleIsValid(tuple))
elog(ERROR, "cache lookup failed for relation %u %s",
RelationGetRelid(rel), __func__);
given that these errors are very unlikely to happen, if it happens,
printing out the function name seems not that inversive?
On 2024-Jun-07, jian he wrote:
so when it actually happens, it cannot quickly locate which function
where the error has happened.
maybe under certain conditions (e.g. certain build type or certain
log_min_messages),
we can also print out the function name by using gcc __func__.
That information is already in the error data, so you don't need it in
the message text. You can change your log_error_verbosity if you want
it to show up in the log; in psql you can use \errverbose to have it
shown to you after the error is thrown, or you can use
\pset VERBOSITY verbose
to have it printed for every error message. Tools other than psql would
need their own specific ways to display those.
--
Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/
"Hay que recordar que la existencia en el cosmos, y particularmente la
elaboración de civilizaciones dentro de él no son, por desgracia,
nada idílicas" (Ijon Tichy)
On Fri, Jun 7, 2024 at 4:28 PM Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:
On 2024-Jun-07, jian he wrote:
so when it actually happens, it cannot quickly locate which function
where the error has happened.
maybe under certain conditions (e.g. certain build type or certain
log_min_messages),
we can also print out the function name by using gcc __func__.That information is already in the error data, so you don't need it in
the message text. You can change your log_error_verbosity if you want
it to show up in the log; in psql you can use \errverbose to have it
shown to you after the error is thrown, or you can use
\pset VERBOSITY verbose
to have it printed for every error message. Tools other than psql would
need their own specific ways to display those.
Thanks for pointing this out.