forked from bersler/OpenLogReplicator
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathOpCode0514.cpp
More file actions
74 lines (59 loc) · 3.09 KB
/
Copy pathOpCode0514.cpp
File metadata and controls
74 lines (59 loc) · 3.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/* Oracle Redo OpCode: 5.14
Copyright (C) 2018-2024 Adam Leszczynski ([email protected])
This file is part of OpenLogReplicator.
OpenLogReplicator is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as published
by the Free Software Foundation; either version 3, or (at your option)
any later version.
OpenLogReplicator is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
Public License for more details.
You should have received a copy of the GNU General Public License
along with OpenLogReplicator; see the file LICENSE; If not see
<http://www.gnu.org/licenses/>. */
#include "../common/RedoLogRecord.h"
#include "OpCode0514.h"
#include "Transaction.h"
namespace OpenLogReplicator {
void OpCode0514::process0514(Ctx* ctx, RedoLogRecord* redoLogRecord, Transaction* transaction) {
OpCode::process(ctx, redoLogRecord);
if (transaction == nullptr) {
ctx->logTrace(TRACE_TRANSACTION, "attributes with no transaction, offset: " + std::to_string(redoLogRecord->dataOffset));
return;
}
uint64_t fieldPos = 0;
typeField fieldNum = 0;
uint16_t fieldLength = 0;
RedoLogRecord::nextField(ctx, redoLogRecord, fieldNum, fieldPos, fieldLength, 0x051401);
// Field: 1
attributeSessionSerial(ctx, redoLogRecord, fieldPos, fieldLength, transaction);
if (!RedoLogRecord::nextFieldOpt(ctx, redoLogRecord, fieldNum, fieldPos, fieldLength, 0x051402))
return;
// Field: 2
attribute(ctx, redoLogRecord, fieldPos, fieldLength, "transaction name = ", "transaction name", transaction);
if (!RedoLogRecord::nextFieldOpt(ctx, redoLogRecord, fieldNum, fieldPos, fieldLength, 0x051403))
return;
// Field: 3
attributeFlags(ctx, redoLogRecord, fieldPos, fieldLength, transaction);
if (!RedoLogRecord::nextFieldOpt(ctx, redoLogRecord, fieldNum, fieldPos, fieldLength, 0x051404))
return;
// Field: 4
attributeVersion(ctx, redoLogRecord, fieldPos, fieldLength, transaction);
if (!RedoLogRecord::nextFieldOpt(ctx, redoLogRecord, fieldNum, fieldPos, fieldLength, 0x051405))
return;
// Field: 5
attributeAuditSessionId(ctx, redoLogRecord, fieldPos, fieldLength, transaction);
if (!RedoLogRecord::nextFieldOpt(ctx, redoLogRecord, fieldNum, fieldPos, fieldLength, 0x051406))
return;
// Field: 6
if (!RedoLogRecord::nextFieldOpt(ctx, redoLogRecord, fieldNum, fieldPos, fieldLength, 0x051407))
return;
// Field: 7
attribute(ctx, redoLogRecord, fieldPos, fieldLength, "Client Id = ", "client id", transaction);
if (!RedoLogRecord::nextFieldOpt(ctx, redoLogRecord, fieldNum, fieldPos, fieldLength, 0x051408))
return;
// Field: 8
attribute(ctx, redoLogRecord, fieldPos, fieldLength, "login username = ", "login username", transaction);
}
}