Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
63e97345
Commit
63e97345
authored
Nov 13, 2002
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update xact.c comments for clarity.
parent
34529aeb
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
102 additions
and
114 deletions
+102
-114
src/backend/access/transam/xact.c
src/backend/access/transam/xact.c
+94
-107
src/include/access/xact.h
src/include/access/xact.h
+8
-7
No files found.
src/backend/access/transam/xact.c
View file @
63e97345
...
...
@@ -8,13 +8,13 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.13
7 2002/11/11 22:19:20 tgl
Exp $
* $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.13
8 2002/11/13 03:12:05 momjian
Exp $
*
* NOTES
* Transaction aborts can now occur two ways:
*
* 1) system dies from some internal cause (
Assert
, etc..)
* 2) user types
abort
* 1) system dies from some internal cause (
syntax error
, etc..)
* 2) user types
ABORT
*
* These two cases used to be treated identically, but now
* we need to distinguish them. Why? consider the following
...
...
@@ -30,8 +30,8 @@
* In case 1, we want to abort the transaction and return to the
* default state. In case 2, there may be more commands coming
* our way which are part of the same transaction block and we have
* to ignore these commands until we see a
n END transaction.
*
(or an ABORT! --djm)
* to ignore these commands until we see a
COMMIT transaction or
*
ROLLBACK.
*
* Internal aborts are now handled by AbortTransactionBlock(), just as
* they always have been, and user aborts are now handled by
...
...
@@ -52,14 +52,6 @@
* TransactionCommandContext until this point.
*
* NOTES
* This file is an attempt at a redesign of the upper layer
* of the V1 transaction system which was too poorly thought
* out to describe. This new system hopes to be both simpler
* in design, simpler to extend and needs to contain added
* functionality to solve problems beyond the scope of the V1
* system. (In particuler, communication of transaction
* information between parallel backends has to be supported)
*
* The essential aspects of the transaction system are:
*
* o transaction id generation
...
...
@@ -69,7 +61,7 @@
* o lock cleanup
*
* Hence, the functional division of the transaction code is
* based on wh
at
of the above things need to be done during
* based on wh
ich
of the above things need to be done during
* a start/commit/abort transaction. For instance, the
* routine AtCommit_Memory() takes care of all the memory
* cleanup stuff done at commit time.
...
...
@@ -99,17 +91,17 @@
* CommitTransactionBlock
* AbortTransactionBlock
*
* These are invoked only in responce to a user "BEGIN
", "END
",
* or "
ABORT
" command. The tricky part about these functions
* These are invoked only in responce to a user "BEGIN
WORK", "COMMIT
",
* or "
ROLLBACK
" command. The tricky part about these functions
* is that they are called within the postgres main loop, in between
* the StartTransactionCommand() and CommitTransactionCommand().
*
* For example, consider the following sequence of user commands:
*
* 1) begin
* 2)
retrieve (foo.all)
* 3)
append
foo (bar = baz)
* 4)
end
* 2)
select * from foo
* 3)
insert into
foo (bar = baz)
* 4)
commit
*
* in the main processing loop, this results in the following
* transaction sequence:
...
...
@@ -120,15 +112,15 @@
* \ CommitTransactionCommand();
*
* / StartTransactionCommand();
* 2) < ProcessQuery(); <<
retrieve (foo.all)
* 2) < ProcessQuery(); <<
select * from foo
* \ CommitTransactionCommand();
*
* / StartTransactionCommand();
* 3) < ProcessQuery(); <<
append
foo (bar = baz)
* 3) < ProcessQuery(); <<
insert into
foo (bar = baz)
* \ CommitTransactionCommand();
*
* / StartTransactionCommand();
* 4) / ProcessUtility(); <<
end
* 4) / ProcessUtility(); <<
commit
* \ CommitTransactionBlock();
* \ CommitTransactionCommand();
*
...
...
@@ -139,19 +131,14 @@
* outside these calls they need to do normal start/commit
* processing.
*
* Furthermore, suppose the "
retrieve (foo.all)
" caused an abort
* Furthermore, suppose the "
select * from foo
" caused an abort
* condition. We would then want to abort the transaction and
* ignore all subsequent commands up to the "
end
".
* ignore all subsequent commands up to the "
commit
".
* -cim 3/23/90
*
*-------------------------------------------------------------------------
*/
/*
* Large object clean up added in CommitTransaction() to prevent buffer leaks.
* [PA, 7/17/98]
* [PA] is Pascal André <andre@via.ecp.fr>
*/
#include "postgres.h"
#include <unistd.h>
...
...
@@ -201,9 +188,8 @@ static void CommitTransaction(void);
static
void
RecordTransactionAbort
(
void
);
static
void
StartTransaction
(
void
);
/*
----------------
/*
* global variables holding the current transaction state.
* ----------------
*/
static
TransactionStateData
CurrentTransactionStateData
=
{
0
,
/* transaction id */
...
...
@@ -211,7 +197,7 @@ static TransactionStateData CurrentTransactionStateData = {
0
,
/* scan command id */
0x0
,
/* start time */
TRANS_DEFAULT
,
/* transaction state */
TBLOCK_DEFAULT
/* transaction block state */
TBLOCK_DEFAULT
/* transaction block state
of client queries
*/
};
TransactionState
CurrentTransactionState
=
&
CurrentTransactionStateData
;
...
...
@@ -853,7 +839,6 @@ AtCleanup_Memory(void)
/* --------------------------------
* StartTransaction
*
* --------------------------------
*/
static
void
...
...
@@ -930,7 +915,6 @@ CurrentXactInProgress(void)
/* --------------------------------
* CommitTransaction
*
* --------------------------------
*/
static
void
...
...
@@ -1051,7 +1035,6 @@ CommitTransaction(void)
/* --------------------------------
* AbortTransaction
*
* --------------------------------
*/
static
void
...
...
@@ -1158,7 +1141,6 @@ AbortTransaction(void)
/* --------------------------------
* CleanupTransaction
*
* --------------------------------
*/
static
void
...
...
@@ -1730,6 +1712,11 @@ IsTransactionBlock(void)
return
false
;
}
/*
* XLOG support routines
*/
void
xact_redo
(
XLogRecPtr
lsn
,
XLogRecord
*
record
)
{
...
...
src/include/access/xact.h
View file @
63e97345
...
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: xact.h,v 1.4
6 2002/10/21 22:06:20 tgl
Exp $
* $Id: xact.h,v 1.4
7 2002/11/13 03:12:05 momjian
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -46,9 +46,11 @@ typedef struct TransactionStateData
typedef
TransactionStateData
*
TransactionState
;
/* ----------------
* transaction states
* ----------------
/*
* transaction states - transaction state from server perspective
*
* Syntax error could cause transaction to abort, but client code thinks
* it is still in a transaction, so we have to wait for COMMIT/ROLLBACK.
*/
#define TRANS_DEFAULT 0
#define TRANS_START 1
...
...
@@ -56,9 +58,8 @@ typedef TransactionStateData *TransactionState;
#define TRANS_COMMIT 3
#define TRANS_ABORT 4
/* ----------------
* transaction block states
* ----------------
/*
* transaction block states - transaction state of client queries
*/
#define TBLOCK_DEFAULT 0
#define TBLOCK_BEGIN 1
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment