Hi,

Thanks for developing this useful feature!
I've tested it and reviewed the patch. I'd like to provide some feedback.

(1)

I tested with v3 patch and found the following compile error.
It seems that math.h needs to be included in variables.c.

variables.c: In function 'ParseVariableDouble':
variables.c:220:54: error: 'HUGE_VAL' undeclared (first use in this function) 220 | (dblval == 0.0 || dblval >= HUGE_VAL || dblval <= -HUGE_VAL))
      |                                                      ^~~~~~~~
variables.c:220:54: note: each undeclared identifier is reported only once for each function it appears in variables.c:232:1: warning: control reaches end of non-void function [-Wreturn-type]
  232 | }
      | ^

(2)

Although the error handling logic is being discussed now, I think it would be better, at least, to align the logic and messages of exec_command_watch() and ParseVariableDouble(). I understand that the error message 'for "WATCH_INTERVAL"' will remain as a difference
since it should be considered when loaded via psqlrc.

# v3 patch test result

* minus value
=# \watch i=-1
\watch: incorrect interval value "-1"

=# \set WATCH_INTERVAL -1
invalid value "-1" for "WATCH_INTERVAL": must be at least 0.00

* not interval value
=# \watch i=1s
\watch: incorrect interval value "1s"

=# \set WATCH_INTERVAL 1s
invalid value "1s" for "WATCH_INTERVAL"

* maximum value
=# \watch i=1e500
\watch: incorrect interval value "1e500"

=# \set WATCH_INTERVAL 1e500
"1e500" is out of range for "WATCH_INTERVAL"


(3)

ParseVariableDouble() doesn't have a comment yet, though you may be planning to add one later.


(4)

I believe the default value is 2 after the WATCH_INTERVAL is specified because \unset WATCH_INTERVAL sets it to '2'. So, why not update the following sentence accordingly?

- of rows. Wait the specified number of seconds (default 2) between executions.
-        For backwards compatibility,
+ of rows. Wait the specified number of seconds (default 2, which can be
+        changed with the variable
+        between executions.  For backwards compatibility,

For example,

Wait <varname>WATCH_INTERVAL</varname> seconds unless the interval option is specified. If the interval option is specified, wait the specified number of seconds instead.

+ This variable sets the default interval which <command>\watch</command> + waits between executing the query. Specifying an interval in the
+        command overrides this variable.

This variable sets the interval in seconds that <command>\watch</command> waits
between executions. The default value is 2.0.


(5)

I think it's better to replace queries with executions because the \watch
documentation says so.

+       HELP0("  WATCH_INTERVAL\n"
+                 "    number of seconds \\watch waits between queries\n");


Regards,
--
Masahiro Ikeda
NTT DATA CORPORATION


Reply via email to