Re: Getting more detail in plpython error messages

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Jeff Ross <jross(at)openvistas(dot)net>
Cc: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: Getting more detail in plpython error messages
Date: 2022-03-07 18:06:41
Message-ID: 206445.1646676401@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Jeff Ross <jross(at)openvistas(dot)net> writes:
> With plpython (both u and 3u) all I see printed is the ERROR part.

>     try:
>         check = plpy.execute("delete from inspection where bundle_id in
> (select id from test_archive_20170401.load order by id)")
>     except plpy.SPIError as e:
>         plpy.notice("Error!", e)

> postgres(at)testdb# select * from test_delete();
> NOTICE:  ('Error!', ForeignKeyViolation('update or delete on table
> "inspection" violates foreign key constraint
> "inspection_weather_inspection_id_inspection_id_fk" on table
> "inspection_weather"',))

> Is there a way to get the DETAIL part as well?

It's not very well documented AFAICS, but a SPIError object has a
"detail" attribute, so "e.detail" should help you. It looks like
you might prefer to print "e.spidata", which seems to contain all
the available fields.

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Jeff Ross 2022-03-07 18:12:29 Re: Getting more detail in plpython error messages
Previous Message Andres Freund 2022-03-07 17:54:22 Re: Interesting fail when migrating Pg from Ubuntu Bionic to Focal