(unnamed)
text/plain
Index: src/backend/parser/scan.c
===================================================================
RCS file: /usr/local/cvsroot/pgsql/src/backend/parser/scan.c,v
retrieving revision 1.31
diff -c -r1.31 scan.c
*** scan.c 1998/10/13 17:26:50 1.31
--- scan.c 1998/12/18 19:30:54
***************
*** 1,7 ****
/* A lexical scanner generated by flex */
/* Scanner skeleton version:
! * $Header: /usr/local/cvsroot/pgsql/src/backend/parser/scan.c,v 1.31 1998/10/13 17:26:50 scrappy Exp $
*/
#define FLEX_SCANNER
--- 1,7 ----
/* A lexical scanner generated by flex */
/* Scanner skeleton version:
! * /master/usr.bin/lex/skel.c,v 1.3 1997/09/25 00:10:23 jch Exp
*/
#define FLEX_SCANNER
***************
*** 556,562 ****
*
*
* IDENTIFICATION
! * $Header: /usr/local/cvsroot/pgsql/src/backend/parser/scan.c,v 1.31 1998/10/13 17:26:50 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
--- 556,562 ----
*
*
* IDENTIFICATION
! * $Header: /usr/local/cvsroot/pgsql/src/backend/parser/scan.l,v 1.44 1998/10/08 18:29:51 momjian Exp $
*
*-------------------------------------------------------------------------
*/
Index: src/backend/storage/lmgr/proc.c
===================================================================
RCS file: /usr/local/cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v
retrieving revision 1.43
diff -c -r1.43 proc.c
*** proc.c 1998/09/01 04:32:02 1.43
--- proc.c 1998/12/18 19:30:59
***************
*** 77,83 ****
#include "storage/proc.h"
#include "utils/trace.h"
! static void HandleDeadLock(int sig);
static PROC *ProcWakeup(PROC *proc, int errType);
#define DeadlockCheckTimer pg_options[OPT_DEADLOCKTIMEOUT]
--- 77,83 ----
#include "storage/proc.h"
#include "utils/trace.h"
! static void HandleDeadLock(void);
static PROC *ProcWakeup(PROC *proc, int errType);
#define DeadlockCheckTimer pg_options[OPT_DEADLOCKTIMEOUT]
***************
*** 154,161 ****
* Routine called if deadlock timer goes off. See ProcSleep()
* ------------------
*/
- pqsignal(SIGALRM, HandleDeadLock);
-
SpinAcquire(ProcStructLock);
/* attach to the free list */
--- 154,159 ----
***************
*** 449,457 ****
TransactionId xid) /* needed by user locks, see below */
{
int i;
PROC *proc;
! struct itimerval timeval,
! dummy;
/*
* If the first entries in the waitQueue have a greater priority than
--- 447,455 ----
TransactionId xid) /* needed by user locks, see below */
{
int i;
+ bool deadlock_checked = false;
PROC *proc;
! struct timeval timeval;
/*
* If the first entries in the waitQueue have a greater priority than
***************
*** 523,539 ****
* to 0.
* --------------
*/
! MemSet(&timeval, 0, sizeof(struct itimerval));
! timeval.it_value.tv_sec = \
(DeadlockCheckTimer ? DeadlockCheckTimer : DEADLOCK_CHECK_TIMER);
do
{
MyProc->errType = NO_ERROR; /* reset flag after deadlock check */
! if (setitimer(ITIMER_REAL, &timeval, &dummy))
elog(FATAL, "ProcSleep: Unable to set timer for process wakeup");
/* --------------
* if someone wakes us between SpinRelease and IpcSemaphoreLock,
* IpcSemaphoreLock will not block. The wakeup is "saved" by
--- 521,546 ----
* to 0.
* --------------
*/
! MemSet(&timeval, 0, sizeof(struct timeval));
! timeval.tv_sec = \
(DeadlockCheckTimer ? DeadlockCheckTimer : DEADLOCK_CHECK_TIMER);
do
{
+ int expire;
+
MyProc->errType = NO_ERROR; /* reset flag after deadlock check */
! if ((expire = select(0, NULL, NULL, NULL,
! (deadlock_checked == false) ? &timeval : NULL)) == -1)
elog(FATAL, "ProcSleep: Unable to set timer for process wakeup");
+ if (expire == 0 /* timeout reached */ && deadlock_checked == false)
+ {
+ HandleDeadLock();
+ deadlock_checked = true;
+ }
+
/* --------------
* if someone wakes us between SpinRelease and IpcSemaphoreLock,
* IpcSemaphoreLock will not block. The wakeup is "saved" by
***************
*** 545,558 ****
} while (MyProc->errType == STATUS_NOT_FOUND); /* sleep after deadlock
* check */
- /* ---------------
- * We were awoken before a timeout - now disable the timer
- * ---------------
- */
- timeval.it_value.tv_sec = 0;
- if (setitimer(ITIMER_REAL, &timeval, &dummy))
- elog(FATAL, "ProcSleep: Unable to diable timer for process wakeup");
-
/* ----------------
* We were assumed to be in a critical section when we went
* to sleep.
--- 552,557 ----
***************
*** 695,701 ****
* --------------------
*/
static void
! HandleDeadLock(int sig)
{
LOCK *mywaitlock;
--- 694,700 ----
* --------------------
*/
static void
! HandleDeadLock()
{
LOCK *mywaitlock;
Index: src/pl/plpgsql/src/gram.c
===================================================================
RCS file: /usr/local/cvsroot/pgsql/src/pl/plpgsql/src/gram.c,v
retrieving revision 1.1
diff -c -r1.1 gram.c
*** gram.c 1998/10/28 17:07:17 1.1
--- gram.c 1998/12/18 19:31:12
***************
*** 65,71 ****
* procedural language
*
* IDENTIFICATION
! * $Header: /usr/local/cvsroot/pgsql/src/pl/plpgsql/src/gram.c,v 1.1 1998/10/28 17:07:17 momjian Exp $
*
* This software is copyrighted by Jan Wieck - Hamburg.
*
--- 65,71 ----
* procedural language
*
* IDENTIFICATION
! * $Header: /usr/local/cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v 1.1 1998/08/24 19:14:47 momjian Exp $
*
* This software is copyrighted by Jan Wieck - Hamburg.
*
Index: src/pl/plpgsql/src/scan.c
===================================================================
RCS file: /usr/local/cvsroot/pgsql/src/pl/plpgsql/src/scan.c,v
retrieving revision 1.1
diff -c -r1.1 scan.c
*** scan.c 1998/10/28 17:07:17 1.1
--- scan.c 1998/12/18 19:31:21
***************
*** 635,641 ****
* procedural language
*
* IDENTIFICATION
! * $Header: /usr/local/cvsroot/pgsql/src/pl/plpgsql/src/scan.c,v 1.1 1998/10/28 17:07:17 momjian Exp $
*
* This software is copyrighted by Jan Wieck - Hamburg.
*
--- 635,641 ----
* procedural language
*
* IDENTIFICATION
! * $Header: /usr/local/cvsroot/pgsql/src/pl/plpgsql/src/scan.l,v 1.1 1998/08/24 19:14:49 momjian Exp $
*
* This software is copyrighted by Jan Wieck - Hamburg.
*