You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
VC1 has existed as a PlanHashMode for a while but has never become current, the PlanHashable.CURRENT_FOR_CONTINUATION is still VC0. I counted two places that already implement VC1-specific hashing that will be exercised in prod with this switch:
ConstantObjectValue.planHash switches on the mode directly: VC0 hashes BASE_HASH alone, while VC1 hashes BASE_HASH together with the constantId. This is the change the VC1 javadoc in PlanHashable records as its sole entry ("ConstantObjectValue hashes without index"), the VC1-specific hashing was introduced in introduce VC1; COV does not hash ordinal anymore #2577 back in May 2024 (!).
RecordQueryAggregateIndexPlan (once Route aggregate index plan breadcrumb values through the match candidate #4550 lands) hashes only the result type under VC1 instead of the whole result value, and serializes accordingly, toProto omits the result value and the group-by result value, and fromProto reconstructs a QueriedValue from the type. Two fields on that plan exist purely to keep the VC0 wire format intact and are marked with todos to be deleted when the bump happens.
Bumping is user-visible: outstanding continuations hashed under VC0 will fail validation once VC1 becomes current. But once this is done, and all engine "talk" VC1, we can cleanup all of the code related to maintaining VC0-compatibility.
VC1has existed as aPlanHashModefor a while but has never become current, thePlanHashable.CURRENT_FOR_CONTINUATIONis stillVC0. I counted two places that already implementVC1-specific hashing that will be exercised in prod with this switch:ConstantObjectValue.planHashswitches on the mode directly:VC0hashesBASE_HASHalone, whileVC1hashesBASE_HASHtogether with theconstantId. This is the change theVC1javadoc inPlanHashablerecords as its sole entry ("ConstantObjectValuehashes without index"), theVC1-specific hashing was introduced in introduce VC1; COV does not hash ordinal anymore #2577 back in May 2024 (!).RecordQueryAggregateIndexPlan(once Route aggregate index plan breadcrumb values through the match candidate #4550 lands) hashes only the result type underVC1instead of the whole result value, and serializes accordingly,toProtoomits the result value and the group-by result value, andfromProtoreconstructs aQueriedValuefrom the type. Two fields on that plan exist purely to keep theVC0wire format intact and are marked with todos to be deleted when the bump happens.Bumping is user-visible: outstanding continuations hashed under
VC0will fail validation onceVC1becomes current. But once this is done, and all engine "talk"VC1, we can cleanup all of the code related to maintainingVC0-compatibility.