From 81f2e514a9b2d813bb5fd6b62523757aa7a6517f Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Wed, 7 Dec 2016 09:47:43 +0200 Subject: [PATCH] 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. --- src/backend/postmaster/postmaster.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index f0ed523371..59073e0354 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