mirror of
https://github.com/postgres/postgres.git
synced 2025-11-06 07:49:08 +03:00
Add NOWAIT option to SELECT FOR UPDATE/SHARE.
Original patch by Hans-Juergen Schoenig, revisions by Karel Zak and Tom Lane.
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/nodes/parsenodes.h,v 1.288 2005/08/01 04:03:58 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/nodes/parsenodes.h,v 1.289 2005/08/01 20:31:15 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -95,6 +95,7 @@ typedef struct Query
|
||||
|
||||
bool forUpdate; /* true if rowMarks are FOR UPDATE,
|
||||
* false if they are FOR SHARE */
|
||||
bool rowNoWait; /* FOR UPDATE/SHARE NOWAIT option */
|
||||
|
||||
List *targetList; /* target list (of TargetEntry) */
|
||||
|
||||
@@ -415,6 +416,20 @@ typedef struct DefElem
|
||||
Node *arg; /* a (Value *) or a (TypeName *) */
|
||||
} DefElem;
|
||||
|
||||
/*
|
||||
* LockingClause - raw representation of FOR UPDATE/SHARE options
|
||||
*
|
||||
* Note: lockedRels == NIL means "all relations in query". Otherwise it
|
||||
* is a list of String nodes giving relation eref names.
|
||||
*/
|
||||
typedef struct LockingClause
|
||||
{
|
||||
NodeTag type;
|
||||
List *lockedRels; /* FOR UPDATE or FOR SHARE relations */
|
||||
bool forUpdate; /* true = FOR UPDATE, false = FOR SHARE */
|
||||
bool nowait; /* NOWAIT option */
|
||||
} LockingClause;
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Nodes for a Query tree
|
||||
@@ -686,8 +701,7 @@ typedef struct SelectStmt
|
||||
List *sortClause; /* sort clause (a list of SortBy's) */
|
||||
Node *limitOffset; /* # of result tuples to skip */
|
||||
Node *limitCount; /* # of result tuples to return */
|
||||
List *lockedRels; /* FOR UPDATE or FOR SHARE relations */
|
||||
bool forUpdate; /* true = FOR UPDATE, false = FOR SHARE */
|
||||
LockingClause *lockingClause; /* FOR UPDATE/FOR SHARE */
|
||||
|
||||
/*
|
||||
* These fields are used only in upper-level SelectStmts.
|
||||
@@ -699,6 +713,7 @@ typedef struct SelectStmt
|
||||
/* Eventually add fields for CORRESPONDING spec here */
|
||||
} SelectStmt;
|
||||
|
||||
|
||||
/* ----------------------
|
||||
* Set Operation node for post-analysis query trees
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user