\watch 0 or \watch 0.00001 doesn't do what I want

Heikki Linnakangas <hlinnaka@iki.fi>

From: Heikki Linnakangas <hlinnaka@iki.fi>
To: "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Cc: Daniel Gustafsson <daniel@yesql.se>
Date: 2024-10-09T13:38:56Z
Lists: pgsql-hackers
Daniel's post [1] on \watch reminded me of this little issue I bumped into:

I wanted to run a query in a tight loop, without any delay. I tried 
"\watch 0", but it didn't do what I wanted:

postgres=# \watch 0
Wed 09 Oct 2024 16:34:19 EEST (every 1s)

  ?column?
----------
         1
(1 row)

Wed 09 Oct 2024 16:34:20 EEST (every 1s)

  ?column?
----------
         1
(1 row)

^C

Then I tried setting the delay really small, but that didn't do what I 
wanted either:

postgres=# \watch 0.00001
Wed 09 Oct 2024 16:36:45 EEST (every 1e-05s)

  ?column?
----------
         1
(1 row)

^C

It runs the query just once and then hangs forever, until I hit CTRL-C 
to cancel.

[1] 
https://www.postgresql.org/message-id/B2FD26B4-8F64-4552-A603-5CC3DF1C7103%40yesql.se

-- 
Heikki Linnakangas
Neon (https://neon.tech)



Commits

  1. psql: Fix \watch when using interval values less than 1ms