pub fn detail(&self) -> Option<String> {
        match self {
            CoordError::AutomaticTimestampFailure {
                unmaterialized,
                disabled_indexes,
            } => {
                let unmaterialized_err = if unmaterialized.is_empty() {
                    "".into()
                } else {
                    format!(
                        "\nUnmaterialized sources:\n\t{}",
                        itertools::join(unmaterialized, "\n\t")
                    )
                };

                let disabled_indexes_err = if disabled_indexes.is_empty() {
                    "".into()
                } else {
                    let d = disabled_indexes.iter().fold(
                        String::default(),
                        |acc, (object_name, disabled_indexes)| {
                            format!(
                                "{}\n\n\t{}\n\tDisabled indexes:\n\t\t{}",
                                acc,
                                object_name,
                                itertools::join(disabled_indexes, "\n\t\t")
                            )
                        },
                    );
                    format!("\nSources w/ disabled indexes:{}", d)
                };

                Some(format!(
                    "The query transitively depends on the following:{}{}",
                    unmaterialized_err, disabled_indexes_err
                ))
            }
            CoordError::Catalog(c) => c.detail(),
            CoordError::Eval(e) => e.detail(),
            CoordError::RelationOutsideTimeDomain { relations, names } => Some(format!(
                "The following relations in the query are outside the transaction's time domain:\n{}\n{}",
                relations
                    .iter()
                    .map(|r| r.quoted().to_string())
                    .collect::<Vec<_>>()
                    .join("\n"),
                match names.is_empty() {
                    true => "No relations are available.".to_string(),
                    false => format!(
                        "Only the following relations are available:\n{}",
                        names
                            .iter()
                            .map(|name| name.quoted().to_string())
                            .collect::<Vec<_>>()
                            .join("\n")
                    ),
                }
            )),
            CoordError::SafeModeViolation(_) => Some(
                "The Materialize server you are connected to is running in \
                 safe mode, which limits the features that are available."
                    .into(),
            ),
            CoordError::InvalidRematerialization {
                existing_indexes, source_type, ..
            } => {
                let source_name = match source_type {
                    RematerializedSourceType::Postgres => "Postgres",
                    RematerializedSourceType::S3 => "S3 with SQS notification ",
                    RematerializedSourceType::PersistedSource => "Persisted",
                };
                Some(format!(
                    "{} sources can be materialized by only one set of indexes at a time. \
                     The following indexes have already materialized this source:\n    {}",
                    source_name,
                    existing_indexes.join("\n    ")))
            }
            _ => None,
        }
    }
/// Reports additional details about the error, if any are available.
Reports additional details about the error, if any are available.
Reports additional details about the error if any are available .
pub fn detail(&self) -> Option<String> {
        match self {
            CoordError::AutomaticTimestampFailure {
                unmaterialized,
                disabled_indexes,
            } => {
                let unmaterialized_err = if unmaterialized.is_empty() {
                    "".into()
                } else {
                    format!(
                        "\nUnmaterialized sources:\n\t{}",
                        itertools::join(unmaterialized, "\n\t")
                    )
                };
                let disabled_indexes_err = if disabled_indexes.is_empty() {
                    "".into()
                } else {
                    let d = disabled_indexes.iter().fold(
                        String::default(),
                        |acc, (object_name, disabled_indexes)| {
                            format!(
                                "{}\n\n\t{}\n\tDisabled indexes:\n\t\t{}",
                                acc,
                                object_name,
                                itertools::join(disabled_indexes, "\n\t\t")
                            )
                        },
                    );
                    format!("\nSources w/ disabled indexes:{}", d)
                };
                Some(format!(
                    "The query transitively depends on the following:{}{}",
                    unmaterialized_err, disabled_indexes_err
                ))
            }
            CoordError::Catalog(c) => c.detail(),
            CoordError::Eval(e) => e.detail(),
            CoordError::RelationOutsideTimeDomain { relations, names } => Some(format!(
                "The following relations in the query are outside the transaction's time domain:\n{}\n{}",
                relations
                    .iter()
                    .map(|r| r.quoted().to_string())
                    .collect::<Vec<_>>()
                    .join("\n"),
                match names.is_empty() {
                    true => "No relations are available.".to_string(),
                    false => format!(
                        "Only the following relations are available:\n{}",
                        names
                            .iter()
                            .map(|name| name.quoted().to_string())
                            .collect::<Vec<_>>()
                            .join("\n")
                    ),
                }
            )),
            CoordError::SafeModeViolation(_) => Some(
                "The Materialize server you are connected to is running in \
                 safe mode, which limits the features that are available."
                    .into(),
            ),
            CoordError::InvalidRematerialization {
                existing_indexes, source_type, ..
            } => {
                let source_name = match source_type {
                    RematerializedSourceType::Postgres => "Postgres",
                    RematerializedSourceType::S3 => "S3 with SQS notification ",
                    RematerializedSourceType::PersistedSource => "Persisted",
                };
                Some(format!(
                    "{} sources can be materialized by only one set of indexes at a time. \
                     The following indexes have already materialized this source:\n    {}",
                    source_name,
                    existing_indexes.join("\n    ")))
            }
            _ => None,
        }
    }
pub fn detail ( & self ) -> Option < String > { match self { CoordError :: AutomaticTimestampFailure { unmaterialized , disabled_indexes , } => { let unmaterialized_err = if unmaterialized . is_empty ( ) { " " . into ( ) } else { format ! ( " \n \n \t " itertools join ( unmaterialized " \n \t " ) ) } ; let disabled_indexes_err = if disabled_indexes . is_empty ( ) { " " . into ( ) } else { let d = disabled_indexes . iter ( ) . fold ( String :: default ( ) , | acc , ( object_name , disabled_indexes ) | { format ! ( " \n \n \t \n \t \n \t \t " acc object_name itertools join ( disabled_indexes " \n \t \t " ) ) } , ) ; format ! ( " \n " d ) } ; Some ( format ! ( " " unmaterialized_err disabled_indexes_err ) ) } CoordError :: Catalog ( c ) => c . detail ( ) , CoordError :: Eval ( e ) => e . detail ( ) , CoordError :: RelationOutsideTimeDomain { relations , names } => Some ( format ! ( " \n \n " relations iter ( ) map ( r r quoted ( ) to_string ( ) ) collect Vec ( ) join ( " \n " ) match names is_empty ( ) { true " " to_string ( ) false format ( " \n " names iter ( ) map ( name name quoted ( ) to_string ( ) ) collect Vec ( ) join ( " \n " ) ) } ) ) , CoordError :: SafeModeViolation ( _ ) => Some ( " \
 " . into ( ) , ) , CoordError :: InvalidRematerialization { existing_indexes , source_type , .. } => { let source_name = match source_type { RematerializedSourceType :: Postgres => " " , RematerializedSourceType :: S3 => " " , RematerializedSourceType :: PersistedSource => " " , } ; Some ( format ! ( " \
 \n " source_name existing_indexes join ( " \n " ) ) ) } _ => None , } }
Reports additional details about the error, if any are available.
Reports additional details about the error if any are available .
&self