Skip to content

Commit b4d9ba9

Browse files
committed
bug fix + batch insert
1 parent 5b2f94d commit b4d9ba9

1 file changed

Lines changed: 11 additions & 9 deletions

File tree

  • flow/connectors/external_metadata

flow/connectors/external_metadata/store.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,7 @@ func OffloadSensitivePartitionRanges(
320320
return fmt.Errorf("failed to clear existing partition ranges: %w", err)
321321
}
322322

323+
insertRows := make([][]any, 0, len(partitions))
323324
for _, partition := range partitions {
324325
payload, err := proto.Marshal(partition.Range)
325326
if err != nil {
@@ -329,20 +330,21 @@ func OffloadSensitivePartitionRanges(
329330
if err != nil {
330331
return fmt.Errorf("failed to encrypt partition range: %w", err)
331332
}
332-
333-
if _, err := tx.Exec(ctx,
334-
`INSERT INTO `+qrepPartitionRangesTableName+
335-
`(parent_mirror_name,run_uuid,partition_uuid,enc_key_id,range_payload) VALUES($1,$2,$3,$4,$5)`,
336-
parentMirrorName, runUUID, partition.PartitionId, key.ID, encrypted,
337-
); err != nil {
338-
return fmt.Errorf("failed to persist encrypted partition range: %w", err)
339-
}
333+
insertRows = append(insertRows, []any{parentMirrorName, runUUID, partition.PartitionId, key.ID, encrypted})
340334

341335
partition.Range = &protos.PartitionRange{
342336
Range: &protos.PartitionRange_StringRange{StringRange: &protos.StringPartitionRange{}},
343337
}
344338
}
345339

340+
if _, err := tx.CopyFrom(ctx,
341+
pgx.Identifier{qrepPartitionRangesTableName},
342+
[]string{"parent_mirror_name", "run_uuid", "partition_uuid", "enc_key_id", "range_payload"},
343+
pgx.CopyFromRows(insertRows),
344+
); err != nil {
345+
return fmt.Errorf("failed to persist encrypted partition ranges: %w", err)
346+
}
347+
346348
if err := tx.Commit(ctx); err != nil {
347349
return fmt.Errorf("failed to commit partition ranges: %w", err)
348350
}
@@ -418,7 +420,7 @@ func RestoreSensitivePartitionRanges(
418420
func partitionsContainSensitiveRanges(partitions []*protos.QRepPartition) bool {
419421
for _, partition := range partitions {
420422
if partition == nil || partition.Range == nil {
421-
return false
423+
continue
422424
}
423425
// String ranges may contain PII data like email, so deem it as sensitive.
424426
if _, ok := partition.Range.Range.(*protos.PartitionRange_StringRange); ok {

0 commit comments

Comments
 (0)