#[non_exhaustive]pub struct RoutingHint {
pub operation_uid: u64,
pub database_id: u64,
pub schema_generation: Bytes,
pub key: Bytes,
pub limit_key: Bytes,
pub group_uid: u64,
pub split_id: u64,
pub tablet_uid: u64,
pub skipped_tablet_uid: Vec<SkippedTablet>,
pub client_location: String,
/* private fields */
}Expand description
RoutingHint can be optionally added to location-aware Spanner
requests. It gives the server hints that can be used to route the request to
an appropriate server, potentially significantly decreasing latency and
improving throughput. To achieve improved performance, most fields must be
filled in with accurate values.
The presence of a valid RoutingHint tells the server that the client
is location-aware.
RoutingHint does not change the semantics of the request; it is
purely a performance hint; the request will perform the same actions on the
database’s data as if RoutingHint were not present. However, if
the RoutingHint is incomplete or incorrect, the response may include
a CacheUpdate the client can use to correct its location cache.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.operation_uid: u64A session-scoped unique ID for the operation, computed client-side.
Requests with the same operation_uid should have a shared ‘shape’,
meaning that some fields are expected to be the same, such as the SQL
query, the target table/columns (for reads) etc. Requests with the same
operation_uid are meant to differ only in fields like keys/key
ranges/query parameters, transaction IDs, etc.
operation_uid must be non-zero for RoutingHint to be valid.
database_id: u64The database ID of the database being accessed, see
CacheUpdate.database_id. Should match the cache entries that were used
to generate the rest of the fields in this RoutingHint.
schema_generation: BytesThe schema generation of the recipe that was used to generate key and
limit_key. See also RecipeList.schema_generation.
key: BytesThe key / key range that this request accesses. For operations that
access a single key, key should be set and limit_key should be empty.
For operations that access a key range, key and limit_key should both
be set, to the inclusive start and exclusive end of the range respectively.
The keys are encoded in “sortable string format” (ssformat), using a
KeyRecipe that is appropriate for the request. See KeyRecipe for more
details.
limit_key: BytesIf this request targets a key range, this is the exclusive end of the
range. See key for more details.
group_uid: u64The group UID of the group that the client believes serves the range
defined by key and limit_key. See Range.group_uid for more details.
split_id: u64The split ID of the split that the client believes contains the range
defined by key and limit_key. See Range.split_id for more details.
tablet_uid: u64The tablet UID of the tablet from group group_uid that the client
believes is best to serve this request. See Group.local_tablet_uids and
Group.leader_tablet_uid.
skipped_tablet_uid: Vec<SkippedTablet>If the client had multiple options for tablet selection, and some of its
first choices were unhealthy (e.g., the server is unreachable, or
Tablet.skip is true), this field will contain the tablet UIDs of those
tablets, with their incarnations. The server may include a CacheUpdate
with new locations for those tablets.
client_location: StringIf present, the client’s current location. This should be the name of a Google Cloud zone or region, such as “us-central1”.
If absent, the client’s location will be assumed to be the same as the location of the server the client ends up connected to.
Locations are primarily valuable for clients that connect from regions other than the ones that contain the Spanner database.
Implementations§
Source§impl RoutingHint
impl RoutingHint
Sourcepub fn set_operation_uid<T: Into<u64>>(self, v: T) -> Self
pub fn set_operation_uid<T: Into<u64>>(self, v: T) -> Self
Sets the value of operation_uid.
Sourcepub fn set_database_id<T: Into<u64>>(self, v: T) -> Self
pub fn set_database_id<T: Into<u64>>(self, v: T) -> Self
Sets the value of database_id.
Sourcepub fn set_schema_generation<T: Into<Bytes>>(self, v: T) -> Self
pub fn set_schema_generation<T: Into<Bytes>>(self, v: T) -> Self
Sets the value of schema_generation.
Sourcepub fn set_limit_key<T: Into<Bytes>>(self, v: T) -> Self
pub fn set_limit_key<T: Into<Bytes>>(self, v: T) -> Self
Sets the value of limit_key.
Sourcepub fn set_group_uid<T: Into<u64>>(self, v: T) -> Self
pub fn set_group_uid<T: Into<u64>>(self, v: T) -> Self
Sets the value of group_uid.
Sourcepub fn set_split_id<T: Into<u64>>(self, v: T) -> Self
pub fn set_split_id<T: Into<u64>>(self, v: T) -> Self
Sets the value of split_id.
Sourcepub fn set_tablet_uid<T: Into<u64>>(self, v: T) -> Self
pub fn set_tablet_uid<T: Into<u64>>(self, v: T) -> Self
Sets the value of tablet_uid.
Sourcepub fn set_skipped_tablet_uid<T, V>(self, v: T) -> Self
pub fn set_skipped_tablet_uid<T, V>(self, v: T) -> Self
Sets the value of skipped_tablet_uid.
Sourcepub fn set_client_location<T: Into<String>>(self, v: T) -> Self
pub fn set_client_location<T: Into<String>>(self, v: T) -> Self
Sets the value of client_location.
Trait Implementations§
Source§impl Clone for RoutingHint
impl Clone for RoutingHint
Source§fn clone(&self) -> RoutingHint
fn clone(&self) -> RoutingHint
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RoutingHint
impl Debug for RoutingHint
Source§impl Default for RoutingHint
impl Default for RoutingHint
Source§fn default() -> RoutingHint
fn default() -> RoutingHint
Source§impl Message for RoutingHint
impl Message for RoutingHint
Source§impl PartialEq for RoutingHint
impl PartialEq for RoutingHint
Source§fn eq(&self, other: &RoutingHint) -> bool
fn eq(&self, other: &RoutingHint) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for RoutingHint
Auto Trait Implementations§
impl !Freeze for RoutingHint
impl RefUnwindSafe for RoutingHint
impl Send for RoutingHint
impl Sync for RoutingHint
impl Unpin for RoutingHint
impl UnsafeUnpin for RoutingHint
impl UnwindSafe for RoutingHint
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request