aboutsummaryrefslogtreecommitdiff
path: root/src/backend/tcop/postgres.c
diff options
context:
space:
mode:
authorHiroshi Inoue <inoue@tpf.co.jp>2000-02-21 02:42:37 +0000
committerHiroshi Inoue <inoue@tpf.co.jp>2000-02-21 02:42:37 +0000
commita60c9e33e96a8f3694d94143d65ec6ee1fb3414b (patch)
tree14ea5349c66e1892a53b517bd64859d90a09e61e /src/backend/tcop/postgres.c
parent320d3e06ee5b893c52b25ebd65a3ade4735c29e6 (diff)
downloadpostgresql-a60c9e33e96a8f3694d94143d65ec6ee1fb3414b.tar.gz
postgresql-a60c9e33e96a8f3694d94143d65ec6ee1fb3414b.zip
fix the TODO
* Allow PQrequestCancel() to terminate when in waiting-for-lock state Changes are limited to BACKEND,however.
Diffstat (limited to 'src/backend/tcop/postgres.c')
-rw-r--r--src/backend/tcop/postgres.c15
1 files changed, 13 insertions, 2 deletions
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.