Re: Bug fix for psql's meta-command \ev
Aleksander Alekseev <aleksander@timescale.com>
From: Aleksander Alekseev <aleksander@timescale.com>
To: pgsql-hackers@lists.postgresql.org
Cc: Kyotaro Horiguchi <horikyota.ntt@gmail.com>, bt23yoshidar@oss.nttdata.com
Date: 2023-09-18T15:54:50Z
Lists: pgsql-hackers
Hi, I came across the patch since it was marked as "Needs review" (and then I realized that I mistakenly opened the upcoming commit fest, not the current one...). > Good catch! I agree to this. > > > This problem can be resolved by resetting the query buffer on > > error. You can see the attached source code. After that, it will > > result in output like the following: > > While exec_command_ef_ev() currently preserves the existing content of > the query buffer in case of certain failures, This behavior doesn't > seem to be particularly significant, especially given that both \ef > and \ev are intended to overwrite the query buffer on success. > > We have the option to fix get_create_object_cmd() and ensure > exec_command_ef_ev() retains the existing content of the query buffer > on failure. However, this approach seems like overly cumbersome. So > I'm +1 to this approach. > > A comment might be necessary to clarify that we need to wipe out the > query buffer because it could be overwritten with an incomplete query > string due to certain failures. I tested the patch and it LGTM too. I don't have a strong opinion on whether we should bother with a comment or not. As a side note I wonder whether we shouldn't assume that query_buf is always properly initialized elsewhere. But this is probably out of scope of this particular discussion. -- Best regards, Aleksander Alekseev
Commits
-
psql: Reset query buffer of \e, \ef and \ev on error
- cb943054f3f6 17.0 landed