On 8/30/23 08:10, Aleksander Alekseev wrote:

I am seeing a new gcc 12.2.0 compiler warning from
src/backend/commands/sequence.c:

Yep, the compiler is just not smart enough to derive that this
actually is not going to happen.

Here is a proposed fix.

Here's an alternate way to deal with this which is a bit more efficient (code not tested):

-               case SEQ_COL_CALLED:
-                   coldef = makeColumnDef("is_called", BOOLOID, -1, 
InvalidOid);
-                   value[i - 1] = BoolGetDatum(false);
-                   break;
+               default:
+                   Assert(i == SEQ_COL_CALLED);
+                   coldef = makeColumnDef("is_called", BOOLOID, -1, 
InvalidOid);
+                   value[i - 1] = BoolGetDatum(false);
+                   break;

The downside is that any garbage in i will lead to processing as SEQ_COL_CALLED. But things are already pretty bad in that case, ISTM, even with the proposed patch (or the original code for that matter).

Regards,
-David


Reply via email to