Thanks for the explanation.
Yeah, here's what's happening. So, yeah, we'll check on having to script it instead.
###
=> select now() ;
now
-------------------------------
2024-11-07 07:46:23.876888+00
(1 row)
=> \! cat x.sql
select version() ;
=> \i x.sql
version
--------------------------------------------------------------------------------------------------------------
PostgreSQL 14.12 on aarch64-unknown-linux-gnu, compiled by aarch64-unknown-linux-gnu-gcc (GCC) 9.5.0, 64-bit
(1 row)
=> \watch 5
Thu 07 Nov 2024 20:47:05 NZDT (every 5s)
now
-------------------------------
2024-11-07 07:47:05.411747+00
(1 row)
Thu 07 Nov 2024 20:47:10 NZDT (every 5s)
now
-------------------------------
2024-11-07 07:47:10.418915+00
(1 row)
^C
On Wednesday, November 6, 2024, Edwin UY <edwin.uy@gmail.com> wrote:
Is there no way to use \watch to let it run the last script that I just run?
When do I do as below:
select 1 ;
\i x.sql
\watch 20
It runs select 1 instead.
Watch is documented to act on either a non-empty query buffer or the last sent command. I would expect that whatever the final SQL command present in x.sql is would be the command that gets watched. If indeed the preceding select 1 command is watched there would seem to be an undocumented interaction going on.
In any case, no, you cannot watch a meta-command. You’d have to resort to shell scripting the repeated execution of the psql program itself.
David J.