PostgreSQL Source Code: src/backend/access/transam/transam.c Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
21
26
27
28
29
30
31
32
36
37
39
40
41
42
43
44
45
46
47
48
49
50
53{
56
57
58
59
60
63
64
65
66
68 {
74 }
75
76
77
78
80
81
82
83
84
87 {
91 }
92
93 return xidstatus;
94}
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125bool
127{
129
131
132
133
134
136 return true;
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
153 {
155
157 return false;
160 {
161 elog(WARNING, "no pg_subtrans entry for subcommitted XID %u",
162 transactionId);
163 return false;
164 }
166 }
167
168
169
170
171 return false;
172}
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187bool
189{
191
193
194
195
196
198 return true;
199
200
201
202
203
204
205
207 {
209
211 return true;
214 {
215
216 elog(WARNING, "no pg_subtrans entry for subcommitted XID %u",
217 transactionId);
218 return true;
219 }
221 }
222
223
224
225
226 return false;
227}
228
229
230
231
232
233
234
235
236
237
238
239void
241{
245}
246
247
248
249
250
251void
254{
257}
258
259
260
261
262
263
264
265
266
267
268
269void
271{
274}
275
276
277
278
279bool
281{
282
283
284
285
287
289 return (id1 < id2);
290
291 diff = (int32) (id1 - id2);
292 return (diff < 0);
293}
294
295
296
297
298bool
300{
302
304 return (id1 <= id2);
305
306 diff = (int32) (id1 - id2);
307 return (diff <= 0);
308}
309
310
311
312
313bool
315{
317
319 return (id1 > id2);
320
321 diff = (int32) (id1 - id2);
322 return (diff > 0);
323}
324
325
326
327
328bool
330{
332
334 return (id1 >= id2);
335
336 diff = (int32) (id1 - id2);
337 return (diff >= 0);
338}
339
340
341
342
343
347{
349
350
351
352
353
354
355
356
357 result = mainxid;
358 while (--nxids >= 0)
359 {
361 result = xids[nxids];
362 }
363 return result;
364}
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
383{
385
386
387
388
389
390
391
394
395
398
399
400
401
403
404 return result;
405}
XidStatus TransactionIdGetStatus(TransactionId xid, XLogRecPtr *lsn)
void TransactionIdSetTreeStatus(TransactionId xid, int nsubxids, TransactionId *subxids, XidStatus status, XLogRecPtr lsn)
#define TRANSACTION_STATUS_IN_PROGRESS
#define TRANSACTION_STATUS_ABORTED
#define TRANSACTION_STATUS_SUB_COMMITTED
#define TRANSACTION_STATUS_COMMITTED
TransactionId TransactionXmin
TransactionId SubTransGetParent(TransactionId xid)
void TransactionIdAsyncCommitTree(TransactionId xid, int nxids, TransactionId *xids, XLogRecPtr lsn)
static TransactionId cachedFetchXid
static XidStatus TransactionLogFetch(TransactionId transactionId)
TransactionId TransactionIdLatest(TransactionId mainxid, int nxids, const TransactionId *xids)
bool TransactionIdDidCommit(TransactionId transactionId)
void TransactionIdCommitTree(TransactionId xid, int nxids, TransactionId *xids)
void TransactionIdAbortTree(TransactionId xid, int nxids, TransactionId *xids)
bool TransactionIdPrecedes(TransactionId id1, TransactionId id2)
bool TransactionIdPrecedesOrEquals(TransactionId id1, TransactionId id2)
bool TransactionIdDidAbort(TransactionId transactionId)
bool TransactionIdFollows(TransactionId id1, TransactionId id2)
XLogRecPtr TransactionIdGetCommitLSN(TransactionId xid)
static XLogRecPtr cachedCommitLSN
static XidStatus cachedFetchXidStatus
bool TransactionIdFollowsOrEquals(TransactionId id1, TransactionId id2)
#define FrozenTransactionId
#define InvalidTransactionId
#define TransactionIdEquals(id1, id2)
#define BootstrapTransactionId
#define TransactionIdIsValid(xid)
#define TransactionIdIsNormal(xid)
#define InvalidXLogRecPtr