Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Silence minor compiler warnings.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 19 Jan 2020 21:04:36 +0000 (16:04 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 19 Jan 2020 21:04:36 +0000 (16:04 -0500)
Ensure that ClassifyUtilityCommandAsReadOnly() has defined behavior
even if TransactionStmt.kind has a value that's not one of the
declared values for its enum.

Suppress warnings from compilers that don't know that elog(ERROR)
doesn't return, in ClassifyUtilityCommandAsReadOnly() and
jsonb_set_lax().

Per Coverity and buildfarm.

src/backend/tcop/utility.c
src/backend/utils/adt/jsonfuncs.c

index de84dd27a14ef9aae986a33065be906d272bc538..51925af6a054096b56e132233ac2e003250c6962 100644 (file)
@@ -129,7 +129,7 @@ CommandIsReadOnly(PlannedStmt *pstmt)
  *
  * Note the definitions of the relevant flags in src/include/utility/tcop.h.
  */
-int
+static int
 ClassifyUtilityCommandAsReadOnly(Node *parsetree)
 {
    switch (nodeTag(parsetree))
@@ -359,7 +359,7 @@ ClassifyUtilityCommandAsReadOnly(Node *parsetree)
                TransactionStmt *stmt = (TransactionStmt *) parsetree;
 
                /*
-                * PREPARE, COMMIT PREPARED, and ROLLBACK PREPARED all change
+                * PREPARE, COMMIT PREPARED, and ROLLBACK PREPARED all
                 * write WAL, so they're not read-only in the strict sense;
                 * but the first and third do not change pg_dump output, so
                 * they're OK in a read-only transactions.
@@ -383,12 +383,15 @@ ClassifyUtilityCommandAsReadOnly(Node *parsetree)
                    case TRANS_STMT_ROLLBACK_PREPARED:
                        return COMMAND_OK_IN_READ_ONLY_TXN;
                }
+               elog(ERROR, "unrecognized TransactionStmtKind: %d",
+                    (int) stmt->kind);
+               return 0;       /* silence stupider compilers */
            }
 
        default:
            elog(ERROR, "unrecognized node type: %d",
                 (int) nodeTag(parsetree));
-           break;
+           return 0;           /* silence stupider compilers */
    }
 }
 
index 4b5a0214dca807788fb54bb5ef414f9cc35f57a9..3c1a0319fe9f2864f65938afbae37ccd6e61db4d 100644 (file)
@@ -4456,6 +4456,7 @@ jsonb_set_lax(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("need delete_key, return_target, use_json_null, or raise_exception")));
+       return (Datum) 0;       /* silence stupider compilers */
    }
 }