psql 13.2 退出编辑器时,无论退出编辑器后如何,都会执行查询缓冲区 - 在这种情况下,缓冲区现在可能保存最近执行的 SQL 查询。
重现:
vim使用\e或\e filename从psql控制台启动编辑器(在我的情况下)。:q(或:q!强制)预期行为:回到启动编辑器之前的状态。(我取消了编辑!)
观察到的行为:重新执行上次执行的 SQL 查询。
似乎发生了什么\e:
它执行(相当于)\p,因此当前查询缓冲区包含前一个命令,当它为空时。(编辑文件时用户看不到!)
手册\p :
\p或者将当前查询缓冲区打印到标准输出。如果当前查询缓冲区为空,则打印最近执行的查询。
启动编辑器。如果提供了文件名,则加载文件,否则加载查询缓冲区。
如果编辑器以写入结束,则将结果复制到查询缓冲区。
如果编辑被取消(:q在 vim 中),不要覆盖查询缓冲区。(它现在保存了之前的命令!)
执行查询缓冲区。或者,准确地说,这样做:
行为似乎可以\p(只是复制查询缓冲区,没有造成任何伤害),但不能\e执行,它可以执行我什至没有看到的命令。
这是一个错误吗?
无论哪种方式,我至少想在离开编辑器时禁用自动执行。但这似乎不可能。或者我错过了什么?