From a60c9e33e96a8f3694d94143d65ec6ee1fb3414b Mon Sep 17 00:00:00 2001 From: Hiroshi Inoue Date: Mon, 21 Feb 2000 02:42:37 +0000 Subject: fix the TODO * Allow PQrequestCancel() to terminate when in waiting-for-lock state Changes are limited to BACKEND,however. --- src/backend/tcop/postgres.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/backend/tcop/postgres.c') diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 1f333f46af0..71087295313 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.144 2000/02/20 04:26:35 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.145 2000/02/21 02:42:35 inoue Exp $ * * NOTES * this is the "main" module of the postgres backend and @@ -810,11 +810,21 @@ FloatExceptionHandler(SIGNAL_ARGS) } +static bool lockWaiting = false; +void SetLockWaiting(bool waiting) +{ + lockWaiting = waiting; +} /* signal handler for query cancel signal from postmaster */ static void QueryCancelHandler(SIGNAL_ARGS) { QueryCancel = true; + if (lockWaiting) + { + lockWaiting = false; + elog(ERROR, "Query Cancel requested while waiting lock"); + } } void @@ -1503,7 +1513,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[]) if (!IsUnderPostmaster) { puts("\nPOSTGRES backend interactive interface "); - puts("$Revision: 1.144 $ $Date: 2000/02/20 04:26:35 $\n"); + puts("$Revision: 1.145 $ $Date: 2000/02/21 02:42:35 $\n"); } /* @@ -1573,6 +1583,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[]) firstchar = ReadCommand(parser_input); QueryCancel = false; /* forget any earlier CANCEL signal */ + lockWaiting = false; /* ---------------- * (4) disable async.c's signal handler. -- cgit v1.2.3