Commit 3d59ad00 authored by Tom Lane's avatar Tom Lane

Remove useless LockDisable() function and associated overhead, per my

proposal of 26-Aug.
parent 19656b74
<!-- <!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/postgres-ref.sgml,v 1.19 2001/09/08 15:24:00 petere Exp $ $Header: /cvsroot/pgsql/doc/src/sgml/ref/postgres-ref.sgml,v 1.20 2001/09/27 16:29:12 tgl Exp $
Postgres documentation Postgres documentation
--> -->
...@@ -33,7 +33,6 @@ Postgres documentation ...@@ -33,7 +33,6 @@ Postgres documentation
<arg>-f<group choice="plain"><arg>s</arg><arg>i</arg><arg>t</arg><arg>n</arg><arg>m</arg><arg>h</arg></group></arg> <arg>-f<group choice="plain"><arg>s</arg><arg>i</arg><arg>t</arg><arg>n</arg><arg>m</arg><arg>h</arg></group></arg>
<arg>-F</arg> <arg>-F</arg>
<arg>-i</arg> <arg>-i</arg>
<arg>-L</arg>
<arg>-N</arg> <arg>-N</arg>
<arg>-o <replaceable>filename</replaceable></arg> <arg>-o <replaceable>filename</replaceable></arg>
<arg>-O</arg> <arg>-O</arg>
...@@ -57,7 +56,6 @@ Postgres documentation ...@@ -57,7 +56,6 @@ Postgres documentation
<arg>-f<group choice="plain"><arg>s</arg><arg>i</arg><arg>t</arg><arg>n</arg><arg>m</arg><arg>h</arg></group></arg> <arg>-f<group choice="plain"><arg>s</arg><arg>i</arg><arg>t</arg><arg>n</arg><arg>m</arg><arg>h</arg></group></arg>
<arg>-F</arg> <arg>-F</arg>
<arg>-i</arg> <arg>-i</arg>
<arg>-L</arg>
<arg>-o <replaceable>filename</replaceable></arg> <arg>-o <replaceable>filename</replaceable></arg>
<arg>-O</arg> <arg>-O</arg>
<arg>-p <replaceable>database</replaceable></arg> <arg>-p <replaceable>database</replaceable></arg>
...@@ -293,15 +291,6 @@ Postgres documentation ...@@ -293,15 +291,6 @@ Postgres documentation
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>-L</term>
<listitem>
<para>
Turns off the locking system.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term>-O</term> <term>-O</term>
<listitem> <listitem>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.115 2001/08/25 00:31:17 petere Exp $ * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.116 2001/09/27 16:29:12 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -389,7 +389,6 @@ BootstrapMain(int argc, char *argv[]) ...@@ -389,7 +389,6 @@ BootstrapMain(int argc, char *argv[])
* backend initialization * backend initialization
*/ */
InitPostgres(dbName, NULL); InitPostgres(dbName, NULL);
LockDisable(true);
for (i = 0; i < MAXATTR; i++) for (i = 0; i < MAXATTR; i++)
{ {
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lmgr.c,v 1.50 2001/08/25 18:52:42 tgl Exp $ * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lmgr.c,v 1.51 2001/09/27 16:29:12 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -145,9 +145,6 @@ LockRelation(Relation relation, LOCKMODE lockmode) ...@@ -145,9 +145,6 @@ LockRelation(Relation relation, LOCKMODE lockmode)
{ {
LOCKTAG tag; LOCKTAG tag;
if (LockingDisabled())
return;
MemSet(&tag, 0, sizeof(tag)); MemSet(&tag, 0, sizeof(tag));
tag.relId = relation->rd_lockInfo.lockRelId.relId; tag.relId = relation->rd_lockInfo.lockRelId.relId;
tag.dbId = relation->rd_lockInfo.lockRelId.dbId; tag.dbId = relation->rd_lockInfo.lockRelId.dbId;
...@@ -182,9 +179,6 @@ ConditionalLockRelation(Relation relation, LOCKMODE lockmode) ...@@ -182,9 +179,6 @@ ConditionalLockRelation(Relation relation, LOCKMODE lockmode)
{ {
LOCKTAG tag; LOCKTAG tag;
if (LockingDisabled())
return true;
MemSet(&tag, 0, sizeof(tag)); MemSet(&tag, 0, sizeof(tag));
tag.relId = relation->rd_lockInfo.lockRelId.relId; tag.relId = relation->rd_lockInfo.lockRelId.relId;
tag.dbId = relation->rd_lockInfo.lockRelId.dbId; tag.dbId = relation->rd_lockInfo.lockRelId.dbId;
...@@ -215,9 +209,6 @@ UnlockRelation(Relation relation, LOCKMODE lockmode) ...@@ -215,9 +209,6 @@ UnlockRelation(Relation relation, LOCKMODE lockmode)
{ {
LOCKTAG tag; LOCKTAG tag;
if (LockingDisabled())
return;
MemSet(&tag, 0, sizeof(tag)); MemSet(&tag, 0, sizeof(tag));
tag.relId = relation->rd_lockInfo.lockRelId.relId; tag.relId = relation->rd_lockInfo.lockRelId.relId;
tag.dbId = relation->rd_lockInfo.lockRelId.dbId; tag.dbId = relation->rd_lockInfo.lockRelId.dbId;
...@@ -243,9 +234,6 @@ LockRelationForSession(LockRelId *relid, LOCKMODE lockmode) ...@@ -243,9 +234,6 @@ LockRelationForSession(LockRelId *relid, LOCKMODE lockmode)
{ {
LOCKTAG tag; LOCKTAG tag;
if (LockingDisabled())
return;
MemSet(&tag, 0, sizeof(tag)); MemSet(&tag, 0, sizeof(tag));
tag.relId = relid->relId; tag.relId = relid->relId;
tag.dbId = relid->dbId; tag.dbId = relid->dbId;
...@@ -264,9 +252,6 @@ UnlockRelationForSession(LockRelId *relid, LOCKMODE lockmode) ...@@ -264,9 +252,6 @@ UnlockRelationForSession(LockRelId *relid, LOCKMODE lockmode)
{ {
LOCKTAG tag; LOCKTAG tag;
if (LockingDisabled())
return;
MemSet(&tag, 0, sizeof(tag)); MemSet(&tag, 0, sizeof(tag));
tag.relId = relid->relId; tag.relId = relid->relId;
tag.dbId = relid->dbId; tag.dbId = relid->dbId;
...@@ -277,15 +262,16 @@ UnlockRelationForSession(LockRelId *relid, LOCKMODE lockmode) ...@@ -277,15 +262,16 @@ UnlockRelationForSession(LockRelId *relid, LOCKMODE lockmode)
/* /*
* LockPage * LockPage
*
* Obtain a page-level lock. This is currently used by some index access
* methods to lock index pages. For heap relations, it is used only with
* blkno == 0 to signify locking the relation for extension.
*/ */
void void
LockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode) LockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode)
{ {
LOCKTAG tag; LOCKTAG tag;
if (LockingDisabled())
return;
MemSet(&tag, 0, sizeof(tag)); MemSet(&tag, 0, sizeof(tag));
tag.relId = relation->rd_lockInfo.lockRelId.relId; tag.relId = relation->rd_lockInfo.lockRelId.relId;
tag.dbId = relation->rd_lockInfo.lockRelId.dbId; tag.dbId = relation->rd_lockInfo.lockRelId.dbId;
...@@ -304,9 +290,6 @@ UnlockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode) ...@@ -304,9 +290,6 @@ UnlockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode)
{ {
LOCKTAG tag; LOCKTAG tag;
if (LockingDisabled())
return;
MemSet(&tag, 0, sizeof(tag)); MemSet(&tag, 0, sizeof(tag));
tag.relId = relation->rd_lockInfo.lockRelId.relId; tag.relId = relation->rd_lockInfo.lockRelId.relId;
tag.dbId = relation->rd_lockInfo.lockRelId.dbId; tag.dbId = relation->rd_lockInfo.lockRelId.dbId;
...@@ -315,14 +298,21 @@ UnlockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode) ...@@ -315,14 +298,21 @@ UnlockPage(Relation relation, BlockNumber blkno, LOCKMODE lockmode)
LockRelease(LockTableId, &tag, GetCurrentTransactionId(), lockmode); LockRelease(LockTableId, &tag, GetCurrentTransactionId(), lockmode);
} }
/*
* XactLockTableInsert
*
* Insert a lock showing that the given transaction ID is running ---
* this is done during xact startup. The lock can then be used to wait
* for the transaction to finish.
*
* We need no corresponding unlock function, since the lock will always
* be released implicitly at transaction commit/abort, never any other way.
*/
void void
XactLockTableInsert(TransactionId xid) XactLockTableInsert(TransactionId xid)
{ {
LOCKTAG tag; LOCKTAG tag;
if (LockingDisabled())
return;
MemSet(&tag, 0, sizeof(tag)); MemSet(&tag, 0, sizeof(tag));
tag.relId = XactLockTableId; tag.relId = XactLockTableId;
tag.dbId = InvalidOid; /* xids are globally unique */ tag.dbId = InvalidOid; /* xids are globally unique */
...@@ -333,43 +323,29 @@ XactLockTableInsert(TransactionId xid) ...@@ -333,43 +323,29 @@ XactLockTableInsert(TransactionId xid)
elog(ERROR, "XactLockTableInsert: LockAcquire failed"); elog(ERROR, "XactLockTableInsert: LockAcquire failed");
} }
#ifdef NOT_USED /*
void * XactLockTableWait
XactLockTableDelete(TransactionId xid) *
{ * Wait for the specified transaction to commit or abort.
LOCKTAG tag; */
if (LockingDisabled())
return;
MemSet(&tag, 0, sizeof(tag));
tag.relId = XactLockTableId;
tag.dbId = InvalidOid;
tag.objId.xid = xid;
LockRelease(LockTableId, &tag, xid, ExclusiveLock);
}
#endif
void void
XactLockTableWait(TransactionId xid) XactLockTableWait(TransactionId xid)
{ {
LOCKTAG tag; LOCKTAG tag;
TransactionId myxid = GetCurrentTransactionId();
if (LockingDisabled()) Assert(! TransactionIdEquals(xid, myxid));
return;
MemSet(&tag, 0, sizeof(tag)); MemSet(&tag, 0, sizeof(tag));
tag.relId = XactLockTableId; tag.relId = XactLockTableId;
tag.dbId = InvalidOid; tag.dbId = InvalidOid;
tag.objId.xid = xid; tag.objId.xid = xid;
if (!LockAcquire(LockTableId, &tag, GetCurrentTransactionId(), if (!LockAcquire(LockTableId, &tag, myxid,
ShareLock, false)) ShareLock, false))
elog(ERROR, "XactLockTableWait: LockAcquire failed"); elog(ERROR, "XactLockTableWait: LockAcquire failed");
LockRelease(LockTableId, &tag, GetCurrentTransactionId(), ShareLock); LockRelease(LockTableId, &tag, myxid, ShareLock);
/* /*
* Transaction was committed/aborted/crashed - we have to update * Transaction was committed/aborted/crashed - we have to update
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.94 2001/09/07 00:27:29 tgl Exp $ * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.95 2001/09/27 16:29:12 tgl Exp $
* *
* NOTES * NOTES
* Outside modules can create a lock table and acquire/release * Outside modules can create a lock table and acquire/release
...@@ -165,11 +165,6 @@ SPINLOCK LockMgrLock; /* in Shmem or created in ...@@ -165,11 +165,6 @@ SPINLOCK LockMgrLock; /* in Shmem or created in
static LOCKMASK BITS_OFF[MAX_LOCKMODES]; static LOCKMASK BITS_OFF[MAX_LOCKMODES];
static LOCKMASK BITS_ON[MAX_LOCKMODES]; static LOCKMASK BITS_ON[MAX_LOCKMODES];
/*
* Disable flag
*/
static bool LockingIsDisabled;
/* /*
* map from lockmethod to the lock table structure * map from lockmethod to the lock table structure
*/ */
...@@ -195,23 +190,6 @@ InitLocks(void) ...@@ -195,23 +190,6 @@ InitLocks(void)
} }
} }
/*
* LockDisable -- sets LockingIsDisabled flag to TRUE or FALSE.
*/
void
LockDisable(bool status)
{
LockingIsDisabled = status;
}
/*
* Boolean function to determine current locking status
*/
bool
LockingDisabled(void)
{
return LockingIsDisabled;
}
/* /*
* Fetch the lock method table associated with a given lock * Fetch the lock method table associated with a given lock
...@@ -509,9 +487,6 @@ LockAcquire(LOCKMETHOD lockmethod, LOCKTAG *locktag, ...@@ -509,9 +487,6 @@ LockAcquire(LOCKMETHOD lockmethod, LOCKTAG *locktag,
return FALSE; return FALSE;
} }
if (LockingIsDisabled)
return TRUE;
masterLock = lockMethodTable->ctl->masterLock; masterLock = lockMethodTable->ctl->masterLock;
SpinAcquire(masterLock); SpinAcquire(masterLock);
...@@ -1047,9 +1022,6 @@ LockRelease(LOCKMETHOD lockmethod, LOCKTAG *locktag, ...@@ -1047,9 +1022,6 @@ LockRelease(LOCKMETHOD lockmethod, LOCKTAG *locktag,
return FALSE; return FALSE;
} }
if (LockingIsDisabled)
return TRUE;
masterLock = lockMethodTable->ctl->masterLock; masterLock = lockMethodTable->ctl->masterLock;
SpinAcquire(masterLock); SpinAcquire(masterLock);
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.233 2001/09/21 17:06:12 tgl Exp $ * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.234 2001/09/27 16:29:12 tgl Exp $
* *
* NOTES * NOTES
* this is the "main" module of the postgres backend and * this is the "main" module of the postgres backend and
...@@ -1096,7 +1096,6 @@ usage(char *progname) ...@@ -1096,7 +1096,6 @@ usage(char *progname)
printf("Developer options:\n"); printf("Developer options:\n");
printf(" -f [s|i|n|m|h] forbid use of some plan types\n"); printf(" -f [s|i|n|m|h] forbid use of some plan types\n");
printf(" -i do not execute queries\n"); printf(" -i do not execute queries\n");
printf(" -L turn off locking\n");
printf(" -O allow system table structure changes\n"); printf(" -O allow system table structure changes\n");
printf(" -t [pa|pl|ex] show timings after each query\n"); printf(" -t [pa|pl|ex] show timings after each query\n");
printf(" -W NUM wait NUM seconds to allow attach from a debugger\n"); printf(" -W NUM wait NUM seconds to allow attach from a debugger\n");
...@@ -1207,7 +1206,7 @@ PostgresMain(int argc, char *argv[], ...@@ -1207,7 +1206,7 @@ PostgresMain(int argc, char *argv[],
optind = 1; /* reset after postmaster's usage */ optind = 1; /* reset after postmaster's usage */
while ((flag = getopt(argc, argv, "A:B:c:CD:d:Eef:FiLNOPo:p:S:st:v:W:x:-:")) != EOF) while ((flag = getopt(argc, argv, "A:B:c:CD:d:Eef:FiNOPo:p:S:st:v:W:x:-:")) != EOF)
switch (flag) switch (flag)
{ {
case 'A': case 'A':
...@@ -1314,15 +1313,6 @@ PostgresMain(int argc, char *argv[], ...@@ -1314,15 +1313,6 @@ PostgresMain(int argc, char *argv[],
dontExecute = true; dontExecute = true;
break; break;
case 'L':
/*
* turn off locking
*/
if (secure)
lockingOff = 1;
break;
case 'N': case 'N':
/* /*
...@@ -1726,7 +1716,7 @@ PostgresMain(int argc, char *argv[], ...@@ -1726,7 +1716,7 @@ PostgresMain(int argc, char *argv[],
if (!IsUnderPostmaster) if (!IsUnderPostmaster)
{ {
puts("\nPOSTGRES backend interactive interface "); puts("\nPOSTGRES backend interactive interface ");
puts("$Revision: 1.233 $ $Date: 2001/09/21 17:06:12 $\n"); puts("$Revision: 1.234 $ $Date: 2001/09/27 16:29:12 $\n");
} }
/* /*
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.91 2001/09/08 15:24:00 petere Exp $ * $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.92 2001/09/27 16:29:12 tgl Exp $
* *
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
...@@ -46,8 +46,6 @@ static void InitCommunication(void); ...@@ -46,8 +46,6 @@ static void InitCommunication(void);
static void ShutdownPostgres(void); static void ShutdownPostgres(void);
static bool ThereIsAtLeastOneUser(void); static bool ThereIsAtLeastOneUser(void);
int lockingOff = 0; /* backend -L switch */
/*** InitPostgres support ***/ /*** InitPostgres support ***/
...@@ -327,9 +325,6 @@ InitPostgres(const char *dbname, const char *username) ...@@ -327,9 +325,6 @@ InitPostgres(const char *dbname, const char *username)
/* replace faked-up relcache entries with the real info */ /* replace faked-up relcache entries with the real info */
RelationCacheInitializePhase2(); RelationCacheInitializePhase2();
if (lockingOff)
LockDisable(true);
/* /*
* Figure out our postgres user id. In standalone mode we use a * Figure out our postgres user id. In standalone mode we use a
* fixed id, otherwise we figure it out from the authenticated * fixed id, otherwise we figure it out from the authenticated
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $Id: miscadmin.h,v 1.91 2001/09/21 03:32:36 tgl Exp $ * $Id: miscadmin.h,v 1.92 2001/09/27 16:29:13 tgl Exp $
* *
* NOTES * NOTES
* some of the information in this file should be moved to * some of the information in this file should be moved to
...@@ -236,6 +236,7 @@ extern bool is_dbadmin(Oid dbid); /* current user is owner of database */ ...@@ -236,6 +236,7 @@ extern bool is_dbadmin(Oid dbid); /* current user is owner of database */
* pmod.h -- * * pmod.h -- *
* POSTGRES processing mode definitions. * * POSTGRES processing mode definitions. *
*****************************************************************************/ *****************************************************************************/
/* /*
* Description: * Description:
* There are three processing modes in POSTGRES. They are * There are three processing modes in POSTGRES. They are
...@@ -262,19 +263,6 @@ typedef enum ProcessingMode ...@@ -262,19 +263,6 @@ typedef enum ProcessingMode
NormalProcessing /* normal processing */ NormalProcessing /* normal processing */
} ProcessingMode; } ProcessingMode;
/*****************************************************************************
* pinit.h -- *
* POSTGRES initialization and cleanup definitions. *
*****************************************************************************/
/* in utils/init/postinit.c */
extern int lockingOff;
extern void InitPostgres(const char *dbname, const char *username);
extern void BaseInit(void);
/* processing mode support stuff */
extern ProcessingMode Mode; extern ProcessingMode Mode;
#define IsBootstrapProcessingMode() ((bool)(Mode == BootstrapProcessing)) #define IsBootstrapProcessingMode() ((bool)(Mode == BootstrapProcessing))
...@@ -291,6 +279,17 @@ extern ProcessingMode Mode; ...@@ -291,6 +279,17 @@ extern ProcessingMode Mode;
#define GetProcessingMode() Mode #define GetProcessingMode() Mode
/*****************************************************************************
* pinit.h -- *
* POSTGRES initialization and cleanup definitions. *
*****************************************************************************/
/* in utils/init/postinit.c */
extern void InitPostgres(const char *dbname, const char *username);
extern void BaseInit(void);
/* in utils/init/miscinit.c */
extern bool CreateDataDirLockFile(const char *datadir, bool amPostmaster); extern bool CreateDataDirLockFile(const char *datadir, bool amPostmaster);
extern bool CreateSocketLockFile(const char *socketfile, bool amPostmaster); extern bool CreateSocketLockFile(const char *socketfile, bool amPostmaster);
extern void TouchSocketLockFile(void); extern void TouchSocketLockFile(void);
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $Id: lock.h,v 1.51 2001/07/09 22:18:34 tgl Exp $ * $Id: lock.h,v 1.52 2001/09/27 16:29:13 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -244,8 +244,6 @@ typedef struct HOLDER ...@@ -244,8 +244,6 @@ typedef struct HOLDER
* function prototypes * function prototypes
*/ */
extern void InitLocks(void); extern void InitLocks(void);
extern void LockDisable(bool status);
extern bool LockingDisabled(void);
extern LOCKMETHODTABLE *GetLocksMethodTable(LOCK *lock); extern LOCKMETHODTABLE *GetLocksMethodTable(LOCK *lock);
extern LOCKMETHOD LockMethodTableInit(char *tabName, LOCKMASK *conflictsP, extern LOCKMETHOD LockMethodTableInit(char *tabName, LOCKMASK *conflictsP,
int *prioP, int numModes, int maxBackends); int *prioP, int numModes, int maxBackends);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment