The details shown are only the communication bowels. So we go from:
Traceback (most recent call last):
File "trace.py", line 301, in <module>
conn.execute("select pg_sleep(0.2)")
File "/usr/lib/python3.8/contextlib.py", line 120, in __exit__
next(self.gen)
File "/home/piro/dev/psycopg3/psycopg/psycopg/connection.py", line 881, in pipeline
yield pipeline
File "/home/piro/dev/psycopg3/psycopg/psycopg/_pipeline.py", line 197, in __exit__
self.sync()
File "/home/piro/dev/psycopg3/psycopg/psycopg/_pipeline.py", line 183, in sync
self._conn.wait(self._sync_gen())
File "/home/piro/dev/psycopg3/psycopg/psycopg/connection.py", line 896, in wait
return waiting.wait(gen, self.pgconn.socket, timeout=timeout)
File "/home/piro/dev/psycopg3/psycopg/psycopg/waiting.py", line 237, in wait_epoll
s = gen.send(ready)
File "/home/piro/dev/psycopg3/psycopg/psycopg/_pipeline.py", line 92, in _sync_gen
yield from self._communicate_gen()
File "/home/piro/dev/psycopg3/psycopg/psycopg/_pipeline.py", line 105, in _communicate_gen
self._process_results(queued, results)
File "/home/piro/dev/psycopg3/psycopg/psycopg/_pipeline.py", line 149, in _process_results
raise e.error_from_result(result, encoding=pgconn_encoding(self.pgconn))
psycopg.errors.UndefinedColumn: column "foo" does not exist
LINE 1: select foo
^
to:
Traceback (most recent call last):
File "trace.py", line 301, in <module>
conn.execute("select pg_sleep(0.2)")
File "/usr/lib/python3.8/contextlib.py", line 120, in __exit__
next(self.gen)
File "/home/piro/dev/psycopg3/psycopg/psycopg/connection.py", line 881, in pipeline
yield pipeline
File "/home/piro/dev/psycopg3/psycopg/psycopg/_pipeline.py", line 205, in __exit__
raise exc2.with_traceback(None)
psycopg.errors.UndefinedColumn: column "foo" does not exist
LINE 1: select foo
^
which shows much more clearly that the traceback was raised at pipeline
block exit.