]> granicus.if.org Git - postgresql/commitdiff
Fix query cancellation.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Wed, 7 Dec 2016 07:47:43 +0000 (09:47 +0200)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Wed, 7 Dec 2016 07:47:43 +0000 (09:47 +0200)
In commit fe0a0b59, the datatype used for MyCancelKey and other variables
that store cancel keys were changed from long to uint32, but I missed this
one. That broke query cancellation on platforms where long is wider than 32
bits.

Report by Andres Freund, fix by Michael Paquier.

src/backend/postmaster/postmaster.c

index f0ed5233711b66c67d44352cee819f86a6af21c2..59073e0354b6c9c00ea70c554c42f8e83fac8b30 100644 (file)
@@ -2216,7 +2216,7 @@ processCancelRequest(Port *port, void *pkt)
 {
        CancelRequestPacket *canc = (CancelRequestPacket *) pkt;
        int                     backendPID;
-       long            cancelAuthCode;
+       int32           cancelAuthCode;
        Backend    *bp;
 
 #ifndef EXEC_BACKEND
@@ -2226,7 +2226,7 @@ processCancelRequest(Port *port, void *pkt)
 #endif
 
        backendPID = (int) ntohl(canc->backendPID);
-       cancelAuthCode = (long) ntohl(canc->cancelAuthCode);
+       cancelAuthCode = (int32) ntohl(canc->cancelAuthCode);
 
        /*
         * See if we have a matching backend.  In the EXEC_BACKEND case, we can no