From ce7ce310b91bd24d80bd98c4e267d2b14ae4220c Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Fri, 31 Jul 2020 20:59:57 -0400 Subject: [PATCH 1/2] Give a more helpful message on error Before: ``` database error: ERROR: insert or update on table "owner_rels" violates foreign key constraint "owner_rels_cid_fkey" ``` After: ``` database error: ERROR: insert or update on table "owner_rels" violates foreign key constraint "owner_rels_cid_fkey" DETAIL: Key (cid)=(4) is not present in table "releases". ``` --- tokio-postgres/src/error/mod.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tokio-postgres/src/error/mod.rs b/tokio-postgres/src/error/mod.rs index 0bcf0c6f..8a59109a 100644 --- a/tokio-postgres/src/error/mod.rs +++ b/tokio-postgres/src/error/mod.rs @@ -309,7 +309,14 @@ impl DbError { impl fmt::Display for DbError { fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(fmt, "{}: {}", self.severity, self.message) + write!(fmt, "{}: {}", self.severity, self.message)?; + if let Some(detail) = &self.detail { + write!(fmt, "DETAIL: {}", detail)?; + } + if let Some(hint) = &self.hint { + write!(fmt, "HINT: {}", hint)?; + } + Ok(()) } } From 61f6e3e5c49390ab43035a222f67976814525e41 Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Sat, 1 Aug 2020 11:12:22 -0400 Subject: [PATCH 2/2] Add newline before DETAIL and HINT --- tokio-postgres/src/error/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tokio-postgres/src/error/mod.rs b/tokio-postgres/src/error/mod.rs index 8a59109a..f9335cfe 100644 --- a/tokio-postgres/src/error/mod.rs +++ b/tokio-postgres/src/error/mod.rs @@ -311,10 +311,10 @@ impl fmt::Display for DbError { fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { write!(fmt, "{}: {}", self.severity, self.message)?; if let Some(detail) = &self.detail { - write!(fmt, "DETAIL: {}", detail)?; + write!(fmt, "\nDETAIL: {}", detail)?; } if let Some(hint) = &self.hint { - write!(fmt, "HINT: {}", hint)?; + write!(fmt, "\nHINT: {}", hint)?; } Ok(()) }