8000 Use an enum instead of bool for encryption status · percona/postgres@2301aea · GitHub
[go: up one dir, main page]

Skip to content

Commit 2301aea

Browse files
committed
Use an enum instead of bool for encryption status
Replace the boolean used in the smgr hooks. Currently we only have two states still, but this is in preparation for adding a third state to indicate that the table is encrypted, but the key has not yet been loaded.
1 parent e7e63e3 commit 2301aea

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

contrib/pg_tde/src/smgr/pg_tde_smgr.c

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@
77
#include "access/pg_tde_tdemap.h"
88
#include "pg_tde_event_capture.h"
99

10+
typedef enum TDEMgrRelationDataEncryptionStatus
11+
{
12+
/* This is a plaintext relation */
13+
RELATION_NOT_ENCRYPTED = 0,
14+
15+
/* This is an encrypted relation, and we have the key available. */
16+
RELATION_KEY_AVAILABLE = 1,
17+
} TDEMgrRelationDataEncryptionStatus;
18+
1019
typedef struct TDESMgrRelationData
1120
{
1221
/* parent data */
@@ -19,7 +28,7 @@ typedef struct TDESMgrRelationData
1928
int md_num_open_segs[MAX_FORKNUM + 1];
2029
struct _MdfdVec *md_seg_fds[MAX_FORKNUM + 1];
2130

22-
bool encrypted_relation;
31+
TDEMgrRelationDataEncryptionStatus encryption_status;
2332
InternalKey relKey;
2433
} TDESMgrRelationData;
2534

@@ -72,7 +81,7 @@ tde_mdwritev(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
7281
TDESMgrRelation tdereln = (TDESMgrRelation) reln;
7382
InternalKey *int_key = &tdereln->relKey;
7483

75-
if (!tdereln->encrypted_relation)
84+
if (tdereln->encryption_status == RELATION_NOT_ENCRYPTED)
7685
{
7786
mdwritev(reln, forknum, blocknum, buffers, nblocks, skipFsync);
7887
}
@@ -131,7 +140,7 @@ tde_mdextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
131140
TDESMgrRelation tdereln = (TDESMgrRelation) reln;
132141
InternalKey *int_key = &tdereln->relKey;
133142

134-
if (!tdereln->encrypted_relation)
143+
if (tdereln->encryption_status == RELATION_NOT_ENCRYPTED)
135144
{
136145
mdextend(reln, forknum, blocknum, buffer, skipFsync);
137146
}
@@ -160,7 +169,7 @@ tde_mdreadv(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
160169

161170
mdreadv(reln, forknum, blocknum, buffers, nblocks);
162171

163-
if (!tdereln->encrypted_relation)
172+
if (tdereln->encryption_status == RELATION_NOT_ENCRYPTED)
164173
return;
165174

166175
for (int i = 0; i < nblocks; ++i)
@@ -233,12 +242,12 @@ tde_mdcreate(RelFileLocator relold, SMgrRelation reln, ForkNumber forknum, bool
233242

234243
if (key)
235244
{
236-
tdereln->encrypted_relation = true;
245+
tdereln->encryption_status = RELATION_KEY_AVAILABLE;
237246
tdereln->relKey = *key;
238247
}
239248
else
240249
{
241-
tdereln->encrypted_relation = false;
250+
tdereln->encryption_status = RELATION_NOT_ENCRYPTED;
242251
}
243252
}
244253
}
@@ -258,12 +267,12 @@ tde_mdopen(SMgrRelation reln)
258267

259268
if (key)
260269
{
261-
tdereln->encrypted_relation = true;
270+
tdereln->encryption_status = RELATION_KEY_AVAILABLE;
262271
tdereln->relKey = *key;
263272
}
264273
else
265274
{
266-
tdereln->encrypted_relation = false;
275+
tdereln->encryption_status = RELATION_NOT_ENCRYPTED;
267276
}
268277
}
269278

0 commit comments

Comments
 (0)
0