From: Heikki Linnakangas Date: Wed, 7 Dec 2016 07:47:43 +0000 (+0200) Subject: Fix query cancellation. X-Git-Tag: REL_10_BETA1~1291 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=81f2e514a9b2d813bb5fd6b62523757aa7a6517f;p=thirdparty%2Fpostgresql.git Fix query cancellation. 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. --- diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index f0ed5233711..59073e0354b 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -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