From b0fd8c74565cf83476e4b252a3ee6ed98264cc28 Mon Sep 17 00:00:00 2001 From: Ashok Menon Date: Tue, 30 Jul 2024 21:55:30 +0100 Subject: [PATCH] [pick #18501][GraphQL] PerEpochConfig ## Description Picking parts of #18501 that introduce new types for representing per-epoch configs as a form of unchanged shared object. ## Test plan Tested against the query in #18836. --- crates/sui-core/tests/staged/sui.yaml | 2 ++ crates/sui-types/src/effects/effects_v2.rs | 40 +++++++++++++--------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/crates/sui-core/tests/staged/sui.yaml b/crates/sui-core/tests/staged/sui.yaml index b6b9aaf57b05b..ee6ee2bdf3be0 100644 --- a/crates/sui-core/tests/staged/sui.yaml +++ b/crates/sui-core/tests/staged/sui.yaml @@ -1086,6 +1086,8 @@ UnchangedSharedKind: Cancelled: NEWTYPE: TYPENAME: SequenceNumber + 4: + PerEpochConfig: UNIT UpgradeInfo: STRUCT: - upgraded_id: diff --git a/crates/sui-types/src/effects/effects_v2.rs b/crates/sui-types/src/effects/effects_v2.rs index 363799820cc12..16fa4bddef23b 100644 --- a/crates/sui-types/src/effects/effects_v2.rs +++ b/crates/sui-types/src/effects/effects_v2.rs @@ -107,22 +107,28 @@ impl TransactionEffectsAPI for TransactionEffectsV2 { } _ => None, }) - .chain(self.unchanged_shared_objects.iter().map( - |(id, change_kind)| match change_kind { - UnchangedSharedKind::ReadOnlyRoot((version, digest)) => { - InputSharedObject::ReadOnly((*id, *version, *digest)) - } - UnchangedSharedKind::MutateDeleted(seqno) => { - InputSharedObject::MutateDeleted(*id, *seqno) - } - UnchangedSharedKind::ReadDeleted(seqno) => { - InputSharedObject::ReadDeleted(*id, *seqno) - } - UnchangedSharedKind::Cancelled(seqno) => { - InputSharedObject::Cancelled(*id, *seqno) - } - }, - )) + .chain( + self.unchanged_shared_objects + .iter() + .filter_map(|(id, change_kind)| match change_kind { + UnchangedSharedKind::ReadOnlyRoot((version, digest)) => { + Some(InputSharedObject::ReadOnly((*id, *version, *digest))) + } + UnchangedSharedKind::MutateDeleted(seqno) => { + Some(InputSharedObject::MutateDeleted(*id, *seqno)) + } + UnchangedSharedKind::ReadDeleted(seqno) => { + Some(InputSharedObject::ReadDeleted(*id, *seqno)) + } + UnchangedSharedKind::Cancelled(seqno) => { + Some(InputSharedObject::Cancelled(*id, *seqno)) + } + // We can not expose the per epoch config object as input shared object, + // since it does not require sequencing, and hence shall not be considered + // as a normal input shared object. + UnchangedSharedKind::PerEpochConfig => None, + }), + ) .collect() } @@ -587,4 +593,6 @@ pub enum UnchangedSharedKind { ReadDeleted(SequenceNumber), /// Shared objects in cancelled transaction. The sequence number embed cancellation reason. Cancelled(SequenceNumber), + /// Read of a per-epoch config object that should remain the same during an epoch. + PerEpochConfig, }