Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Avoid using ambiguous word "non-negative" in error messages.
authorFujii Masao <fujii@postgresql.org>
Tue, 27 Jul 2021 16:25:53 +0000 (01:25 +0900)
committerFujii Masao <fujii@postgresql.org>
Tue, 27 Jul 2021 16:25:53 +0000 (01:25 +0900)
The error messages using the word "non-negative" are confusing
because it's ambiguous about whether it accepts zero or not.
This commit improves those error messages by replacing it with
less ambiguous word like "greater than zero" or
"greater than or equal to zero".

Also this commit added the note about the word "non-negative" to
the error message style guide, to help writing the new error messages.

When postgres_fdw option fetch_size was set to zero, previously
the error message "fetch_size requires a non-negative integer value"
was reported. This error message was outright buggy. Therefore
back-patch to all supported versions where such buggy error message
could be thrown.

Reported-by: Hou Zhijie
Author: Bharath Rupireddy
Reviewed-by: Kyotaro Horiguchi, Fujii Masao
Discussion: https://postgr.es/m/OS0PR01MB5716415335A06B489F1B3A8194569@OS0PR01MB5716.jpnprd01.prod.outlook.com

contrib/postgres_fdw/option.c
doc/src/sgml/sources.sgml
src/backend/utils/adt/tsquery_op.c
src/test/modules/test_shm_mq/test.c

index 67e1c59951ad767c3cc7eb39739b6adb1f71ce3a..0d755c69b2d9ad3a1e7a6f657de577f122cfe06f 100644 (file)
@@ -116,15 +116,18 @@ postgres_fdw_validator(PG_FUNCTION_ARGS)
        else if (strcmp(def->defname, "fdw_startup_cost") == 0 ||
                 strcmp(def->defname, "fdw_tuple_cost") == 0)
        {
-           /* these must have a non-negative numeric value */
+           /*
+            * These must have a floating point value greater than or equal to
+            * zero.
+            */
            double      val;
            char       *endp;
 
            val = strtod(defGetString(def), &endp);
            if (*endp || val < 0)
                ereport(ERROR,
-                       (errcode(ERRCODE_SYNTAX_ERROR),
-                        errmsg("%s requires a non-negative numeric value",
+                       (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+                        errmsg("\"%s\" must be a floating point value greater than or equal to zero",
                                def->defname)));
        }
        else if (strcmp(def->defname, "extensions") == 0)
@@ -139,8 +142,8 @@ postgres_fdw_validator(PG_FUNCTION_ARGS)
            fetch_size = strtol(defGetString(def), NULL, 10);
            if (fetch_size <= 0)
                ereport(ERROR,
-                       (errcode(ERRCODE_SYNTAX_ERROR),
-                        errmsg("%s requires a non-negative integer value",
+                       (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+                        errmsg("\"%s\" must be an integer value greater than zero",
                                def->defname)));
        }
    }
index a1a14a43a0703d0e1c86c7b5cc011f7ba0ea7d38..179f4a19c2cb619614dff280c2c3ea7f3c490c18 100644 (file)
@@ -806,6 +806,16 @@ BETTER: unrecognized node type: 42
    </para>
   </formalpara>
 
+  <formalpara>
+    <title>Non-negative</title>
+   <para>
+    Avoid <quote>non-negative</quote> as it is ambiguous
+    about whether it accepts zero.  It's better to use
+    <quote>greater than zero</quote> or
+    <quote>greater than or equal to zero</quote>.
+   </para>
+  </formalpara>
+
   </simplesect>
 
   <simplesect>
index 755c3e9ee8e474511f20770b81baea6be65df32d..f575afe299ab620ddcc33b0307a2a79dfceb01fd 100644 (file)
@@ -120,7 +120,7 @@ tsquery_phrase_distance(PG_FUNCTION_ARGS)
    if (distance < 0 || distance > MAXENTRYPOS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                errmsg("distance in phrase operator should be non-negative and less than %d",
+                errmsg("distance in phrase operator must be an integer value between zero and %d inclusive",
                        MAXENTRYPOS)));
    if (a->size == 0)
    {
index 7a6ad23f75567ac232ae434bab2ee08f8ff1065f..0a6290f9b45b3594ab95a906d8265bd5d7f90a26 100644 (file)
@@ -57,17 +57,17 @@ test_shm_mq(PG_FUNCTION_ARGS)
    if (loop_count < 0)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                errmsg("repeat count size must be a non-negative integer")));
+                errmsg("repeat count size must be an integer value greater than or equal to zero")));
 
    /*
     * Since this test sends data using the blocking interfaces, it cannot
     * send data to itself.  Therefore, a minimum of 1 worker is required. Of
     * course, a negative worker count is nonsensical.
     */
-   if (nworkers < 1)
+   if (nworkers <= 0)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                errmsg("number of workers must be a positive integer")));
+                errmsg("number of workers must be an integer value greater than zero")));
 
    /* Set up dynamic shared memory segment and background workers. */
    test_shm_mq_setup(queue_size, nworkers, &seg, &outqh, &inqh);
@@ -149,7 +149,7 @@ test_shm_mq_pipelined(PG_FUNCTION_ARGS)
    if (loop_count < 0)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                errmsg("repeat count size must be a non-negative integer")));
+                errmsg("repeat count size must be an integer value greater than or equal to zero")));
 
    /*
     * Using the nonblocking interfaces, we can even send data to ourselves,
@@ -158,7 +158,7 @@ test_shm_mq_pipelined(PG_FUNCTION_ARGS)
    if (nworkers < 0)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                errmsg("number of workers must be a non-negative integer")));
+                errmsg("number of workers must be an integer value greater than or equal to zero")));
 
    /* Set up dynamic shared memory segment and background workers. */
    test_shm_mq_setup(queue_size, nworkers, &seg, &outqh, &inqh);