Struct mz_transform::notice::OptimizerNotice
source · pub struct OptimizerNotice {
pub id: GlobalId,
pub kind: OptimizerNoticeKind,
pub item_id: Option<GlobalId>,
pub dependencies: BTreeSet<GlobalId>,
pub message: String,
pub hint: String,
pub action: Action,
pub message_redacted: Option<String>,
pub hint_redacted: Option<String>,
pub action_redacted: Option<Action>,
pub created_at: u64,
}
Expand description
An long lived in-memory representation of a RawOptimizerNotice
that is
meant to be kept as part of the hydrated catalog state.
Fields§
§id: GlobalId
An id
that uniquely identifies this notice in the mz_notices
relation.
kind: OptimizerNoticeKind
The notice kind.
item_id: Option<GlobalId>
The ID of the catalog item associated with this notice.
This is None
if the notice is scoped to the entire catalog.
dependencies: BTreeSet<GlobalId>
A set of ids that need to exist for this notice to be considered valid. Removing any of the IDs in this set will result in the notice being asynchronously removed from the catalog state.
message: String
A brief description of what concretely went wrong.
Details and context about situations in which this notice kind would be emitted should be reserved for the documentation page for this notice kind.
hint: String
A high-level hint that tells the user what can be improved.
action: Action
A recommended action. This is a more concrete version of the hint.
message_redacted: Option<String>
A redacted version of the message
field.
hint_redacted: Option<String>
A redacted version of the hint
field.
action_redacted: Option<Action>
A redacted version of the action
field.
created_at: u64
The date at which this notice was last created.
Implementations§
source§impl OptimizerNotice
impl OptimizerNotice
sourcepub fn explain(
notices: &Vec<Arc<Self>>,
humanizer: &dyn ExprHumanizer,
redacted: bool,
) -> Result<Vec<String>, Error>
pub fn explain( notices: &Vec<Arc<Self>>, humanizer: &dyn ExprHumanizer, redacted: bool, ) -> Result<Vec<String>, Error>
Turns a vector of notices into a vector of strings that can be used in EXPLAIN.
This method should be consistent with RawOptimizerNotice::explain
.
sourcefn is_valid(&self, humanizer: &dyn ExprHumanizer) -> bool
fn is_valid(&self, humanizer: &dyn ExprHumanizer) -> bool
Returns true
iff both the dependencies and the associated item for
this notice still exist.
This method should be consistent with RawOptimizerNotice::is_valid
.
Trait Implementations§
source§impl Arbitrary for OptimizerNotice
impl Arbitrary for OptimizerNotice
§type Parameters = (<GlobalId as Arbitrary>::Parameters, <OptimizerNoticeKind as Arbitrary>::Parameters, <Option<GlobalId> as Arbitrary>::Parameters, <BTreeSet<GlobalId> as Arbitrary>::Parameters, <String as Arbitrary>::Parameters, <String as Arbitrary>::Parameters, <Action as Arbitrary>::Parameters, <Option<String> as Arbitrary>::Parameters, <Option<String> as Arbitrary>::Parameters, (<Option<Action> as Arbitrary>::Parameters, <u64 as Arbitrary>::Parameters))
type Parameters = (<GlobalId as Arbitrary>::Parameters, <OptimizerNoticeKind as Arbitrary>::Parameters, <Option<GlobalId> as Arbitrary>::Parameters, <BTreeSet<GlobalId> as Arbitrary>::Parameters, <String as Arbitrary>::Parameters, <String as Arbitrary>::Parameters, <Action as Arbitrary>::Parameters, <Option<String> as Arbitrary>::Parameters, <Option<String> as Arbitrary>::Parameters, (<Option<Action> as Arbitrary>::Parameters, <u64 as Arbitrary>::Parameters))
arbitrary_with
accepts for configuration
of the generated Strategy
. Parameters must implement Default
.§type Strategy = Map<(<GlobalId as Arbitrary>::Strategy, <OptimizerNoticeKind as Arbitrary>::Strategy, <Option<GlobalId> as Arbitrary>::Strategy, <BTreeSet<GlobalId> as Arbitrary>::Strategy, <String as Arbitrary>::Strategy, <String as Arbitrary>::Strategy, <Action as Arbitrary>::Strategy, <Option<String> as Arbitrary>::Strategy, <Option<String> as Arbitrary>::Strategy, (<Option<Action> as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy)), fn(_: (GlobalId, OptimizerNoticeKind, Option<GlobalId>, BTreeSet<GlobalId>, String, String, Action, Option<String>, Option<String>, (Option<Action>, u64))) -> OptimizerNotice>
type Strategy = Map<(<GlobalId as Arbitrary>::Strategy, <OptimizerNoticeKind as Arbitrary>::Strategy, <Option<GlobalId> as Arbitrary>::Strategy, <BTreeSet<GlobalId> as Arbitrary>::Strategy, <String as Arbitrary>::Strategy, <String as Arbitrary>::Strategy, <Action as Arbitrary>::Strategy, <Option<String> as Arbitrary>::Strategy, <Option<String> as Arbitrary>::Strategy, (<Option<Action> as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy)), fn(_: (GlobalId, OptimizerNoticeKind, Option<GlobalId>, BTreeSet<GlobalId>, String, String, Action, Option<String>, Option<String>, (Option<Action>, u64))) -> OptimizerNotice>
Strategy
used to generate values of type Self
.source§fn arbitrary_with(_top: Self::Parameters) -> Self::Strategy
fn arbitrary_with(_top: Self::Parameters) -> Self::Strategy
source§impl Clone for OptimizerNotice
impl Clone for OptimizerNotice
source§fn clone(&self) -> OptimizerNotice
fn clone(&self) -> OptimizerNotice
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for OptimizerNotice
impl Debug for OptimizerNotice
source§impl<'de> Deserialize<'de> for OptimizerNotice
impl<'de> Deserialize<'de> for OptimizerNotice
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
source§impl Hash for OptimizerNotice
impl Hash for OptimizerNotice
source§impl Ord for OptimizerNotice
impl Ord for OptimizerNotice
source§fn cmp(&self, other: &OptimizerNotice) -> Ordering
fn cmp(&self, other: &OptimizerNotice) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl PartialEq for OptimizerNotice
impl PartialEq for OptimizerNotice
source§impl PartialOrd for OptimizerNotice
impl PartialOrd for OptimizerNotice
source§impl Serialize for OptimizerNotice
impl Serialize for OptimizerNotice
impl Eq for OptimizerNotice
impl StructuralPartialEq for OptimizerNotice
Auto Trait Implementations§
impl Freeze for OptimizerNotice
impl RefUnwindSafe for OptimizerNotice
impl Send for OptimizerNotice
impl Sync for OptimizerNotice
impl Unpin for OptimizerNotice
impl UnwindSafe for OptimizerNotice
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<T> FmtForward for T
impl<T> FmtForward for T
source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.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
source§impl<T, U> OverrideFrom<Option<&T>> for Uwhere
U: OverrideFrom<T>,
impl<T, U> OverrideFrom<Option<&T>> for Uwhere
U: OverrideFrom<T>,
source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> PreferredContainer for T
impl<T> PreferredContainer for T
source§impl<T> ProgressEventTimestamp for T
impl<T> ProgressEventTimestamp for T
source§impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
source§fn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
RustType::from_proto
.source§fn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
RustType::into_proto
.source§impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
source§fn plus_equals(&mut self, rhs: &&'a S)
fn plus_equals(&mut self, rhs: &&'a S)
std::ops::AddAssign
, for types that do not implement AddAssign
.source§impl<T> Serialize for T
impl<T> Serialize for T
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<Ok, Error>
source§impl<T> Tap for T
impl<T> Tap for T
source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moresource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moresource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moresource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moresource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.