Skip to content

Commit c72edef

Browse files
committed
Update for new APIs + slight bugfix
1 parent a14a96d commit c72edef

File tree

4 files changed

+15
-19
lines changed

4 files changed

+15
-19
lines changed

cpp/src/parquet/arrow/generate_fuzz_corpus.cc

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -174,32 +174,24 @@ std::vector<WriteConfig> GetEncryptedWriteConfigurations(const ::arrow::Schema&
174174
continue;
175175
}
176176
auto column_key = MakeEncryptionKey();
177-
column_map[field->name()] = ColumnEncryptionProperties::Builder(field->name())
178-
.key(column_key.key)
179-
->key_metadata(column_key.key_metadata)
180-
->build();
177+
column_map[field->name()] = ColumnEncryptionProperties::WithColumnKey(
178+
column_key.key, column_key.key_metadata);
181179
}
180+
ARROW_DCHECK_NE(column_map.size(), 0);
182181
file_encryptions.push_back(
183182
file_encryption_builder().encrypted_columns(std::move(column_map))->build());
184183
}
185-
// Mostly unencrypted columns
186-
// (ideally we would like an encrypted footer and only plaintext columns, but the
187-
// current API doesn't allow that)
184+
// Unencrypted columns
188185
{
189186
ColumnPathToEncryptionPropertiesMap column_map;
190187
// Only encrypt the first non-nested column, the rest will be written in plaintext
191188
for (const auto& field : schema.fields()) {
192-
if (field->type()->num_fields() == 0) {
193-
auto column_key = MakeEncryptionKey();
194-
column_map[field->name()] = ColumnEncryptionProperties::Builder(field->name())
195-
.key(column_key.key)
196-
->key_metadata(column_key.key_metadata)
197-
->build();
198-
break;
189+
if (field->type()->num_fields() > 0) {
190+
continue;
199191
}
192+
column_map[field->name()] = ColumnEncryptionProperties::Unencrypted();
200193
}
201-
ARROW_DCHECK_EQ(column_map.size(), 1);
202-
ARROW_DCHECK_LT(column_map.size(), static_cast<size_t>(schema.num_fields()));
194+
ARROW_DCHECK_NE(column_map.size(), 0);
203195
file_encryptions.push_back(
204196
file_encryption_builder().encrypted_columns(std::move(column_map))->build());
205197
}

cpp/src/parquet/encryption/encryption.cc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,8 +277,7 @@ FileEncryptionProperties::Builder* FileEncryptionProperties::Builder::footer_key
277277
std::shared_ptr<ColumnEncryptionProperties>
278278
FileEncryptionProperties::column_encryption_properties(const std::string& column_path) {
279279
if (encrypted_columns_.size() == 0) {
280-
auto builder = std::make_shared<ColumnEncryptionProperties::Builder>(column_path);
281-
return builder->build();
280+
return ColumnEncryptionProperties::WithFooterKey();
282281
}
283282
if (encrypted_columns_.find(column_path) != encrypted_columns_.end()) {
284283
return encrypted_columns_[column_path];

cpp/src/parquet/encryption/internal_file_encryptor.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ InternalFileEncryptor::InternalFileEncryptor::GetColumnEncryptor(
9999
}
100100
}
101101
auto column_prop = properties_->column_encryption_properties(column_path);
102-
if (column_prop == nullptr) {
102+
if (column_prop == nullptr || !column_prop->is_encrypted()) {
103103
return nullptr;
104104
}
105105

cpp/src/parquet/encryption/write_configurations_test.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ TEST_F(TestEncryptionConfiguration, EncryptTwoColumnsAndTheFooter) {
104104
ColumnEncryptionProperties::WithColumnKey(kColumnEncryptionKey1_, "kc1");
105105
encryption_cols2[path_to_float_field_] =
106106
ColumnEncryptionProperties::WithColumnKey(kColumnEncryptionKey2_, "kc2");
107+
encryption_cols2[kBooleanFieldName] = ColumnEncryptionProperties::Unencrypted();
107108

108109
FileEncryptionProperties::Builder file_encryption_builder_2(kFooterEncryptionKey_);
109110

@@ -122,6 +123,7 @@ TEST_F(TestEncryptionConfiguration, EncryptTwoColumnsWithPlaintextFooter) {
122123
ColumnEncryptionProperties::WithColumnKey(kColumnEncryptionKey1_, "kc1");
123124
encryption_cols3[path_to_float_field_] =
124125
ColumnEncryptionProperties::WithColumnKey(kColumnEncryptionKey2_, "kc2");
126+
encryption_cols3[kBooleanFieldName] = ColumnEncryptionProperties::Unencrypted();
125127

126128
FileEncryptionProperties::Builder file_encryption_builder_3(kFooterEncryptionKey_);
127129

@@ -140,6 +142,7 @@ TEST_F(TestEncryptionConfiguration, EncryptTwoColumnsAndFooterWithAadPrefix) {
140142
ColumnEncryptionProperties::WithColumnKey(kColumnEncryptionKey1_, "kc1");
141143
encryption_cols4[path_to_float_field_] =
142144
ColumnEncryptionProperties::WithColumnKey(kColumnEncryptionKey2_, "kc2");
145+
encryption_cols4[kBooleanFieldName] = ColumnEncryptionProperties::Unencrypted();
143146

144147
FileEncryptionProperties::Builder file_encryption_builder_4(kFooterEncryptionKey_);
145148

@@ -159,6 +162,7 @@ TEST_F(TestEncryptionConfiguration,
159162
ColumnEncryptionProperties::WithColumnKey(kColumnEncryptionKey1_, "kc1");
160163
encryption_cols5[path_to_float_field_] =
161164
ColumnEncryptionProperties::WithColumnKey(kColumnEncryptionKey2_, "kc2");
165+
encryption_cols5[kBooleanFieldName] = ColumnEncryptionProperties::Unencrypted();
162166

163167
FileEncryptionProperties::Builder file_encryption_builder_5(kFooterEncryptionKey_);
164168

@@ -179,6 +183,7 @@ TEST_F(TestEncryptionConfiguration, EncryptTwoColumnsAndFooterUseAES_GCM_CTR) {
179183
ColumnEncryptionProperties::WithColumnKey(kColumnEncryptionKey1_, "kc1");
180184
encryption_cols6[path_to_float_field_] =
181185
ColumnEncryptionProperties::WithColumnKey(kColumnEncryptionKey2_, "kc2");
186+
encryption_cols6[kBooleanFieldName] = ColumnEncryptionProperties::Unencrypted();
182187

183188
FileEncryptionProperties::Builder file_encryption_builder_6(kFooterEncryptionKey_);
184189

0 commit comments

Comments
 (0)