mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-10-28 14:46:22 +00:00
feat: stack trace style debug print for error (#2489)
* impl macro stack_trace_debug Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * manually mark external error Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * ignore warnings Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix clippy warnings Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * use debug print Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * simplify the error and warn macro Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix ut Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * add docs Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * replace snafu backtrace with location Signed-off-by: Ruihang Xia <waynestxia@gmail.com> --------- Signed-off-by: Ruihang Xia <waynestxia@gmail.com>
This commit is contained in:
@@ -9,6 +9,7 @@ api = { workspace = true }
|
||||
common-base = { workspace = true }
|
||||
common-catalog = { workspace = true }
|
||||
common-error = { workspace = true }
|
||||
common-macro = { workspace = true }
|
||||
common-query = { workspace = true }
|
||||
common-time = { workspace = true }
|
||||
datafusion-sql.workspace = true
|
||||
|
||||
+10
-3
@@ -16,6 +16,7 @@ use std::any::Any;
|
||||
|
||||
use common_error::ext::ErrorExt;
|
||||
use common_error::status_code::StatusCode;
|
||||
use common_macro::stack_trace_debug;
|
||||
use common_time::timestamp::TimeUnit;
|
||||
use common_time::Timestamp;
|
||||
use datatypes::prelude::{ConcreteDataType, Value};
|
||||
@@ -29,8 +30,9 @@ pub type Result<T> = std::result::Result<T, Error>;
|
||||
/// SQL parser errors.
|
||||
// Now the error in parser does not contains backtrace to avoid generating backtrace
|
||||
// every time the parser parses an invalid SQL.
|
||||
#[derive(Debug, Snafu)]
|
||||
#[derive(Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
#[stack_trace_debug]
|
||||
pub enum Error {
|
||||
#[snafu(display("SQL statement is not supported: {}, keyword: {}", sql, keyword))]
|
||||
Unsupported { sql: String, keyword: String },
|
||||
@@ -45,7 +47,8 @@ pub enum Error {
|
||||
sql: String,
|
||||
expected: String,
|
||||
actual: String,
|
||||
source: ParserError,
|
||||
#[snafu(source)]
|
||||
error: ParserError,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
@@ -57,7 +60,11 @@ pub enum Error {
|
||||
|
||||
// Syntax error from sql parser.
|
||||
#[snafu(display("Syntax error, sql: {}", sql))]
|
||||
Syntax { sql: String, source: ParserError },
|
||||
Syntax {
|
||||
sql: String,
|
||||
#[snafu(source)]
|
||||
error: ParserError,
|
||||
},
|
||||
|
||||
#[snafu(display("Missing time index constraint"))]
|
||||
MissingTimeIndex {},
|
||||
|
||||
@@ -602,7 +602,7 @@ mod tests {
|
||||
assert!(v.is_err());
|
||||
assert!(
|
||||
format!("{v:?}").contains(
|
||||
"column_name: \"a\", expect: Float64(Float64Type), actual: Boolean(BooleanType)"
|
||||
"Column a expect type: Float64(Float64Type), actual: Boolean(BooleanType))"
|
||||
),
|
||||
"v is {v:?}",
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user