On Tue, Sep 17, 2024 at 5:00 PM Alexander Lakhin <exclus...@gmail.com> wrote: > > Please look at an assertion failure, caused by \bind_named: > regression=# SELECT $1 \parse s > \bind_named s > > regression=# \bind_named > \bind_named: missing required argument > regression=# 1 \g > psql: common.c:1501: ExecQueryAndProcessResults: Assertion `pset.stmtName != > ((void *)0)' failed.
Thanks for the report. Looking at the failure, it seems like the issue was already present with \bind, though there was no assertion failure: repeatedly calling \bind would allocate new stmtName/bind_params and leak them at the start of exec_command_bind. I've joined a patch to clean the psql extended state at the start of every extended protocol backslash command, freeing the allocated variables and resetting the send_mode. Another possible approach would be to return an error when there's already an existing state instead of overwriting it.
v1-0001-Clean-psql-extended-state-on-extended-command.patch
Description: Binary data