mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-08 22:32:55 +00:00
refactor: remove source and location in snafu display (#2428)
* refactor: remove source pt 1 * refactor: remove source pt 2 * refactor: remove source pt 3 * refactor: remove location pt 1 * refactor: remove location pt 2 * chore: remove rustc files * chore: fix error case * chore: fix test * chore: fix test * chore: fix cr issue Co-authored-by: fys <40801205+fengys1996@users.noreply.github.com> --------- Co-authored-by: fys <40801205+fengys1996@users.noreply.github.com>
This commit is contained in:
@@ -34,22 +34,14 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to convert column default constraint, column: {}, source: {}",
|
||||
column,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to convert column default constraint, column: {}", column))]
|
||||
ConvertColumnDefaultConstraint {
|
||||
column: String,
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Invalid column default constraint, column: {}, source: {}",
|
||||
column,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Invalid column default constraint, column: {}", column))]
|
||||
InvalidColumnDefaultConstraint {
|
||||
column: String,
|
||||
location: Location,
|
||||
|
||||
@@ -28,13 +28,13 @@ pub enum Error {
|
||||
#[snafu(display("Internal state error: {}", msg))]
|
||||
InternalState { msg: String },
|
||||
|
||||
#[snafu(display("IO error, source: {}", source))]
|
||||
#[snafu(display("IO error"))]
|
||||
Io {
|
||||
source: std::io::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Auth failed, source: {}", source))]
|
||||
#[snafu(display("Auth failed"))]
|
||||
AuthBackend {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
|
||||
@@ -26,44 +26,37 @@ use tokio::task::JoinError;
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Failed to list catalogs, source: {}", source))]
|
||||
#[snafu(display("Failed to list catalogs"))]
|
||||
ListCatalogs {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to list {}'s schemas, source: {}", catalog, source))]
|
||||
#[snafu(display("Failed to list {}'s schemas", catalog))]
|
||||
ListSchemas {
|
||||
location: Location,
|
||||
catalog: String,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to re-compile script due to internal error, source: {}",
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to re-compile script due to internal error"))]
|
||||
CompileScriptInternal {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
#[snafu(display("Failed to open system catalog table, source: {}", source))]
|
||||
#[snafu(display("Failed to open system catalog table"))]
|
||||
OpenSystemCatalog {
|
||||
location: Location,
|
||||
source: table::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to create system catalog table, source: {}", source))]
|
||||
#[snafu(display("Failed to create system catalog table"))]
|
||||
CreateSystemCatalog {
|
||||
location: Location,
|
||||
source: table::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to create table, table info: {}, source: {}",
|
||||
table_info,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to create table, table info: {}", table_info))]
|
||||
CreateTable {
|
||||
table_info: String,
|
||||
location: Location,
|
||||
@@ -97,13 +90,13 @@ pub enum Error {
|
||||
#[snafu(display("Catalog value is not present"))]
|
||||
EmptyValue { location: Location },
|
||||
|
||||
#[snafu(display("Failed to deserialize value, source: {}", source))]
|
||||
#[snafu(display("Failed to deserialize value"))]
|
||||
ValueDeserialize {
|
||||
source: serde_json::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Table engine not found: {}, source: {}", engine_name, source))]
|
||||
#[snafu(display("Table engine not found: {}", engine_name))]
|
||||
TableEngineNotFound {
|
||||
engine_name: String,
|
||||
location: Location,
|
||||
@@ -141,14 +134,14 @@ pub enum Error {
|
||||
#[snafu(display("Operation {} not supported", op))]
|
||||
NotSupported { op: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to open table {table_id}, source: {source}, at {location}"))]
|
||||
#[snafu(display("Failed to open table {table_id}"))]
|
||||
OpenTable {
|
||||
table_id: TableId,
|
||||
location: Location,
|
||||
source: table::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to open table in parallel, source: {}", source))]
|
||||
#[snafu(display("Failed to open table in parallel"))]
|
||||
ParallelOpenTable { source: JoinError },
|
||||
|
||||
#[snafu(display("Table not found while opening table, table info: {}", table_info))]
|
||||
@@ -163,58 +156,52 @@ pub enum Error {
|
||||
source: common_recordbatch::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to create recordbatch, source: {}", source))]
|
||||
#[snafu(display("Failed to create recordbatch"))]
|
||||
CreateRecordBatch {
|
||||
location: Location,
|
||||
source: common_recordbatch::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to insert table creation record to system catalog, source: {}",
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to insert table creation record to system catalog"))]
|
||||
InsertCatalogRecord {
|
||||
location: Location,
|
||||
source: table::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to scan system catalog table, source: {}", source))]
|
||||
#[snafu(display("Failed to scan system catalog table"))]
|
||||
SystemCatalogTableScan {
|
||||
location: Location,
|
||||
source: table::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("{source}"))]
|
||||
#[snafu(display(""))]
|
||||
Internal {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to upgrade weak catalog manager reference. location: {}",
|
||||
location
|
||||
))]
|
||||
#[snafu(display("Failed to upgrade weak catalog manager reference"))]
|
||||
UpgradeWeakCatalogManagerRef { location: Location },
|
||||
|
||||
#[snafu(display("Failed to execute system catalog table scan, source: {}", source))]
|
||||
#[snafu(display("Failed to execute system catalog table scan"))]
|
||||
SystemCatalogTableScanExec {
|
||||
location: Location,
|
||||
source: common_query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Cannot parse catalog value, source: {}", source))]
|
||||
#[snafu(display("Cannot parse catalog value"))]
|
||||
InvalidCatalogValue {
|
||||
location: Location,
|
||||
source: common_catalog::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to perform metasrv operation, source: {}", source))]
|
||||
#[snafu(display("Failed to perform metasrv operation"))]
|
||||
MetaSrv {
|
||||
location: Location,
|
||||
source: meta_client::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Invalid table info in catalog, source: {}", source))]
|
||||
#[snafu(display("Invalid table info in catalog"))]
|
||||
InvalidTableInfoInCatalog {
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
@@ -223,14 +210,14 @@ pub enum Error {
|
||||
#[snafu(display("Illegal access to catalog: {} and schema: {}", catalog, schema))]
|
||||
QueryAccessDenied { catalog: String, schema: String },
|
||||
|
||||
#[snafu(display("{}: {}", msg, source))]
|
||||
#[snafu(display("msg: {}", msg))]
|
||||
Datafusion {
|
||||
msg: String,
|
||||
source: DataFusionError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Table schema mismatch, source: {}", source))]
|
||||
#[snafu(display("Table schema mismatch"))]
|
||||
TableSchemaMismatch {
|
||||
location: Location,
|
||||
source: table::error::Error,
|
||||
@@ -239,7 +226,7 @@ pub enum Error {
|
||||
#[snafu(display("A generic error has occurred, msg: {}", msg))]
|
||||
Generic { msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Table metadata manager error: {}", source))]
|
||||
#[snafu(display("Table metadata manager error"))]
|
||||
TableMetadataManager {
|
||||
source: common_meta::error::Error,
|
||||
location: Location,
|
||||
|
||||
@@ -26,30 +26,26 @@ pub enum Error {
|
||||
#[snafu(display("Illegal Flight messages, reason: {}", reason))]
|
||||
IllegalFlightMessages { reason: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to do Flight get, code: {}, source: {}", tonic_code, source))]
|
||||
#[snafu(display("Failed to do Flight get, code: {}", tonic_code))]
|
||||
FlightGet {
|
||||
addr: String,
|
||||
tonic_code: Code,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failure occurs during handling request, location: {}, source: {}",
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failure occurs during handling request"))]
|
||||
HandleRequest {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert FlightData, source: {}", source))]
|
||||
#[snafu(display("Failed to convert FlightData"))]
|
||||
ConvertFlightData {
|
||||
location: Location,
|
||||
source: common_grpc::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Column datatype error, source: {}", source))]
|
||||
#[snafu(display("Column datatype error"))]
|
||||
ColumnDataType {
|
||||
location: Location,
|
||||
source: api::error::Error,
|
||||
@@ -61,18 +57,14 @@ pub enum Error {
|
||||
#[snafu(display("Missing required field in protobuf, field: {}", field))]
|
||||
MissingField { field: String, location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to create gRPC channel, peer address: {}, source: {}",
|
||||
addr,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to create gRPC channel, peer address: {}", addr))]
|
||||
CreateChannel {
|
||||
addr: String,
|
||||
location: Location,
|
||||
source: common_grpc::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to request RegionServer, code: {}, source: {}", code, source))]
|
||||
#[snafu(display("Failed to request RegionServer, code: {}", code))]
|
||||
RegionServer { code: Code, source: BoxedError },
|
||||
|
||||
// Server error carried in Tonic Status's metadata.
|
||||
|
||||
@@ -23,55 +23,55 @@ use snafu::{Location, Snafu};
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Failed to create default catalog and schema, source: {}", source))]
|
||||
#[snafu(display("Failed to create default catalog and schema"))]
|
||||
InitMetadata {
|
||||
location: Location,
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to iter stream, source: {}", source))]
|
||||
#[snafu(display("Failed to iter stream"))]
|
||||
IterStream {
|
||||
location: Location,
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to start datanode, source: {}", source))]
|
||||
#[snafu(display("Failed to start datanode"))]
|
||||
StartDatanode {
|
||||
location: Location,
|
||||
source: datanode::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to shutdown datanode, source: {}", source))]
|
||||
#[snafu(display("Failed to shutdown datanode"))]
|
||||
ShutdownDatanode {
|
||||
location: Location,
|
||||
source: datanode::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to start frontend, source: {}", source))]
|
||||
#[snafu(display("Failed to start frontend"))]
|
||||
StartFrontend {
|
||||
location: Location,
|
||||
source: frontend::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to shutdown frontend, source: {}", source))]
|
||||
#[snafu(display("Failed to shutdown frontend"))]
|
||||
ShutdownFrontend {
|
||||
location: Location,
|
||||
source: frontend::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build meta server, source: {}", source))]
|
||||
#[snafu(display("Failed to build meta server"))]
|
||||
BuildMetaServer {
|
||||
location: Location,
|
||||
source: meta_srv::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to start meta server, source: {}", source))]
|
||||
#[snafu(display("Failed to start meta server"))]
|
||||
StartMetaServer {
|
||||
location: Location,
|
||||
source: meta_srv::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to shutdown meta server, source: {}", source))]
|
||||
#[snafu(display("Failed to shutdown meta server"))]
|
||||
ShutdownMetaServer {
|
||||
location: Location,
|
||||
source: meta_srv::error::Error,
|
||||
@@ -83,13 +83,13 @@ pub enum Error {
|
||||
#[snafu(display("Illegal config: {}", msg))]
|
||||
IllegalConfig { msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Illegal auth config: {}", source))]
|
||||
#[snafu(display("Illegal auth config"))]
|
||||
IllegalAuthConfig {
|
||||
location: Location,
|
||||
source: auth::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Unsupported selector type, {} source: {}", selector_type, source))]
|
||||
#[snafu(display("Unsupported selector type: {}", selector_type))]
|
||||
UnsupportedSelectorType {
|
||||
selector_type: String,
|
||||
location: Location,
|
||||
@@ -99,75 +99,75 @@ pub enum Error {
|
||||
#[snafu(display("Invalid REPL command: {reason}"))]
|
||||
InvalidReplCommand { reason: String },
|
||||
|
||||
#[snafu(display("Cannot create REPL: {}", source))]
|
||||
#[snafu(display("Cannot create REPL"))]
|
||||
ReplCreation {
|
||||
source: ReadlineError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Error reading command: {}", source))]
|
||||
#[snafu(display("Error reading command"))]
|
||||
Readline {
|
||||
source: ReadlineError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to request database, sql: {sql}, source: {source}"))]
|
||||
#[snafu(display("Failed to request database, sql: {sql}"))]
|
||||
RequestDatabase {
|
||||
sql: String,
|
||||
location: Location,
|
||||
source: client::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to collect RecordBatches, source: {source}"))]
|
||||
#[snafu(display("Failed to collect RecordBatches"))]
|
||||
CollectRecordBatches {
|
||||
location: Location,
|
||||
source: common_recordbatch::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to pretty print Recordbatches, source: {source}"))]
|
||||
#[snafu(display("Failed to pretty print Recordbatches"))]
|
||||
PrettyPrintRecordBatches {
|
||||
location: Location,
|
||||
source: common_recordbatch::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to start Meta client, source: {}", source))]
|
||||
#[snafu(display("Failed to start Meta client"))]
|
||||
StartMetaClient {
|
||||
location: Location,
|
||||
source: meta_client::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse SQL: {}, source: {}", sql, source))]
|
||||
#[snafu(display("Failed to parse SQL: {}", sql))]
|
||||
ParseSql {
|
||||
sql: String,
|
||||
location: Location,
|
||||
source: query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to plan statement, source: {}", source))]
|
||||
#[snafu(display("Failed to plan statement"))]
|
||||
PlanStatement {
|
||||
location: Location,
|
||||
source: query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to encode logical plan in substrait, source: {}", source))]
|
||||
#[snafu(display("Failed to encode logical plan in substrait"))]
|
||||
SubstraitEncodeLogicalPlan {
|
||||
location: Location,
|
||||
source: substrait::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to load layered config, source: {}", source))]
|
||||
#[snafu(display("Failed to load layered config"))]
|
||||
LoadLayeredConfig {
|
||||
source: ConfigError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to start catalog manager, source: {}", source))]
|
||||
#[snafu(display("Failed to start catalog manager"))]
|
||||
StartCatalogManager {
|
||||
location: Location,
|
||||
source: catalog::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to connect to Etcd at {etcd_addr}, source: {}", source))]
|
||||
#[snafu(display("Failed to connect to Etcd at {etcd_addr}"))]
|
||||
ConnectEtcd {
|
||||
etcd_addr: String,
|
||||
source: etcd_client::Error,
|
||||
|
||||
@@ -37,7 +37,7 @@ pub enum Error {
|
||||
#[snafu(display("Buffer underflow"))]
|
||||
Underflow { location: Location },
|
||||
|
||||
#[snafu(display("IO operation reach EOF, source: {}", source))]
|
||||
#[snafu(display("IO operation reach EOF"))]
|
||||
Eof {
|
||||
source: std::io::Error,
|
||||
location: Location,
|
||||
|
||||
@@ -42,82 +42,82 @@ pub enum Error {
|
||||
#[snafu(display("empty host: {}", url))]
|
||||
EmptyHostPath { url: String, location: Location },
|
||||
|
||||
#[snafu(display("Invalid url: {}, error :{}", url, source))]
|
||||
#[snafu(display("Invalid url: {}", url))]
|
||||
InvalidUrl {
|
||||
url: String,
|
||||
source: ParseError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build backend, source: {}", source))]
|
||||
#[snafu(display("Failed to build backend"))]
|
||||
BuildBackend {
|
||||
source: object_store::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build orc reader, source: {}", source))]
|
||||
#[snafu(display("Failed to build orc reader"))]
|
||||
OrcReader {
|
||||
location: Location,
|
||||
source: orc_rust::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to read object from path: {}, source: {}", path, source))]
|
||||
#[snafu(display("Failed to read object from path: {}", path))]
|
||||
ReadObject {
|
||||
path: String,
|
||||
location: Location,
|
||||
source: object_store::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to write object to path: {}, source: {}", path, source))]
|
||||
#[snafu(display("Failed to write object to path: {}", path))]
|
||||
WriteObject {
|
||||
path: String,
|
||||
location: Location,
|
||||
source: object_store::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to write: {}", source))]
|
||||
#[snafu(display("Failed to write"))]
|
||||
AsyncWrite {
|
||||
source: std::io::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to write record batch: {}", source))]
|
||||
#[snafu(display("Failed to write record batch"))]
|
||||
WriteRecordBatch {
|
||||
location: Location,
|
||||
source: ArrowError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to encode record batch: {}", source))]
|
||||
#[snafu(display("Failed to encode record batch"))]
|
||||
EncodeRecordBatch {
|
||||
location: Location,
|
||||
source: ParquetError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to read record batch: {}", source))]
|
||||
#[snafu(display("Failed to read record batch"))]
|
||||
ReadRecordBatch {
|
||||
location: Location,
|
||||
source: datafusion::error::DataFusionError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to read parquet source: {}", source))]
|
||||
#[snafu(display("Failed to read parquet"))]
|
||||
ReadParquetSnafu {
|
||||
location: Location,
|
||||
source: datafusion::parquet::errors::ParquetError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert parquet to schema: {}", source))]
|
||||
#[snafu(display("Failed to convert parquet to schema"))]
|
||||
ParquetToSchema {
|
||||
location: Location,
|
||||
source: datafusion::parquet::errors::ParquetError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to infer schema from file, source: {}", source))]
|
||||
#[snafu(display("Failed to infer schema from file"))]
|
||||
InferSchema {
|
||||
location: Location,
|
||||
source: arrow_schema::ArrowError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to list object in path: {}, source: {}", path, source))]
|
||||
#[snafu(display("Failed to list object in path: {}", path))]
|
||||
ListObjects {
|
||||
path: String,
|
||||
location: Location,
|
||||
@@ -127,7 +127,7 @@ pub enum Error {
|
||||
#[snafu(display("Invalid connection: {}", msg))]
|
||||
InvalidConnection { msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to join handle: {}", source))]
|
||||
#[snafu(display("Failed to join handle"))]
|
||||
JoinHandle {
|
||||
location: Location,
|
||||
source: tokio::task::JoinError,
|
||||
@@ -140,7 +140,7 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to merge schema: {}", source))]
|
||||
#[snafu(display("Failed to merge schema"))]
|
||||
MergeSchema {
|
||||
source: arrow_schema::ArrowError,
|
||||
location: Location,
|
||||
|
||||
@@ -24,7 +24,7 @@ pub enum Error {
|
||||
#[snafu(display("Illegal delete request, reason: {reason}"))]
|
||||
IllegalDeleteRequest { reason: String, location: Location },
|
||||
|
||||
#[snafu(display("Column datatype error, source: {}", source))]
|
||||
#[snafu(display("Column datatype error"))]
|
||||
ColumnDataType {
|
||||
location: Location,
|
||||
source: api::error::Error,
|
||||
@@ -49,7 +49,7 @@ pub enum Error {
|
||||
|
||||
#[snafu(display("Invalid column proto: {}", err_msg))]
|
||||
InvalidColumnProto { err_msg: String, location: Location },
|
||||
#[snafu(display("Failed to create vector, source: {}", source))]
|
||||
#[snafu(display("Failed to create vector"))]
|
||||
CreateVector {
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
@@ -58,11 +58,7 @@ pub enum Error {
|
||||
#[snafu(display("Missing required field in protobuf, field: {}", field))]
|
||||
MissingField { field: String, location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Invalid column proto definition, column: {}, source: {}",
|
||||
column,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Invalid column proto definition, column: {}", column))]
|
||||
InvalidColumnDef {
|
||||
column: String,
|
||||
location: Location,
|
||||
|
||||
@@ -27,7 +27,7 @@ pub enum Error {
|
||||
#[snafu(display("Invalid client tls config, {}", msg))]
|
||||
InvalidTlsConfig { msg: String },
|
||||
|
||||
#[snafu(display("Invalid config file path, {}", source))]
|
||||
#[snafu(display("Invalid config file path"))]
|
||||
InvalidConfigFilePath {
|
||||
source: io::Error,
|
||||
location: Location,
|
||||
@@ -46,13 +46,13 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to create gRPC channel, source: {}", source))]
|
||||
#[snafu(display("Failed to create gRPC channel"))]
|
||||
CreateChannel {
|
||||
source: tonic::transport::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to create RecordBatch, source: {}", source))]
|
||||
#[snafu(display("Failed to create RecordBatch"))]
|
||||
CreateRecordBatch {
|
||||
location: Location,
|
||||
source: common_recordbatch::error::Error,
|
||||
@@ -61,7 +61,7 @@ pub enum Error {
|
||||
#[snafu(display("Failed to convert Arrow type: {}", from))]
|
||||
Conversion { from: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to decode FlightData, source: {}", source))]
|
||||
#[snafu(display("Failed to decode FlightData"))]
|
||||
DecodeFlightData {
|
||||
source: api::DecodeError,
|
||||
location: Location,
|
||||
@@ -70,7 +70,7 @@ pub enum Error {
|
||||
#[snafu(display("Invalid FlightData, reason: {}", reason))]
|
||||
InvalidFlightData { reason: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to convert Arrow Schema, source: {}", source))]
|
||||
#[snafu(display("Failed to convert Arrow Schema"))]
|
||||
ConvertArrowSchema {
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
|
||||
@@ -23,7 +23,7 @@ pub type Result<T> = std::result::Result<T, Error>;
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("{source}"))]
|
||||
#[snafu(display(""))]
|
||||
Internal { source: BoxedError },
|
||||
|
||||
#[snafu(display("Memory profiling is not supported"))]
|
||||
|
||||
@@ -22,7 +22,7 @@ use snafu::{Location, Snafu};
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Failed to read OPT_PROF, source: {}", source))]
|
||||
#[snafu(display("Failed to read OPT_PROF"))]
|
||||
ReadOptProf { source: tikv_jemalloc_ctl::Error },
|
||||
|
||||
#[snafu(display("Memory profiling is not enabled"))]
|
||||
@@ -31,17 +31,13 @@ pub enum Error {
|
||||
#[snafu(display("Failed to build temp file from given path: {:?}", path))]
|
||||
BuildTempPath { path: PathBuf, location: Location },
|
||||
|
||||
#[snafu(display("Failed to open temp file: {}, source: {}", path, source))]
|
||||
#[snafu(display("Failed to open temp file: {}", path))]
|
||||
OpenTempFile {
|
||||
path: String,
|
||||
source: std::io::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to dump profiling data to temp file: {:?}, source: {}",
|
||||
path,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to dump profiling data to temp file: {:?}", path))]
|
||||
DumpProfileData {
|
||||
path: PathBuf,
|
||||
source: tikv_jemalloc_ctl::Error,
|
||||
|
||||
@@ -46,56 +46,48 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to register procedure loader, type name: {}, source: {}",
|
||||
type_name,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to register procedure loader, type name: {}", type_name))]
|
||||
RegisterProcedureLoader {
|
||||
type_name: String,
|
||||
location: Location,
|
||||
source: common_procedure::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to submit procedure, source: {source}"))]
|
||||
#[snafu(display("Failed to submit procedure"))]
|
||||
SubmitProcedure {
|
||||
location: Location,
|
||||
source: common_procedure::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Unsupported operation {}, location: {}", operation, location))]
|
||||
#[snafu(display("Unsupported operation {}", operation))]
|
||||
Unsupported {
|
||||
operation: String,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to wait procedure done, source: {source}"))]
|
||||
#[snafu(display("Failed to wait procedure done"))]
|
||||
WaitProcedure {
|
||||
location: Location,
|
||||
source: common_procedure::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert RawTableInfo into TableInfo: {}", source))]
|
||||
#[snafu(display("Failed to convert RawTableInfo into TableInfo"))]
|
||||
ConvertRawTableInfo {
|
||||
location: Location,
|
||||
source: datatypes::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Primary key '{key}' not found when creating region request, at {location}"))]
|
||||
#[snafu(display("Primary key '{key}' not found when creating region request"))]
|
||||
PrimaryKeyNotFound { key: String, location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to build table meta for table: {}, source: {}",
|
||||
table_name,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to build table meta for table: {}", table_name))]
|
||||
BuildTableMeta {
|
||||
table_name: String,
|
||||
source: table::metadata::TableMetaBuilderError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Table occurs error, source: {}", source))]
|
||||
#[snafu(display("Table occurs error"))]
|
||||
Table {
|
||||
location: Location,
|
||||
source: table::error::Error,
|
||||
@@ -107,19 +99,19 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to decode protobuf, source: {}", source))]
|
||||
#[snafu(display("Failed to decode protobuf"))]
|
||||
DecodeProto {
|
||||
location: Location,
|
||||
source: prost::DecodeError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to encode object into json, source: {}", source))]
|
||||
#[snafu(display("Failed to encode object into json"))]
|
||||
EncodeJson {
|
||||
location: Location,
|
||||
source: JsonError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to decode object from json, source: {}", source))]
|
||||
#[snafu(display("Failed to decode object from json"))]
|
||||
DecodeJson {
|
||||
location: Location,
|
||||
source: JsonError,
|
||||
@@ -131,7 +123,7 @@ pub enum Error {
|
||||
#[snafu(display("Failed to send message: {err_msg}"))]
|
||||
SendMessage { err_msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to serde json, source: {}", source))]
|
||||
#[snafu(display("Failed to serde json"))]
|
||||
SerdeJson {
|
||||
source: serde_json::error::Error,
|
||||
location: Location,
|
||||
@@ -154,13 +146,13 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert alter table request, source: {source}, at {location}"))]
|
||||
#[snafu(display("Failed to convert alter table request"))]
|
||||
ConvertAlterTableRequest {
|
||||
source: common_grpc_expr::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Invalid protobuf message: {err_msg}, at {location}"))]
|
||||
#[snafu(display("Invalid protobuf message: {err_msg}"))]
|
||||
InvalidProtoMsg { err_msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Unexpected: {err_msg}"))]
|
||||
@@ -182,7 +174,7 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert raw key to str, source: {}", source))]
|
||||
#[snafu(display("Failed to convert raw key to str"))]
|
||||
ConvertRawKey {
|
||||
location: Location,
|
||||
source: Utf8Error,
|
||||
@@ -222,29 +214,29 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Invalid catalog value, source: {}", source))]
|
||||
#[snafu(display("Invalid catalog value"))]
|
||||
InvalidCatalogValue {
|
||||
source: common_catalog::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("{}", source))]
|
||||
#[snafu(display("External error"))]
|
||||
External {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Invalid heartbeat response, location: {}", location))]
|
||||
#[snafu(display("Invalid heartbeat response"))]
|
||||
InvalidHeartbeatResponse { location: Location },
|
||||
|
||||
#[snafu(display("Failed to operate on datanode: {}, source: {}", peer, source))]
|
||||
#[snafu(display("Failed to operate on datanode: {}", peer))]
|
||||
OperateDatanode {
|
||||
location: Location,
|
||||
peer: Peer,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Retry later, source: {}", source))]
|
||||
#[snafu(display("Retry later"))]
|
||||
RetryLater { source: BoxedError },
|
||||
}
|
||||
|
||||
|
||||
@@ -26,16 +26,13 @@ use crate::procedure::ProcedureId;
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display(
|
||||
"Failed to execute procedure due to external error, source: {}",
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to execute procedure due to external error"))]
|
||||
External { source: BoxedError },
|
||||
|
||||
#[snafu(display("Loader {} is already registered", name))]
|
||||
LoaderConflict { name: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to serialize to json, source: {}", source))]
|
||||
#[snafu(display("Failed to serialize to json"))]
|
||||
ToJson {
|
||||
source: serde_json::Error,
|
||||
location: Location,
|
||||
@@ -47,83 +44,79 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to put state, key: '{key}', source: {source}"))]
|
||||
#[snafu(display("Failed to put state, key: '{key}'"))]
|
||||
PutState {
|
||||
key: String,
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to delete {}, source: {}", key, source))]
|
||||
#[snafu(display("Failed to delete {}", key))]
|
||||
DeleteState {
|
||||
key: String,
|
||||
source: object_store::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to delete keys: '{keys}', source: {source}"))]
|
||||
#[snafu(display("Failed to delete keys: '{keys}'"))]
|
||||
DeleteStates {
|
||||
keys: String,
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to list state, path: '{path}', source: {source}"))]
|
||||
#[snafu(display("Failed to list state, path: '{path}'"))]
|
||||
ListState {
|
||||
path: String,
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to deserialize from json, source: {}", source))]
|
||||
#[snafu(display("Failed to deserialize from json"))]
|
||||
FromJson {
|
||||
source: serde_json::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Procedure exec failed, source: {}", source))]
|
||||
#[snafu(display("Procedure exec failed"))]
|
||||
RetryLater { source: BoxedError },
|
||||
|
||||
#[snafu(display("Procedure panics, procedure_id: {}", procedure_id))]
|
||||
ProcedurePanic { procedure_id: ProcedureId },
|
||||
|
||||
#[snafu(display("Failed to wait watcher, source: {}", source))]
|
||||
#[snafu(display("Failed to wait watcher"))]
|
||||
WaitWatcher {
|
||||
source: tokio::sync::watch::error::RecvError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to execute procedure, source: {}", source))]
|
||||
#[snafu(display("Failed to execute procedure"))]
|
||||
ProcedureExec {
|
||||
source: Arc<Error>,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Procedure retry exceeded max times, procedure_id: {}, source:{}",
|
||||
procedure_id,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Procedure retry exceeded max times, procedure_id: {}", procedure_id))]
|
||||
RetryTimesExceeded {
|
||||
source: Arc<Error>,
|
||||
procedure_id: ProcedureId,
|
||||
},
|
||||
|
||||
#[snafu(display("Corrupted data, error: {source}"))]
|
||||
#[snafu(display("Corrupted data, error: "))]
|
||||
CorruptedData { source: FromUtf8Error },
|
||||
|
||||
#[snafu(display("Failed to start the remove_outdated_meta method, error: {}", source))]
|
||||
#[snafu(display("Failed to start the remove_outdated_meta method, error"))]
|
||||
StartRemoveOutdatedMetaTask {
|
||||
source: common_runtime::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to stop the remove_outdated_meta method, error: {}", source))]
|
||||
#[snafu(display("Failed to stop the remove_outdated_meta method, error"))]
|
||||
StopRemoveOutdatedMetaTask {
|
||||
source: common_runtime::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Subprocedure {} failed, source: {}", subprocedure_id, source))]
|
||||
#[snafu(display("Subprocedure {} failed", subprocedure_id))]
|
||||
SubprocedureFailed {
|
||||
subprocedure_id: ProcedureId,
|
||||
source: Arc<Error>,
|
||||
|
||||
@@ -460,6 +460,7 @@ mod tests {
|
||||
use futures_util::future::BoxFuture;
|
||||
use futures_util::FutureExt;
|
||||
use object_store::ObjectStore;
|
||||
use snafu::ErrorCompat;
|
||||
|
||||
use super::*;
|
||||
use crate::local::test_util;
|
||||
@@ -942,7 +943,14 @@ mod tests {
|
||||
|
||||
// Run the runner and execute the procedure.
|
||||
runner.run().await;
|
||||
let err = meta.state().error().unwrap().to_string();
|
||||
let err = meta
|
||||
.state()
|
||||
.error()
|
||||
.unwrap()
|
||||
.iter_chain()
|
||||
.last()
|
||||
.unwrap()
|
||||
.to_string();
|
||||
assert!(err.contains("subprocedure failed"), "{err}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,23 +29,20 @@ use statrs::StatsError;
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Fail to execute Python UDF, source: {}", msg))]
|
||||
#[snafu(display("Failed to execute Python UDF: {}", msg))]
|
||||
PyUdf {
|
||||
// TODO(discord9): find a way that prevent circle depend(query<-script<-query) and can use script's error type
|
||||
msg: String,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Fail to create temporary recordbatch when eval Python UDF, source: {}",
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to create temporary recordbatch when eval Python UDF"))]
|
||||
UdfTempRecordBatch {
|
||||
location: Location,
|
||||
source: RecordbatchError,
|
||||
},
|
||||
|
||||
#[snafu(display("Fail to execute function, source: {}", source))]
|
||||
#[snafu(display("Failed to execute function"))]
|
||||
ExecuteFunction {
|
||||
source: DataFusionError,
|
||||
location: Location,
|
||||
@@ -58,25 +55,25 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Fail to generate function, source: {}", source))]
|
||||
#[snafu(display("Failed to generate function"))]
|
||||
GenerateFunction {
|
||||
source: StatsError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Fail to cast scalar value into vector: {}", source))]
|
||||
#[snafu(display("Failed to cast scalar value into vector"))]
|
||||
FromScalarValue {
|
||||
location: Location,
|
||||
source: DataTypeError,
|
||||
},
|
||||
|
||||
#[snafu(display("Fail to cast arrow array into vector: {}", source))]
|
||||
#[snafu(display("Failed to cast arrow array into vector"))]
|
||||
FromArrowArray {
|
||||
location: Location,
|
||||
source: DataTypeError,
|
||||
},
|
||||
|
||||
#[snafu(display("Fail to cast arrow array into vector: {:?}, {}", data_type, source))]
|
||||
#[snafu(display("Failed to cast arrow array into vector: {:?}", data_type))]
|
||||
IntoVector {
|
||||
location: Location,
|
||||
source: DataTypeError,
|
||||
@@ -110,56 +107,50 @@ pub enum Error {
|
||||
#[snafu(display("Not expected to run ExecutionPlan more than once"))]
|
||||
ExecuteRepeatedly { location: Location },
|
||||
|
||||
#[snafu(display("General DataFusion error, source: {}", source))]
|
||||
#[snafu(display("General DataFusion error"))]
|
||||
GeneralDataFusion {
|
||||
source: DataFusionError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to convert DataFusion's recordbatch stream, source: {}",
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to convert DataFusion's recordbatch stream"))]
|
||||
ConvertDfRecordBatchStream {
|
||||
location: Location,
|
||||
source: common_recordbatch::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert arrow schema, source: {}", source))]
|
||||
#[snafu(display("Failed to convert arrow schema"))]
|
||||
ConvertArrowSchema {
|
||||
location: Location,
|
||||
source: DataTypeError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to execute physical plan, source: {}", source))]
|
||||
#[snafu(display("Failed to execute physical plan"))]
|
||||
ExecutePhysicalPlan {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to cast array to {:?}, source: {}", typ, source))]
|
||||
#[snafu(display("Failed to cast array to {:?}", typ))]
|
||||
TypeCast {
|
||||
source: ArrowError,
|
||||
typ: arrow::datatypes::DataType,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to perform compute operation on arrow arrays, source: {}",
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to perform compute operation on arrow arrays"))]
|
||||
ArrowCompute {
|
||||
source: ArrowError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Query engine fail to cast value: {}", source))]
|
||||
#[snafu(display("Query engine fail to cast value"))]
|
||||
ToScalarValue {
|
||||
location: Location,
|
||||
source: DataTypeError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to get scalar vector, {}", source))]
|
||||
#[snafu(display("Failed to get scalar vector"))]
|
||||
GetScalarVector {
|
||||
location: Location,
|
||||
source: DataTypeError,
|
||||
|
||||
@@ -25,19 +25,19 @@ pub type Result<T> = std::result::Result<T, Error>;
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Fail to create datafusion record batch, source: {}", source))]
|
||||
#[snafu(display("Fail to create datafusion record batch"))]
|
||||
NewDfRecordBatch {
|
||||
source: datatypes::arrow::error::ArrowError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Data types error, source: {}", source))]
|
||||
#[snafu(display("Data types error"))]
|
||||
DataTypes {
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("External error, location: {}, source: {}", location, source))]
|
||||
#[snafu(display("External error"))]
|
||||
External {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
@@ -46,35 +46,34 @@ pub enum Error {
|
||||
#[snafu(display("Failed to create RecordBatches, reason: {}", reason))]
|
||||
CreateRecordBatches { reason: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to convert Arrow schema, source: {}", source))]
|
||||
#[snafu(display("Failed to convert Arrow schema"))]
|
||||
SchemaConversion {
|
||||
source: datatypes::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to poll stream, source: {}", source))]
|
||||
#[snafu(display("Failed to poll stream"))]
|
||||
PollStream {
|
||||
source: datafusion::error::DataFusionError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Fail to format record batch, source: {}", source))]
|
||||
#[snafu(display("Fail to format record batch"))]
|
||||
Format {
|
||||
source: datatypes::arrow::error::ArrowError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to init Recordbatch stream, source: {}", source))]
|
||||
#[snafu(display("Failed to init Recordbatch stream"))]
|
||||
InitRecordbatchStream {
|
||||
source: datafusion_common::DataFusionError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to project Arrow RecordBatch with schema {:?} and projection {:?}, source: {}",
|
||||
"Failed to project Arrow RecordBatch with schema {:?} and projection {:?}",
|
||||
schema,
|
||||
projection,
|
||||
source
|
||||
))]
|
||||
ProjectArrowRecordBatch {
|
||||
source: datatypes::arrow::error::ArrowError,
|
||||
@@ -91,10 +90,9 @@ pub enum Error {
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to cast vector of type '{:?}' to type '{:?}', source: {}",
|
||||
"Failed to cast vector of type '{:?}' to type '{:?}'",
|
||||
from_type,
|
||||
to_type,
|
||||
source
|
||||
))]
|
||||
CastVector {
|
||||
from_type: ConcreteDataType,
|
||||
|
||||
@@ -23,7 +23,7 @@ pub type Result<T> = std::result::Result<T, Error>;
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub(crate)))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Failed to build runtime, source: {}", source))]
|
||||
#[snafu(display("Failed to build runtime"))]
|
||||
BuildRuntime {
|
||||
source: std::io::Error,
|
||||
location: Location,
|
||||
@@ -32,11 +32,7 @@ pub enum Error {
|
||||
#[snafu(display("Repeated task {} is already started", name))]
|
||||
IllegalState { name: String, location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to wait for repeated task {} to stop, source: {}",
|
||||
name,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to wait for repeated task {} to stop", name))]
|
||||
WaitGcTaskStop {
|
||||
name: String,
|
||||
source: JoinError,
|
||||
|
||||
@@ -39,13 +39,13 @@ pub enum Error {
|
||||
#[snafu(display("Unsupported substrait type: {}", ty))]
|
||||
UnsupportedSubstraitType { ty: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to decode substrait relation, source: {}", source))]
|
||||
#[snafu(display("Failed to decode substrait relation"))]
|
||||
DecodeRel {
|
||||
source: DecodeError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to encode substrait relation, source: {}", source))]
|
||||
#[snafu(display("Failed to encode substrait relation"))]
|
||||
EncodeRel {
|
||||
source: EncodeError,
|
||||
location: Location,
|
||||
@@ -67,13 +67,13 @@ pub enum Error {
|
||||
#[snafu(display("Invalid parameters: {}", reason))]
|
||||
InvalidParameters { reason: String, location: Location },
|
||||
|
||||
#[snafu(display("Internal error from DataFusion: {}", source))]
|
||||
#[snafu(display("Internal error from DataFusion"))]
|
||||
DFInternal {
|
||||
source: DataFusionError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Internal error: {}", source))]
|
||||
#[snafu(display("Internal error"))]
|
||||
Internal {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
@@ -95,26 +95,26 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert DataFusion schema, source: {}", source))]
|
||||
#[snafu(display("Failed to convert DataFusion schema"))]
|
||||
ConvertDfSchema {
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Unable to resolve table: {table_name}, error: {source}"))]
|
||||
#[snafu(display("Unable to resolve table: {table_name}, error: "))]
|
||||
ResolveTable {
|
||||
table_name: String,
|
||||
location: Location,
|
||||
source: catalog::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to encode DataFusion plan, source: {}", source))]
|
||||
#[snafu(display("Failed to encode DataFusion plan"))]
|
||||
EncodeDfPlan {
|
||||
source: datafusion::error::DataFusionError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to decode DataFusion plan, source: {}", source))]
|
||||
#[snafu(display("Failed to decode DataFusion plan"))]
|
||||
DecodeDfPlan {
|
||||
source: datafusion::error::DataFusionError,
|
||||
location: Location,
|
||||
|
||||
@@ -23,7 +23,7 @@ use snafu::{Location, Snafu};
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Failed to parse string to date, raw: {}, source: {}", raw, source))]
|
||||
#[snafu(display("Failed to parse string to date, raw: {}", raw))]
|
||||
ParseDateStr { raw: String, source: ParseError },
|
||||
|
||||
#[snafu(display("Invalid date string, raw: {}", raw))]
|
||||
@@ -35,7 +35,7 @@ pub enum Error {
|
||||
#[snafu(display("Failed to parse a string into Interval, raw string: {}", raw))]
|
||||
ParseInterval { raw: String, location: Location },
|
||||
|
||||
#[snafu(display("Current timestamp overflow, source: {}", source))]
|
||||
#[snafu(display("Current timestamp overflow"))]
|
||||
TimestampOverflow {
|
||||
source: TryFromIntError,
|
||||
location: Location,
|
||||
@@ -51,7 +51,7 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Invalid offset string {raw}: {source}"))]
|
||||
#[snafu(display("Invalid offset string {raw}: "))]
|
||||
ParseOffsetStr {
|
||||
raw: String,
|
||||
source: ParseIntError,
|
||||
|
||||
@@ -27,43 +27,43 @@ use table::error::Error as TableError;
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Failed to handle heartbeat response, source: {}", source))]
|
||||
#[snafu(display("Failed to handle heartbeat response"))]
|
||||
HandleHeartbeatResponse {
|
||||
location: Location,
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to get info from meta server, source: {}", source))]
|
||||
#[snafu(display("Failed to get info from meta server"))]
|
||||
GetMetadata {
|
||||
location: Location,
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to execute sql, source: {}", source))]
|
||||
#[snafu(display("Failed to execute sql"))]
|
||||
ExecuteSql {
|
||||
location: Location,
|
||||
source: query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to plan statement, source: {}", source))]
|
||||
#[snafu(display("Failed to plan statement"))]
|
||||
PlanStatement {
|
||||
location: Location,
|
||||
source: query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to execute statement, source: {}", source))]
|
||||
#[snafu(display("Failed to execute statement"))]
|
||||
ExecuteStatement {
|
||||
location: Location,
|
||||
source: query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to execute logical plan, source: {}", source))]
|
||||
#[snafu(display("Failed to execute logical plan"))]
|
||||
ExecuteLogicalPlan {
|
||||
location: Location,
|
||||
source: query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to decode logical plan, source: {}", source))]
|
||||
#[snafu(display("Failed to decode logical plan"))]
|
||||
DecodeLogicalPlan {
|
||||
location: Location,
|
||||
source: substrait::error::Error,
|
||||
@@ -78,32 +78,28 @@ pub enum Error {
|
||||
#[snafu(display("Schema not found: {}", name))]
|
||||
SchemaNotFound { name: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to create table: {}, source: {}", table_name, source))]
|
||||
#[snafu(display("Failed to create table: {}", table_name))]
|
||||
CreateTable {
|
||||
table_name: String,
|
||||
location: Location,
|
||||
source: TableError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to drop table {}, source: {}", table_name, source))]
|
||||
#[snafu(display("Failed to drop table {}", table_name))]
|
||||
DropTable {
|
||||
table_name: String,
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Table engine not found: {}, source: {}", engine_name, source))]
|
||||
#[snafu(display("Table engine not found: {}", engine_name))]
|
||||
TableEngineNotFound {
|
||||
engine_name: String,
|
||||
location: Location,
|
||||
source: table::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Table engine procedure not found: {}, source: {}",
|
||||
engine_name,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Table engine procedure not found: {}", engine_name))]
|
||||
EngineProcedureNotFound {
|
||||
engine_name: String,
|
||||
location: Location,
|
||||
@@ -132,74 +128,70 @@ pub enum Error {
|
||||
))]
|
||||
ColumnValuesNumberMismatch { columns: usize, values: usize },
|
||||
|
||||
#[snafu(display("Missing insert body, source: {source}"))]
|
||||
#[snafu(display("Missing insert body"))]
|
||||
MissingInsertBody {
|
||||
source: sql::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to insert value to table: {}, source: {}", table_name, source))]
|
||||
#[snafu(display("Failed to insert value to table: {}", table_name))]
|
||||
Insert {
|
||||
table_name: String,
|
||||
location: Location,
|
||||
source: TableError,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to delete value from table: {}, source: {}",
|
||||
table_name,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to delete value from table: {}", table_name))]
|
||||
Delete {
|
||||
table_name: String,
|
||||
location: Location,
|
||||
source: TableError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to flush table: {}, source: {}", table_name, source))]
|
||||
#[snafu(display("Failed to flush table: {}", table_name))]
|
||||
FlushTable {
|
||||
table_name: String,
|
||||
location: Location,
|
||||
source: TableError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to start server, source: {}", source))]
|
||||
#[snafu(display("Failed to start server"))]
|
||||
StartServer {
|
||||
location: Location,
|
||||
source: servers::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to wait for GRPC serving, source: {}", source))]
|
||||
#[snafu(display("Failed to wait for GRPC serving"))]
|
||||
WaitForGrpcServing {
|
||||
source: servers::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse address {}, source: {}", addr, source))]
|
||||
#[snafu(display("Failed to parse address {}", addr))]
|
||||
ParseAddr {
|
||||
addr: String,
|
||||
source: std::net::AddrParseError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to create directory {}, source: {}", dir, source))]
|
||||
#[snafu(display("Failed to create directory {}", dir))]
|
||||
CreateDir { dir: String, source: std::io::Error },
|
||||
|
||||
#[snafu(display("Failed to remove directory {}, source: {}", dir, source))]
|
||||
#[snafu(display("Failed to remove directory {}", dir))]
|
||||
RemoveDir { dir: String, source: std::io::Error },
|
||||
|
||||
#[snafu(display("Failed to open log store, source: {}", source))]
|
||||
#[snafu(display("Failed to open log store"))]
|
||||
OpenLogStore {
|
||||
location: Location,
|
||||
source: Box<log_store::error::Error>,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to init backend, source: {}", source))]
|
||||
#[snafu(display("Failed to init backend"))]
|
||||
InitBackend {
|
||||
source: object_store::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Runtime resource error, source: {}", source))]
|
||||
#[snafu(display("Runtime resource error"))]
|
||||
RuntimeResource {
|
||||
location: Location,
|
||||
source: common_runtime::error::Error,
|
||||
@@ -208,7 +200,7 @@ pub enum Error {
|
||||
#[snafu(display("Expect KvBackend but not found"))]
|
||||
MissingKvBackend { location: Location },
|
||||
|
||||
#[snafu(display("Expect MetaClient but not found, location: {}", location))]
|
||||
#[snafu(display("Expect MetaClient but not found"))]
|
||||
MissingMetaClient { location: Location },
|
||||
|
||||
#[snafu(display("Invalid SQL, error: {}", msg))]
|
||||
@@ -232,7 +224,7 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to register a new schema, source: {}", source))]
|
||||
#[snafu(display("Failed to register a new schema"))]
|
||||
RegisterSchema {
|
||||
location: Location,
|
||||
source: catalog::error::Error,
|
||||
@@ -241,37 +233,37 @@ pub enum Error {
|
||||
#[snafu(display("Schema {} already exists", name))]
|
||||
SchemaExists { name: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to convert delete expr to request: {}", source))]
|
||||
#[snafu(display("Failed to convert delete expr to request"))]
|
||||
DeleteExprToRequest {
|
||||
location: Location,
|
||||
source: common_grpc_expr::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse SQL, source: {}", source))]
|
||||
#[snafu(display("Failed to parse SQL"))]
|
||||
ParseSql {
|
||||
location: Location,
|
||||
source: sql::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to prepare immutable table: {}", source))]
|
||||
#[snafu(display("Failed to prepare immutable table"))]
|
||||
PrepareImmutableTable {
|
||||
location: Location,
|
||||
source: query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to access catalog, source: {}", source))]
|
||||
#[snafu(display("Failed to access catalog"))]
|
||||
Catalog {
|
||||
location: Location,
|
||||
source: catalog::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to initialize meta client, source: {}", source))]
|
||||
#[snafu(display("Failed to initialize meta client"))]
|
||||
MetaClientInit {
|
||||
location: Location,
|
||||
source: meta_client::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to insert data, source: {}", source))]
|
||||
#[snafu(display("Failed to insert data"))]
|
||||
InsertData {
|
||||
location: Location,
|
||||
source: common_grpc_expr::error::Error,
|
||||
@@ -282,16 +274,16 @@ pub enum Error {
|
||||
))]
|
||||
TableIdProviderNotFound { location: Location },
|
||||
|
||||
#[snafu(display("Failed to bump table id, source: {}", source))]
|
||||
#[snafu(display("Failed to bump table id"))]
|
||||
BumpTableId {
|
||||
location: Location,
|
||||
source: table::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Missing node id in Datanode config, location: {}", location))]
|
||||
#[snafu(display("Missing node id in Datanode config"))]
|
||||
MissingNodeId { location: Location },
|
||||
|
||||
#[snafu(display("Missing node id option in distributed mode, location: {}", location))]
|
||||
#[snafu(display("Missing node id option in distributed mode"))]
|
||||
MissingMetasrvOpts { location: Location },
|
||||
|
||||
#[snafu(display("Missing required field: {}", name))]
|
||||
@@ -300,11 +292,7 @@ pub enum Error {
|
||||
#[snafu(display("Cannot find requested database: {}-{}", catalog, schema))]
|
||||
DatabaseNotFound { catalog: String, schema: String },
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to build default value, column: {}, source: {}",
|
||||
column,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to build default value, column: {}", column))]
|
||||
ColumnDefaultValue {
|
||||
column: String,
|
||||
location: Location,
|
||||
@@ -317,39 +305,39 @@ pub enum Error {
|
||||
))]
|
||||
ColumnNoneDefaultValue { column: String, location: Location },
|
||||
|
||||
#[snafu(display("Unrecognized table option: {}", source))]
|
||||
#[snafu(display("Unrecognized table option"))]
|
||||
UnrecognizedTableOption {
|
||||
location: Location,
|
||||
source: table::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to submit procedure {}, source: {}", procedure_id, source))]
|
||||
#[snafu(display("Failed to submit procedure {}", procedure_id))]
|
||||
SubmitProcedure {
|
||||
procedure_id: ProcedureId,
|
||||
location: Location,
|
||||
source: common_procedure::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to wait procedure {} done, source: {}", procedure_id, source))]
|
||||
#[snafu(display("Failed to wait procedure {} done", procedure_id))]
|
||||
WaitProcedure {
|
||||
procedure_id: ProcedureId,
|
||||
location: Location,
|
||||
source: common_procedure::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to shutdown server, source: {}", source))]
|
||||
#[snafu(display("Failed to shutdown server"))]
|
||||
ShutdownServer {
|
||||
location: Location,
|
||||
source: servers::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to shutdown instance, source: {}", source))]
|
||||
#[snafu(display("Failed to shutdown instance"))]
|
||||
ShutdownInstance {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to encode object into json, source: {}", source))]
|
||||
#[snafu(display("Failed to encode object into json"))]
|
||||
EncodeJson {
|
||||
location: Location,
|
||||
source: JsonError,
|
||||
@@ -361,13 +349,13 @@ pub enum Error {
|
||||
#[snafu(display("Missing WAL dir config"))]
|
||||
MissingWalDirConfig { location: Location },
|
||||
|
||||
#[snafu(display("Failed to join task, source: {}", source))]
|
||||
#[snafu(display("Failed to join task"))]
|
||||
JoinTask {
|
||||
source: common_runtime::JoinError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Column datatype error, source: {}", source))]
|
||||
#[snafu(display("Column datatype error"))]
|
||||
ColumnDataType {
|
||||
location: Location,
|
||||
source: api::error::Error,
|
||||
@@ -379,46 +367,35 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to handle request for region {}, source: {}, location: {}",
|
||||
region_id,
|
||||
source,
|
||||
location
|
||||
))]
|
||||
#[snafu(display("Failed to handle request for region {}", region_id))]
|
||||
HandleRegionRequest {
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("RegionId {} not found, location: {}", region_id, location))]
|
||||
#[snafu(display("RegionId {} not found", region_id))]
|
||||
RegionNotFound {
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Region engine {} is not registered, location: {}", name, location))]
|
||||
#[snafu(display("Region engine {} is not registered", name))]
|
||||
RegionEngineNotFound { name: String, location: Location },
|
||||
|
||||
#[snafu(display("Unsupported gRPC request, kind: {}, location: {}", kind, location))]
|
||||
#[snafu(display("Unsupported gRPC request, kind: {}", kind))]
|
||||
UnsupportedGrpcRequest { kind: String, location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Unsupported output type, expected: {}, location: {}",
|
||||
expected,
|
||||
location
|
||||
))]
|
||||
#[snafu(display("Unsupported output type, expected: {}", expected))]
|
||||
UnsupportedOutput {
|
||||
expected: String,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to get metadata from engine {} for region_id {}, location: {}, source: {}",
|
||||
"Failed to get metadata from engine {} for region_id {}",
|
||||
engine,
|
||||
region_id,
|
||||
location,
|
||||
source
|
||||
))]
|
||||
GetRegionMetadata {
|
||||
engine: String,
|
||||
@@ -427,22 +404,13 @@ pub enum Error {
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to build region requests, location:{}, source: {}",
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to build region requests"))]
|
||||
BuildRegionRequests {
|
||||
location: Location,
|
||||
source: store_api::metadata::MetadataError,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to stop region engine {}, location:{}, source: {}",
|
||||
name,
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to stop region engine {}", name))]
|
||||
StopRegionEngine {
|
||||
name: String,
|
||||
location: Location,
|
||||
|
||||
@@ -21,13 +21,13 @@ use snafu::{Location, Snafu};
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Failed to serialize data, source: {}", source))]
|
||||
#[snafu(display("Failed to serialize data"))]
|
||||
Serialize {
|
||||
source: serde_json::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to deserialize data, source: {}, json: {}", source, json))]
|
||||
#[snafu(display("Failed to deserialize data, json: {}", json))]
|
||||
Deserialize {
|
||||
source: serde_json::Error,
|
||||
location: Location,
|
||||
@@ -60,11 +60,7 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to parse version in schema meta, value: {}, source: {}",
|
||||
value,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to parse version in schema meta, value: {}", value))]
|
||||
ParseSchemaVersion {
|
||||
value: String,
|
||||
source: std::num::ParseIntError,
|
||||
@@ -83,13 +79,13 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Arrow failed to compute, source: {}", source))]
|
||||
#[snafu(display("Arrow failed to compute"))]
|
||||
ArrowCompute {
|
||||
source: arrow::error::ArrowError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to project arrow schema, source: {}", source))]
|
||||
#[snafu(display("Failed to project arrow schema"))]
|
||||
ProjectArrowSchema {
|
||||
source: arrow::error::ArrowError,
|
||||
location: Location,
|
||||
|
||||
@@ -34,7 +34,7 @@ pub enum Error {
|
||||
#[snafu(display("Unexpected engine: {}", engine))]
|
||||
UnexpectedEngine { engine: String, location: Location },
|
||||
|
||||
#[snafu(display("Invalid region metadata, source: {}", source))]
|
||||
#[snafu(display("Invalid region metadata"))]
|
||||
InvalidMetadata {
|
||||
source: store_api::metadata::MetadataError,
|
||||
location: Location,
|
||||
@@ -52,52 +52,40 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to check object from path: {}, source: {}", path, source))]
|
||||
#[snafu(display("Failed to check object from path: {}", path))]
|
||||
CheckObject {
|
||||
path: String,
|
||||
location: Location,
|
||||
source: object_store::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Fail to encode object into json, source: {}", source))]
|
||||
#[snafu(display("Fail to encode object into json"))]
|
||||
EncodeJson {
|
||||
location: Location,
|
||||
source: JsonError,
|
||||
},
|
||||
|
||||
#[snafu(display("Fail to decode object from json, source: {}", source))]
|
||||
#[snafu(display("Fail to decode object from json"))]
|
||||
DecodeJson {
|
||||
location: Location,
|
||||
source: JsonError,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to store region manifest, region_id: {}, source: {}",
|
||||
region_id,
|
||||
source,
|
||||
))]
|
||||
#[snafu(display("Failed to store region manifest, region_id: {}", region_id))]
|
||||
StoreRegionManifest {
|
||||
source: object_store::Error,
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to load region manifest, region_id: {}, source: {}",
|
||||
region_id,
|
||||
source,
|
||||
))]
|
||||
#[snafu(display("Failed to load region manifest, region_id: {}", region_id))]
|
||||
LoadRegionManifest {
|
||||
source: object_store::Error,
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to delete region manifest, region_id: {}, source: {}",
|
||||
region_id,
|
||||
source,
|
||||
))]
|
||||
#[snafu(display("Failed to delete region manifest, region_id: {},", region_id))]
|
||||
DeleteRegionManifest {
|
||||
source: object_store::Error,
|
||||
region_id: RegionId,
|
||||
@@ -110,49 +98,49 @@ pub enum Error {
|
||||
#[snafu(display("Missing required field: {}", name))]
|
||||
MissingRequiredField { name: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to build backend, source: {}", source))]
|
||||
#[snafu(display("Failed to build backend"))]
|
||||
BuildBackend {
|
||||
location: Location,
|
||||
source: common_datasource::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build csv config: {}", source))]
|
||||
#[snafu(display("Failed to build csv config"))]
|
||||
BuildCsvConfig {
|
||||
source: common_datasource::file_format::csv::CsvConfigBuilderError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build stream: {}", source))]
|
||||
#[snafu(display("Failed to build stream"))]
|
||||
BuildStream {
|
||||
source: DataFusionError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to project schema: {}", source))]
|
||||
#[snafu(display("Failed to project schema"))]
|
||||
ProjectArrowSchema {
|
||||
source: ArrowError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to project schema: {}", source))]
|
||||
#[snafu(display("Failed to project schema"))]
|
||||
ProjectSchema {
|
||||
source: datatypes::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build stream adapter: {}", source))]
|
||||
#[snafu(display("Failed to build stream adapter"))]
|
||||
BuildStreamAdapter {
|
||||
location: Location,
|
||||
source: common_recordbatch::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse file format: {}", source))]
|
||||
#[snafu(display("Failed to parse file format"))]
|
||||
ParseFileFormat {
|
||||
location: Location,
|
||||
source: common_datasource::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to generate parquet scan plan: {}", source))]
|
||||
#[snafu(display("Failed to generate parquet scan plan"))]
|
||||
ParquetScanPlan {
|
||||
source: DataFusionError,
|
||||
location: Location,
|
||||
@@ -169,7 +157,7 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to extract column from filter: {}", source))]
|
||||
#[snafu(display("Failed to extract column from filter"))]
|
||||
ExtractColumnFromFilter {
|
||||
source: DataFusionError,
|
||||
location: Location,
|
||||
|
||||
@@ -24,61 +24,61 @@ use store_api::storage::RegionNumber;
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Failed to invalidate table cache, source: {}", source))]
|
||||
#[snafu(display("Failed to invalidate table cache"))]
|
||||
InvalidateTableCache {
|
||||
location: Location,
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to open raft engine backend, source: {}", source))]
|
||||
#[snafu(display("Failed to open raft engine backend"))]
|
||||
OpenRaftEngineBackend {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to handle heartbeat response, source: {}", source))]
|
||||
#[snafu(display("Failed to handle heartbeat response"))]
|
||||
HandleHeartbeatResponse {
|
||||
location: Location,
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("{source}"))]
|
||||
#[snafu(display(""))]
|
||||
External {
|
||||
#[snafu(backtrace)]
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to query, source: {}", source))]
|
||||
#[snafu(display("Failed to query"))]
|
||||
RequestQuery {
|
||||
#[snafu(backtrace)]
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Runtime resource error, source: {}", source))]
|
||||
#[snafu(display("Runtime resource error"))]
|
||||
RuntimeResource {
|
||||
#[snafu(backtrace)]
|
||||
source: common_runtime::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to start server, source: {}", source))]
|
||||
#[snafu(display("Failed to start server"))]
|
||||
StartServer {
|
||||
#[snafu(backtrace)]
|
||||
source: servers::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to shutdown server, source: {}", source))]
|
||||
#[snafu(display("Failed to shutdown server"))]
|
||||
ShutdownServer {
|
||||
#[snafu(backtrace)]
|
||||
source: servers::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse address {}, source: {}", addr, source))]
|
||||
#[snafu(display("Failed to parse address {}", addr))]
|
||||
ParseAddr {
|
||||
addr: String,
|
||||
source: std::net::AddrParseError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse SQL, source: {}", source))]
|
||||
#[snafu(display("Failed to parse SQL"))]
|
||||
ParseSql {
|
||||
#[snafu(backtrace)]
|
||||
source: sql::error::Error,
|
||||
@@ -105,35 +105,31 @@ pub enum Error {
|
||||
#[snafu(display("Invalid DeleteRequest, reason: {}", reason))]
|
||||
InvalidDeleteRequest { reason: String, location: Location },
|
||||
|
||||
#[snafu(display("Invalid system table definition: {err_msg}, at {location}"))]
|
||||
#[snafu(display("Invalid system table definition: {err_msg}"))]
|
||||
InvalidSystemTableDef { err_msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Table not found: {}", table_name))]
|
||||
TableNotFound { table_name: String },
|
||||
|
||||
#[snafu(display("General catalog error: {}", source))]
|
||||
#[snafu(display("General catalog error"))]
|
||||
Catalog {
|
||||
#[snafu(backtrace)]
|
||||
source: catalog::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to start Meta client, source: {}", source))]
|
||||
#[snafu(display("Failed to start Meta client"))]
|
||||
StartMetaClient {
|
||||
#[snafu(backtrace)]
|
||||
source: meta_client::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to create heartbeat stream to Metasrv, source: {}", source))]
|
||||
#[snafu(display("Failed to create heartbeat stream to Metasrv"))]
|
||||
CreateMetaHeartbeatStream {
|
||||
source: meta_client::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to find table route for table id {}, source: {}",
|
||||
table_id,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to find table route for table id {}", table_id))]
|
||||
FindTableRoute {
|
||||
table_id: u32,
|
||||
#[snafu(backtrace)]
|
||||
@@ -143,7 +139,7 @@ pub enum Error {
|
||||
#[snafu(display("Schema {} already exists", name))]
|
||||
SchemaExists { name: String, location: Location },
|
||||
|
||||
#[snafu(display("Table occurs error, source: {}", source))]
|
||||
#[snafu(display("Table occurs error"))]
|
||||
Table {
|
||||
#[snafu(backtrace)]
|
||||
source: table::error::Error,
|
||||
@@ -152,26 +148,26 @@ pub enum Error {
|
||||
#[snafu(display("Cannot find column by name: {}", msg))]
|
||||
ColumnNotFound { msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to plan statement, source: {}", source))]
|
||||
#[snafu(display("Failed to plan statement"))]
|
||||
PlanStatement {
|
||||
#[snafu(backtrace)]
|
||||
source: query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to read table: {table_name}, source: {source}"))]
|
||||
#[snafu(display("Failed to read table: {table_name}"))]
|
||||
ReadTable {
|
||||
table_name: String,
|
||||
#[snafu(backtrace)]
|
||||
source: query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to execute logical plan, source: {}", source))]
|
||||
#[snafu(display("Failed to execute logical plan"))]
|
||||
ExecLogicalPlan {
|
||||
#[snafu(backtrace)]
|
||||
source: query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("{source}"))]
|
||||
#[snafu(display(""))]
|
||||
InvokeRegionServer {
|
||||
#[snafu(backtrace)]
|
||||
source: servers::error::Error,
|
||||
@@ -192,30 +188,27 @@ pub enum Error {
|
||||
#[snafu(display("Not supported: {}", feat))]
|
||||
NotSupported { feat: String },
|
||||
|
||||
#[snafu(display("SQL execution intercepted, source: {}", source))]
|
||||
#[snafu(display("SQL execution intercepted"))]
|
||||
SqlExecIntercepted {
|
||||
#[snafu(backtrace)]
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
// TODO(ruihang): merge all query execution error kinds
|
||||
#[snafu(display("Failed to execute PromQL query {}, source: {}", query, source))]
|
||||
#[snafu(display("Failed to execute PromQL query {}", query))]
|
||||
ExecutePromql {
|
||||
query: String,
|
||||
#[snafu(backtrace)]
|
||||
source: servers::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to create logical plan for prometheus query, source: {}",
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to create logical plan for prometheus query"))]
|
||||
PromStoreRemoteQueryPlan {
|
||||
#[snafu(backtrace)]
|
||||
source: servers::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to describe schema for given statement, source: {}", source))]
|
||||
#[snafu(display("Failed to describe schema for given statement"))]
|
||||
DescribeStatement {
|
||||
#[snafu(backtrace)]
|
||||
source: query::error::Error,
|
||||
@@ -224,24 +217,20 @@ pub enum Error {
|
||||
#[snafu(display("Illegal primary keys definition: {}", msg))]
|
||||
IllegalPrimaryKeysDef { msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to start script manager, source: {}", source))]
|
||||
#[snafu(display("Failed to start script manager"))]
|
||||
StartScriptManager {
|
||||
#[snafu(backtrace)]
|
||||
source: script::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to copy table: {}, source: {}", table_name, source))]
|
||||
#[snafu(display("Failed to copy table: {}", table_name))]
|
||||
CopyTable {
|
||||
table_name: String,
|
||||
#[snafu(backtrace)]
|
||||
source: table::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to insert value into table: {}, source: {}",
|
||||
table_name,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to insert value into table: {}", table_name))]
|
||||
Insert {
|
||||
table_name: String,
|
||||
#[snafu(backtrace)]
|
||||
@@ -251,13 +240,13 @@ pub enum Error {
|
||||
#[snafu(display("Unsupported format: {:?}", format))]
|
||||
UnsupportedFormat { location: Location, format: Format },
|
||||
|
||||
#[snafu(display("Table metadata manager error: {}", source))]
|
||||
#[snafu(display("Table metadata manager error"))]
|
||||
TableMetadataManager {
|
||||
source: common_meta::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to pass permission check, source: {}", source))]
|
||||
#[snafu(display("Failed to pass permission check"))]
|
||||
Permission {
|
||||
source: auth::error::Error,
|
||||
location: Location,
|
||||
@@ -275,7 +264,7 @@ pub enum Error {
|
||||
#[snafu(display("Invalid region request, reason: {}", reason))]
|
||||
InvalidRegionRequest { reason: String },
|
||||
|
||||
#[snafu(display("{}", source))]
|
||||
#[snafu(display("Table operation error"))]
|
||||
TableOperation {
|
||||
source: operator::error::Error,
|
||||
location: Location,
|
||||
|
||||
@@ -21,25 +21,25 @@ use snafu::{Location, Snafu};
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Failed to start log store gc task, source: {}", source))]
|
||||
#[snafu(display("Failed to start log store gc task"))]
|
||||
StartGcTask {
|
||||
location: Location,
|
||||
source: RuntimeError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to stop log store gc task, source: {}", source))]
|
||||
#[snafu(display("Failed to stop log store gc task"))]
|
||||
StopGcTask {
|
||||
location: Location,
|
||||
source: RuntimeError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to add entry to LogBatch, source: {}", source))]
|
||||
#[snafu(display("Failed to add entry to LogBatch"))]
|
||||
AddEntryLogBatch {
|
||||
source: raft_engine::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to perform raft-engine operation, source: {}", source))]
|
||||
#[snafu(display("Failed to perform raft-engine operation"))]
|
||||
RaftEngine {
|
||||
source: raft_engine::Error,
|
||||
location: Location,
|
||||
@@ -52,12 +52,11 @@ pub enum Error {
|
||||
IllegalNamespace { ns: u64, location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to fetch entries from namespace: {}, start: {}, end: {}, max size: {}, source: {}",
|
||||
"Failed to fetch entries from namespace: {}, start: {}, end: {}, max size: {}",
|
||||
ns,
|
||||
start,
|
||||
end,
|
||||
max_size,
|
||||
source,
|
||||
ns
|
||||
))]
|
||||
FetchEntry {
|
||||
ns: u64,
|
||||
|
||||
@@ -33,7 +33,7 @@ pub enum Error {
|
||||
#[snafu(display("No leader, should ask leader first"))]
|
||||
NoLeader { location: Location },
|
||||
|
||||
#[snafu(display("Failed to create gRPC channel, source: {}", source))]
|
||||
#[snafu(display("Failed to create gRPC channel"))]
|
||||
CreateChannel {
|
||||
location: Location,
|
||||
source: common_grpc::error::Error,
|
||||
@@ -48,19 +48,19 @@ pub enum Error {
|
||||
#[snafu(display("Failed create heartbeat stream to server"))]
|
||||
CreateHeartbeatStream { location: Location },
|
||||
|
||||
#[snafu(display("Invalid response header, source: {}", source))]
|
||||
#[snafu(display("Invalid response header"))]
|
||||
InvalidResponseHeader {
|
||||
location: Location,
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert Metasrv request, source: {}", source))]
|
||||
#[snafu(display("Failed to convert Metasrv request"))]
|
||||
ConvertMetaRequest {
|
||||
location: Location,
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert Metasrv response, source: {}", source))]
|
||||
#[snafu(display("Failed to convert Metasrv response"))]
|
||||
ConvertMetaResponse {
|
||||
location: Location,
|
||||
source: common_meta::error::Error,
|
||||
|
||||
@@ -27,51 +27,51 @@ use crate::pubsub::Message;
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Failed to create default catalog and schema, source: {}", source))]
|
||||
#[snafu(display("Failed to create default catalog and schema"))]
|
||||
InitMetadata {
|
||||
location: Location,
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to allocate next sequence number: {}", source))]
|
||||
#[snafu(display("Failed to allocate next sequence number"))]
|
||||
NextSequence {
|
||||
location: Location,
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to submit ddl task: {}", source))]
|
||||
#[snafu(display("Failed to submit ddl task"))]
|
||||
SubmitDdlTask {
|
||||
location: Location,
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to invalidate table cache: {}", source))]
|
||||
#[snafu(display("Failed to invalidate table cache"))]
|
||||
InvalidateTableCache {
|
||||
location: Location,
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to operate region on peer:{}, source: {}", peer, source))]
|
||||
#[snafu(display("Failed to operate region on peer:{}", peer))]
|
||||
OperateRegion {
|
||||
location: Location,
|
||||
peer: Peer,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to list catalogs: {}", source))]
|
||||
#[snafu(display("Failed to list catalogs"))]
|
||||
ListCatalogs {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to list {}'s schemas: {}", catalog, source))]
|
||||
#[snafu(display("Failed to list {}'s schemas", catalog))]
|
||||
ListSchemas {
|
||||
location: Location,
|
||||
catalog: String,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to join a future: {}", source))]
|
||||
#[snafu(display("Failed to join a future"))]
|
||||
Join {
|
||||
location: Location,
|
||||
source: JoinError,
|
||||
@@ -102,7 +102,7 @@ pub enum Error {
|
||||
available: usize,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to request Datanode {}, source: {}", peer, source))]
|
||||
#[snafu(display("Failed to request Datanode {}", peer))]
|
||||
RequestDatanode {
|
||||
location: Location,
|
||||
peer: Peer,
|
||||
@@ -112,7 +112,7 @@ pub enum Error {
|
||||
#[snafu(display("Failed to send shutdown signal"))]
|
||||
SendShutdownSignal { source: SendError<()> },
|
||||
|
||||
#[snafu(display("Failed to shutdown {} server, source: {}", server, source))]
|
||||
#[snafu(display("Failed to shutdown {} server", server))]
|
||||
ShutdownServer {
|
||||
location: Location,
|
||||
source: servers::error::Error,
|
||||
@@ -122,40 +122,36 @@ pub enum Error {
|
||||
#[snafu(display("Empty key is not allowed"))]
|
||||
EmptyKey { location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to execute via Etcd, source: {}, location: {}",
|
||||
source,
|
||||
location
|
||||
))]
|
||||
#[snafu(display("Failed to execute via Etcd"))]
|
||||
EtcdFailed {
|
||||
source: etcd_client::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to connect to Etcd, source: {}", source))]
|
||||
#[snafu(display("Failed to connect to Etcd"))]
|
||||
ConnectEtcd {
|
||||
source: etcd_client::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to bind address {}, source: {}", addr, source))]
|
||||
#[snafu(display("Failed to bind address {}", addr))]
|
||||
TcpBind {
|
||||
addr: String,
|
||||
source: std::io::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to start gRPC server, source: {}", source))]
|
||||
#[snafu(display("Failed to start gRPC server"))]
|
||||
StartGrpc {
|
||||
source: tonic::transport::Error,
|
||||
location: Location,
|
||||
},
|
||||
#[snafu(display("Failed to start http server, source: {}", source))]
|
||||
#[snafu(display("Failed to start http server"))]
|
||||
StartHttp {
|
||||
location: Location,
|
||||
source: servers::error::Error,
|
||||
},
|
||||
#[snafu(display("Failed to parse address {}, source: {}", addr, source))]
|
||||
#[snafu(display("Failed to parse address {}", addr))]
|
||||
ParseAddr {
|
||||
addr: String,
|
||||
source: std::net::AddrParseError,
|
||||
@@ -172,31 +168,31 @@ pub enum Error {
|
||||
#[snafu(display("Invalid inactive region key: {}", key))]
|
||||
InvalidInactiveRegionKey { key: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to parse datanode lease key from utf8: {}", source))]
|
||||
#[snafu(display("Failed to parse datanode lease key from utf8"))]
|
||||
LeaseKeyFromUtf8 {
|
||||
source: std::string::FromUtf8Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse datanode lease value from utf8: {}", source))]
|
||||
#[snafu(display("Failed to parse datanode lease value from utf8"))]
|
||||
LeaseValueFromUtf8 {
|
||||
source: std::string::FromUtf8Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse datanode stat key from utf8: {}", source))]
|
||||
#[snafu(display("Failed to parse datanode stat key from utf8"))]
|
||||
StatKeyFromUtf8 {
|
||||
source: std::string::FromUtf8Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse datanode stat value from utf8: {}", source))]
|
||||
#[snafu(display("Failed to parse datanode stat value from utf8"))]
|
||||
StatValueFromUtf8 {
|
||||
source: std::string::FromUtf8Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse invalid region key from utf8: {}", source))]
|
||||
#[snafu(display("Failed to parse invalid region key from utf8"))]
|
||||
InvalidRegionKeyFromUtf8 {
|
||||
source: std::string::FromUtf8Error,
|
||||
location: Location,
|
||||
@@ -216,7 +212,7 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse number: {}, source: {}", err_msg, source))]
|
||||
#[snafu(display("Failed to parse number: {}", err_msg))]
|
||||
ParseNum {
|
||||
err_msg: String,
|
||||
source: std::num::ParseIntError,
|
||||
@@ -229,25 +225,25 @@ pub enum Error {
|
||||
#[snafu(display("Invalid result with a txn response: {}", err_msg))]
|
||||
InvalidTxnResult { err_msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Cannot parse catalog value, source: {}", source))]
|
||||
#[snafu(display("Cannot parse catalog value"))]
|
||||
InvalidCatalogValue {
|
||||
location: Location,
|
||||
source: common_catalog::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Cannot parse full table name, source: {}", source))]
|
||||
#[snafu(display("Cannot parse full table name"))]
|
||||
InvalidFullTableName {
|
||||
location: Location,
|
||||
source: common_catalog::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to decode table route, source: {}", source))]
|
||||
#[snafu(display("Failed to decode table route"))]
|
||||
DecodeTableRoute {
|
||||
source: prost::DecodeError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to find table route for {table_id}, at {location}"))]
|
||||
#[snafu(display("Failed to find table route for {table_id}"))]
|
||||
TableRouteNotFound {
|
||||
table_id: TableId,
|
||||
location: Location,
|
||||
@@ -284,31 +280,25 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Unexpected, violated: {violated}, at {location}"))]
|
||||
#[snafu(display("Unexpected, violated: {violated}"))]
|
||||
Unexpected {
|
||||
violated: String,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to create gRPC channel, source: {}", source))]
|
||||
#[snafu(display("Failed to create gRPC channel"))]
|
||||
CreateChannel {
|
||||
location: Location,
|
||||
source: common_grpc::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to batch get KVs from leader's in_memory kv store, source: {}",
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to batch get KVs from leader's in_memory kv store"))]
|
||||
BatchGet {
|
||||
source: tonic::Status,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to batch range KVs from leader's in_memory kv store, source: {}",
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to batch range KVs from leader's in_memory kv store"))]
|
||||
Range {
|
||||
source: tonic::Status,
|
||||
location: Location,
|
||||
@@ -323,7 +313,7 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Invalid http body, source: {}", source))]
|
||||
#[snafu(display("Invalid http body"))]
|
||||
InvalidHttpBody {
|
||||
source: http::Error,
|
||||
location: Location,
|
||||
@@ -340,19 +330,19 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to lock based on etcd, source: {}", source))]
|
||||
#[snafu(display("Failed to lock based on etcd"))]
|
||||
Lock {
|
||||
source: etcd_client::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to unlock based on etcd, source: {}", source))]
|
||||
#[snafu(display("Failed to unlock based on etcd"))]
|
||||
Unlock {
|
||||
source: etcd_client::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to grant lease, source: {}", source))]
|
||||
#[snafu(display("Failed to grant lease"))]
|
||||
LeaseGrant {
|
||||
source: etcd_client::Error,
|
||||
location: Location,
|
||||
@@ -361,7 +351,7 @@ pub enum Error {
|
||||
#[snafu(display("Distributed lock is not configured"))]
|
||||
LockNotConfig { location: Location },
|
||||
|
||||
#[snafu(display("Invalid utf-8 value, source: {:?}", source))]
|
||||
#[snafu(display("Invalid utf-8 value"))]
|
||||
InvalidUtf8Value {
|
||||
source: std::string::FromUtf8Error,
|
||||
location: Location,
|
||||
@@ -370,19 +360,19 @@ pub enum Error {
|
||||
#[snafu(display("Missing required parameter, param: {:?}", param))]
|
||||
MissingRequiredParameter { param: String },
|
||||
|
||||
#[snafu(display("Failed to recover procedure, source: {source}"))]
|
||||
#[snafu(display("Failed to recover procedure"))]
|
||||
RecoverProcedure {
|
||||
location: Location,
|
||||
source: common_procedure::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to wait procedure done, source: {source}"))]
|
||||
#[snafu(display("Failed to wait procedure done"))]
|
||||
WaitProcedure {
|
||||
location: Location,
|
||||
source: common_procedure::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to submit procedure, source: {source}"))]
|
||||
#[snafu(display("Failed to submit procedure"))]
|
||||
SubmitProcedure {
|
||||
location: Location,
|
||||
source: common_procedure::Error,
|
||||
@@ -425,11 +415,7 @@ pub enum Error {
|
||||
#[snafu(display("Missing request header"))]
|
||||
MissingRequestHeader { location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to register procedure loader, type name: {}, source: {}",
|
||||
type_name,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to register procedure loader, type name: {}", type_name))]
|
||||
RegisterProcedureLoader {
|
||||
type_name: String,
|
||||
location: Location,
|
||||
@@ -459,19 +445,19 @@ pub enum Error {
|
||||
#[snafu(display("Failed to update table metadata, err_msg: {}", err_msg))]
|
||||
UpdateTableMetadata { err_msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to convert table route, source: {}", source))]
|
||||
#[snafu(display("Failed to convert table route"))]
|
||||
TableRouteConversion {
|
||||
location: Location,
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert proto data, source: {}", source))]
|
||||
#[snafu(display("Failed to convert proto data"))]
|
||||
ConvertProtoData {
|
||||
location: Location,
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert Etcd txn object: {source}"))]
|
||||
#[snafu(display("Failed to convert Etcd txn object: "))]
|
||||
ConvertEtcdTxnObject {
|
||||
source: common_meta::error::Error,
|
||||
location: Location,
|
||||
@@ -479,25 +465,25 @@ pub enum Error {
|
||||
|
||||
// this error is used for custom error mapping
|
||||
// please do not delete it
|
||||
#[snafu(display("Other error, source: {}", source))]
|
||||
#[snafu(display("Other error"))]
|
||||
Other {
|
||||
source: BoxedError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Table metadata manager error: {}", source))]
|
||||
#[snafu(display("Table metadata manager error"))]
|
||||
TableMetadataManager {
|
||||
source: common_meta::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to update table route: {}", source))]
|
||||
#[snafu(display("Failed to update table route"))]
|
||||
UpdateTableRoute {
|
||||
source: common_meta::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to get table info error: {}", source))]
|
||||
#[snafu(display("Failed to get table info error"))]
|
||||
GetFullTableInfo {
|
||||
source: common_meta::error::Error,
|
||||
location: Location,
|
||||
@@ -506,16 +492,16 @@ pub enum Error {
|
||||
#[snafu(display("Invalid heartbeat request: {}", err_msg))]
|
||||
InvalidHeartbeatRequest { err_msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to publish message: {:?}", source))]
|
||||
#[snafu(display("Failed to publish message"))]
|
||||
PublishMessage {
|
||||
source: SendError<Message>,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Too many partitions, location: {}", location))]
|
||||
#[snafu(display("Too many partitions"))]
|
||||
TooManyPartitions { location: Location },
|
||||
|
||||
#[snafu(display("Unsupported operation {}, location: {}", operation, location))]
|
||||
#[snafu(display("Unsupported operation {}", operation))]
|
||||
Unsupported {
|
||||
operation: String,
|
||||
location: Location,
|
||||
|
||||
@@ -32,41 +32,27 @@ use crate::worker::WorkerId;
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("OpenDAL operator failed. Location: {}, source: {}", location, source))]
|
||||
#[snafu(display("OpenDAL operator failed"))]
|
||||
OpenDal {
|
||||
location: Location,
|
||||
source: object_store::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Fail to compress object by {}, path: {}, source: {}",
|
||||
compress_type,
|
||||
path,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Fail to compress object by {}, path: {}", compress_type, path))]
|
||||
CompressObject {
|
||||
compress_type: CompressionType,
|
||||
path: String,
|
||||
source: std::io::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Fail to decompress object by {}, path: {}, source: {}",
|
||||
compress_type,
|
||||
path,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Fail to decompress object by {}, path: {}", compress_type, path))]
|
||||
DecompressObject {
|
||||
compress_type: CompressionType,
|
||||
path: String,
|
||||
source: std::io::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to ser/de json object. Location: {}, source: {}",
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to ser/de json object"))]
|
||||
SerdeJson {
|
||||
location: Location,
|
||||
source: serde_json::Error,
|
||||
@@ -79,101 +65,78 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Invalid UTF-8 content. Location: {}, source: {}", location, source))]
|
||||
#[snafu(display("Invalid UTF-8 content"))]
|
||||
Utf8 {
|
||||
location: Location,
|
||||
source: std::str::Utf8Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Cannot find RegionMetadata. Location: {}", location))]
|
||||
#[snafu(display("Cannot find RegionMetadata"))]
|
||||
RegionMetadataNotFound { location: Location },
|
||||
|
||||
#[snafu(display("Failed to join handle, location: {}, source: {}", location, source))]
|
||||
#[snafu(display("Failed to join handle"))]
|
||||
Join {
|
||||
source: common_runtime::JoinError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Worker {} is stopped, location: {}", id, location))]
|
||||
#[snafu(display("Worker {} is stopped", id))]
|
||||
WorkerStopped { id: WorkerId, location: Location },
|
||||
|
||||
#[snafu(display("Failed to recv result, location: {}, source: {}", location, source))]
|
||||
#[snafu(display("Failed to recv result"))]
|
||||
Recv {
|
||||
source: tokio::sync::oneshot::error::RecvError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Invalid metadata, {}, location: {}", reason, location))]
|
||||
#[snafu(display("Invalid metadata, {}", reason))]
|
||||
InvalidMeta { reason: String, location: Location },
|
||||
|
||||
#[snafu(display("Invalid region metadata, source: {}, location: {}", source, location))]
|
||||
#[snafu(display("Invalid region metadata"))]
|
||||
InvalidMetadata {
|
||||
source: store_api::metadata::MetadataError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Region {} already exists, location: {}", region_id, location))]
|
||||
#[snafu(display("Region {} already exists", region_id))]
|
||||
RegionExists {
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to create RecordBatch from vectors, location: {}, source: {}",
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to create RecordBatch from vectors"))]
|
||||
NewRecordBatch {
|
||||
location: Location,
|
||||
source: ArrowError,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to write to buffer, location: {}, source: {}",
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to write to buffer"))]
|
||||
WriteBuffer {
|
||||
location: Location,
|
||||
source: common_datasource::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to write parquet file, path: {}, location: {}, source: {}",
|
||||
path,
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to write parquet file, path: {}", path))]
|
||||
WriteParquet {
|
||||
path: String,
|
||||
location: Location,
|
||||
source: parquet::errors::ParquetError,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to read parquet file, path: {}, location: {}, source: {}",
|
||||
path,
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to read parquet file, path: {}", path))]
|
||||
ReadParquet {
|
||||
path: String,
|
||||
source: parquet::errors::ParquetError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Region {} not found, location: {}", region_id, location))]
|
||||
#[snafu(display("Region {} not found", region_id))]
|
||||
RegionNotFound {
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Region {} is corrupted, reason: {}, location: {}",
|
||||
region_id,
|
||||
reason,
|
||||
location
|
||||
))]
|
||||
#[snafu(display("Region {} is corrupted, reason: {}", region_id, reason))]
|
||||
RegionCorrupted {
|
||||
region_id: RegionId,
|
||||
reason: String,
|
||||
@@ -206,54 +169,34 @@ pub enum Error {
|
||||
source: datatypes::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to encode WAL entry, region_id: {}, location: {}, source: {}",
|
||||
region_id,
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to encode WAL entry, region_id: {}", region_id))]
|
||||
EncodeWal {
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
source: EncodeError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to write WAL, location: {}, source: {}", location, source))]
|
||||
#[snafu(display("Failed to write WAL"))]
|
||||
WriteWal {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to read WAL, region_id: {}, location: {}, source: {}",
|
||||
region_id,
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to read WAL, region_id: {}", region_id))]
|
||||
ReadWal {
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to decode WAL entry, region_id: {}, location: {}, source: {}",
|
||||
region_id,
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to decode WAL entry, region_id: {}", region_id))]
|
||||
DecodeWal {
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
source: DecodeError,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to delete WAL, region_id: {}, location: {}, source: {}",
|
||||
region_id,
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to delete WAL, region_id: {}", region_id))]
|
||||
DeleteWal {
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
@@ -261,169 +204,131 @@ pub enum Error {
|
||||
},
|
||||
|
||||
// Shared error for each writer in the write group.
|
||||
#[snafu(display("Failed to write region, source: {}", source))]
|
||||
#[snafu(display("Failed to write region"))]
|
||||
WriteGroup { source: Arc<Error> },
|
||||
|
||||
#[snafu(display("Row value mismatches field data type"))]
|
||||
FieldTypeMismatch { source: datatypes::error::Error },
|
||||
|
||||
#[snafu(display("Failed to serialize field, location: {}", location))]
|
||||
#[snafu(display("Failed to serialize field"))]
|
||||
SerializeField {
|
||||
source: memcomparable::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Data type: {} does not support serialization/deserialization, location: {}",
|
||||
"Data type: {} does not support serialization/deserialization",
|
||||
data_type,
|
||||
location
|
||||
))]
|
||||
NotSupportedField {
|
||||
data_type: ConcreteDataType,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to deserialize field, source: {}, location: {}",
|
||||
source,
|
||||
location
|
||||
))]
|
||||
#[snafu(display("Failed to deserialize field"))]
|
||||
DeserializeField {
|
||||
source: memcomparable::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Invalid parquet SST file {}, location: {}, reason: {}",
|
||||
file,
|
||||
location,
|
||||
reason
|
||||
))]
|
||||
#[snafu(display("Invalid parquet SST file {}, reason: {}", file, reason))]
|
||||
InvalidParquet {
|
||||
file: String,
|
||||
reason: String,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Invalid batch, {}, location: {}", reason, location))]
|
||||
#[snafu(display("Invalid batch, {}", reason))]
|
||||
InvalidBatch { reason: String, location: Location },
|
||||
|
||||
#[snafu(display("Invalid arrow record batch, {}, location: {}", reason, location))]
|
||||
#[snafu(display("Invalid arrow record batch, {}", reason))]
|
||||
InvalidRecordBatch { reason: String, location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to convert array to vector, location: {}, source: {}",
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to convert array to vector"))]
|
||||
ConvertVector {
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to compute arrow arrays, location: {}, source: {}",
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to compute arrow arrays"))]
|
||||
ComputeArrow {
|
||||
location: Location,
|
||||
source: datatypes::arrow::error::ArrowError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to compute vector, location: {}, source: {}", location, source))]
|
||||
#[snafu(display("Failed to compute vector"))]
|
||||
ComputeVector {
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Primary key length mismatch, expect: {}, actual: {}, location: {}",
|
||||
expect,
|
||||
actual,
|
||||
location
|
||||
))]
|
||||
#[snafu(display("Primary key length mismatch, expect: {}, actual: {}", expect, actual))]
|
||||
PrimaryKeyLengthMismatch {
|
||||
expect: usize,
|
||||
actual: usize,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Invalid sender, location: {}", location,))]
|
||||
#[snafu(display("Invalid sender",))]
|
||||
InvalidSender { location: Location },
|
||||
|
||||
#[snafu(display("Invalid scheduler state, location: {}", location))]
|
||||
#[snafu(display("Invalid scheduler state"))]
|
||||
InvalidSchedulerState { location: Location },
|
||||
|
||||
#[snafu(display("Failed to stop scheduler, location: {}, source: {}", location, source))]
|
||||
#[snafu(display("Failed to stop scheduler"))]
|
||||
StopScheduler {
|
||||
source: JoinError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to build scan predicate, location: {}, source: {}",
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to build scan predicate"))]
|
||||
BuildPredicate {
|
||||
source: table::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to delete SST file, file id: {}, source: {}", file_id, source))]
|
||||
#[snafu(display("Failed to delete SST file, file id: {}", file_id))]
|
||||
DeleteSst {
|
||||
file_id: FileId,
|
||||
source: object_store::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to flush region {}, location: {}, source: {}",
|
||||
region_id,
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to flush region {}", region_id))]
|
||||
FlushRegion {
|
||||
region_id: RegionId,
|
||||
source: Arc<Error>,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Region {} is dropped, location: {}", region_id, location))]
|
||||
#[snafu(display("Region {} is dropped", region_id))]
|
||||
RegionDropped {
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Region {} is closed, location: {}", region_id, location))]
|
||||
#[snafu(display("Region {} is closed", region_id))]
|
||||
RegionClosed {
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Region {} is truncated, location: {}", region_id, location))]
|
||||
#[snafu(display("Region {} is truncated", region_id))]
|
||||
RegionTruncated {
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Engine write buffer is full, rejecting write requests of region {}, location: {}",
|
||||
"Engine write buffer is full, rejecting write requests of region {}",
|
||||
region_id,
|
||||
location
|
||||
))]
|
||||
RejectWrite {
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to compact region {}, location: {}, source:{}",
|
||||
region_id,
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to compact region {}", region_id))]
|
||||
CompactRegion {
|
||||
region_id: RegionId,
|
||||
source: Arc<Error>,
|
||||
@@ -431,10 +336,9 @@ pub enum Error {
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to compat readers for region {}, reason: {}, location: {}",
|
||||
"Failed to compat readers for region {}, reason: {}",
|
||||
region_id,
|
||||
reason,
|
||||
location
|
||||
))]
|
||||
CompatReader {
|
||||
region_id: RegionId,
|
||||
@@ -442,13 +346,13 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("{}, location: {}", source, location))]
|
||||
#[snafu(display("Invalue region req"))]
|
||||
InvalidRegionRequest {
|
||||
source: store_api::metadata::MetadataError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Region {} is read only, location: {}", region_id, location))]
|
||||
#[snafu(display("Region {} is read only", region_id))]
|
||||
RegionReadonly {
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
|
||||
@@ -26,13 +26,13 @@ use snafu::{Location, Snafu};
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Failed to invalidate table cache, source: {}", source))]
|
||||
#[snafu(display("Failed to invalidate table cache"))]
|
||||
InvalidateTableCache {
|
||||
location: Location,
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to execute ddl, source: {}", source))]
|
||||
#[snafu(display("Failed to execute ddl"))]
|
||||
ExecuteDdl {
|
||||
location: Location,
|
||||
source: common_meta::error::Error,
|
||||
@@ -44,25 +44,25 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("{source}"))]
|
||||
#[snafu(display("external error"))]
|
||||
External {
|
||||
#[snafu(backtrace)]
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to insert data, source: {}", source))]
|
||||
#[snafu(display("Failed to insert data"))]
|
||||
RequestInserts {
|
||||
#[snafu(backtrace)]
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to delete data, source: {}", source))]
|
||||
#[snafu(display("Failed to delete data"))]
|
||||
RequestDeletes {
|
||||
#[snafu(backtrace)]
|
||||
source: common_meta::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse SQL, source: {}", source))]
|
||||
#[snafu(display("Failed to parse SQL"))]
|
||||
ParseSql {
|
||||
#[snafu(backtrace)]
|
||||
source: sql::error::Error,
|
||||
@@ -75,28 +75,20 @@ pub enum Error {
|
||||
source: sql::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Column datatype error, source: {}", source))]
|
||||
#[snafu(display("Column datatype error"))]
|
||||
ColumnDataType {
|
||||
#[snafu(backtrace)]
|
||||
source: api::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Invalid column proto definition, column: {}, source: {}",
|
||||
column,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Invalid column proto definition, column: {}", column))]
|
||||
InvalidColumnDef {
|
||||
column: String,
|
||||
#[snafu(backtrace)]
|
||||
source: api::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to convert column default constraint, column: {}, source: {}",
|
||||
column_name,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to convert column default constraint, column: {}", column_name))]
|
||||
ConvertColumnDefaultConstraint {
|
||||
column_name: String,
|
||||
#[snafu(backtrace)]
|
||||
@@ -115,54 +107,50 @@ pub enum Error {
|
||||
#[snafu(display("Table not found: {}", table_name))]
|
||||
TableNotFound { table_name: String },
|
||||
|
||||
#[snafu(display("Failed to join task, source: {}", source))]
|
||||
#[snafu(display("Failed to join task"))]
|
||||
JoinTask {
|
||||
source: common_runtime::JoinError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("General catalog error: {}", source))]
|
||||
#[snafu(display("General catalog error"))]
|
||||
Catalog {
|
||||
#[snafu(backtrace)]
|
||||
source: catalog::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to find table partition rule for table {}, source: {}",
|
||||
table_name,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to find table partition rule for table {}", table_name))]
|
||||
FindTablePartitionRule {
|
||||
table_name: String,
|
||||
#[snafu(backtrace)]
|
||||
source: partition::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to split insert request, source: {}", source))]
|
||||
#[snafu(display("Failed to split insert request"))]
|
||||
SplitInsert {
|
||||
source: partition::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to split delete request, source: {}", source))]
|
||||
#[snafu(display("Failed to split delete request"))]
|
||||
SplitDelete {
|
||||
source: partition::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to find leader for region, source: {}", source))]
|
||||
#[snafu(display("Failed to find leader for region"))]
|
||||
FindRegionLeader {
|
||||
source: partition::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to create table info, source: {}", source))]
|
||||
#[snafu(display("Failed to create table info"))]
|
||||
CreateTableInfo {
|
||||
#[snafu(backtrace)]
|
||||
source: datatypes::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build CreateExpr on insertion: {}", source))]
|
||||
#[snafu(display("Failed to build CreateExpr on insertion"))]
|
||||
BuildCreateExprOnInsertion {
|
||||
#[snafu(backtrace)]
|
||||
source: common_grpc_expr::error::Error,
|
||||
@@ -177,7 +165,7 @@ pub enum Error {
|
||||
#[snafu(display("Schema {} already exists", name))]
|
||||
SchemaExists { name: String, location: Location },
|
||||
|
||||
#[snafu(display("Table occurs error, source: {}", source))]
|
||||
#[snafu(display("Table occurs error"))]
|
||||
Table {
|
||||
#[snafu(backtrace)]
|
||||
source: table::error::Error,
|
||||
@@ -186,47 +174,43 @@ pub enum Error {
|
||||
#[snafu(display("Cannot find column by name: {}", msg))]
|
||||
ColumnNotFound { msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to execute statement, source: {}", source))]
|
||||
#[snafu(display("Failed to execute statement"))]
|
||||
ExecuteStatement {
|
||||
#[snafu(backtrace)]
|
||||
source: query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to plan statement, source: {}", source))]
|
||||
#[snafu(display("Failed to plan statement"))]
|
||||
PlanStatement {
|
||||
#[snafu(backtrace)]
|
||||
source: query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse query, source: {}", source))]
|
||||
#[snafu(display("Failed to parse query"))]
|
||||
ParseQuery {
|
||||
#[snafu(backtrace)]
|
||||
source: query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to execute logical plan, source: {}", source))]
|
||||
#[snafu(display("Failed to execute logical plan"))]
|
||||
ExecLogicalPlan {
|
||||
#[snafu(backtrace)]
|
||||
source: query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build DataFusion logical plan, source: {}", source))]
|
||||
#[snafu(display("Failed to build DataFusion logical plan"))]
|
||||
BuildDfLogicalPlan {
|
||||
source: datafusion_common::DataFusionError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert AlterExpr to AlterRequest, source: {}", source))]
|
||||
#[snafu(display("Failed to convert AlterExpr to AlterRequest"))]
|
||||
AlterExprToRequest {
|
||||
#[snafu(backtrace)]
|
||||
source: common_grpc_expr::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to build table meta for table: {}, source: {}",
|
||||
table_name,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to build table meta for table: {}", table_name))]
|
||||
BuildTableMeta {
|
||||
table_name: String,
|
||||
source: table::metadata::TableMetaBuilderError,
|
||||
@@ -236,28 +220,25 @@ pub enum Error {
|
||||
#[snafu(display("Not supported: {}", feat))]
|
||||
NotSupported { feat: String },
|
||||
|
||||
#[snafu(display("Failed to find new columns on insertion: {}", source))]
|
||||
#[snafu(display("Failed to find new columns on insertion"))]
|
||||
FindNewColumnsOnInsertion {
|
||||
#[snafu(backtrace)]
|
||||
source: common_grpc_expr::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert into vectors, source: {}", source))]
|
||||
#[snafu(display("Failed to convert into vectors"))]
|
||||
IntoVectors {
|
||||
#[snafu(backtrace)]
|
||||
source: datatypes::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to deserialize partition in meta to partition def, source: {}",
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to deserialize partition in meta to partition def"))]
|
||||
DeserializePartition {
|
||||
#[snafu(backtrace)]
|
||||
source: partition::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to describe schema for given statement, source: {}", source))]
|
||||
#[snafu(display("Failed to describe schema for given statement"))]
|
||||
DescribeStatement {
|
||||
#[snafu(backtrace)]
|
||||
source: query::error::Error,
|
||||
@@ -266,43 +247,39 @@ pub enum Error {
|
||||
#[snafu(display("Illegal primary keys definition: {}", msg))]
|
||||
IllegalPrimaryKeysDef { msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Unrecognized table option: {}", source))]
|
||||
#[snafu(display("Unrecognized table option"))]
|
||||
UnrecognizedTableOption {
|
||||
#[snafu(backtrace)]
|
||||
source: table::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Missing time index column: {}", source))]
|
||||
#[snafu(display("Missing time index column"))]
|
||||
MissingTimeIndexColumn {
|
||||
location: Location,
|
||||
source: table::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build regex, source: {}", source))]
|
||||
#[snafu(display("Failed to build regex"))]
|
||||
BuildRegex {
|
||||
location: Location,
|
||||
source: regex::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to copy table: {}, source: {}", table_name, source))]
|
||||
#[snafu(display("Failed to copy table: {}", table_name))]
|
||||
CopyTable {
|
||||
table_name: String,
|
||||
#[snafu(backtrace)]
|
||||
source: table::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to insert value into table: {}, source: {}",
|
||||
table_name,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to insert value into table: {}", table_name))]
|
||||
Insert {
|
||||
table_name: String,
|
||||
#[snafu(backtrace)]
|
||||
source: table::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse data source url, source: {}", source))]
|
||||
#[snafu(display("Failed to parse data source url"))]
|
||||
ParseUrl {
|
||||
#[snafu(backtrace)]
|
||||
source: common_datasource::error::Error,
|
||||
@@ -311,82 +288,82 @@ pub enum Error {
|
||||
#[snafu(display("Unsupported format: {:?}", format))]
|
||||
UnsupportedFormat { location: Location, format: Format },
|
||||
|
||||
#[snafu(display("Failed to parse file format, source: {}", source))]
|
||||
#[snafu(display("Failed to parse file format"))]
|
||||
ParseFileFormat {
|
||||
#[snafu(backtrace)]
|
||||
source: common_datasource::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build data source backend, source: {}", source))]
|
||||
#[snafu(display("Failed to build data source backend"))]
|
||||
BuildBackend {
|
||||
#[snafu(backtrace)]
|
||||
source: common_datasource::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to list objects, source: {}", source))]
|
||||
#[snafu(display("Failed to list objects"))]
|
||||
ListObjects {
|
||||
#[snafu(backtrace)]
|
||||
source: common_datasource::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to infer schema from path: {}, source: {}", path, source))]
|
||||
#[snafu(display("Failed to infer schema from path: {}", path))]
|
||||
InferSchema {
|
||||
path: String,
|
||||
#[snafu(backtrace)]
|
||||
source: common_datasource::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build csv config: {}", source))]
|
||||
#[snafu(display("Failed to build csv config"))]
|
||||
BuildCsvConfig {
|
||||
source: common_datasource::file_format::csv::CsvConfigBuilderError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to write stream to path: {}, source: {}", path, source))]
|
||||
#[snafu(display("Failed to write stream to path: {}", path))]
|
||||
WriteStreamToFile {
|
||||
path: String,
|
||||
#[snafu(backtrace)]
|
||||
source: common_datasource::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to read object in path: {}, source: {}", path, source))]
|
||||
#[snafu(display("Failed to read object in path: {}", path))]
|
||||
ReadObject {
|
||||
path: String,
|
||||
location: Location,
|
||||
source: object_store::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to read record batch, source: {}", source))]
|
||||
#[snafu(display("Failed to read record batch"))]
|
||||
ReadDfRecordBatch {
|
||||
source: datafusion::error::DataFusionError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to read parquet file, source: {}", source))]
|
||||
#[snafu(display("Failed to read parquet file"))]
|
||||
ReadParquet {
|
||||
source: parquet::errors::ParquetError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to read orc schema, source: {}", source))]
|
||||
#[snafu(display("Failed to read orc schema"))]
|
||||
ReadOrc {
|
||||
source: common_datasource::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build parquet record batch stream, source: {}", source))]
|
||||
#[snafu(display("Failed to build parquet record batch stream"))]
|
||||
BuildParquetRecordBatchStream {
|
||||
location: Location,
|
||||
source: parquet::errors::ParquetError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build file stream, source: {}", source))]
|
||||
#[snafu(display("Failed to build file stream"))]
|
||||
BuildFileStream {
|
||||
location: Location,
|
||||
source: datafusion::error::DataFusionError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to write parquet file, source: {}", source))]
|
||||
#[snafu(display("Failed to write parquet file"))]
|
||||
WriteParquet {
|
||||
#[snafu(backtrace)]
|
||||
source: storage::error::Error,
|
||||
@@ -405,19 +382,19 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to project schema: {}", source))]
|
||||
#[snafu(display("Failed to project schema"))]
|
||||
ProjectSchema {
|
||||
source: ArrowError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to encode object into json, source: {}", source))]
|
||||
#[snafu(display("Failed to encode object into json"))]
|
||||
EncodeJson {
|
||||
source: serde_json::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to prepare immutable table: {}", source))]
|
||||
#[snafu(display("Failed to prepare immutable table"))]
|
||||
PrepareImmutableTable {
|
||||
#[snafu(backtrace)]
|
||||
source: query::error::Error,
|
||||
@@ -430,35 +407,31 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Table metadata manager error: {}", source))]
|
||||
#[snafu(display("Table metadata manager error"))]
|
||||
TableMetadataManager {
|
||||
source: common_meta::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to read record batch, source: {}", source))]
|
||||
#[snafu(display("Failed to read record batch"))]
|
||||
ReadRecordBatch {
|
||||
source: common_recordbatch::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build column vectors, source: {}", source))]
|
||||
#[snafu(display("Failed to build column vectors"))]
|
||||
BuildColumnVectors {
|
||||
source: common_recordbatch::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Missing insert body, source: {source}"))]
|
||||
#[snafu(display("Missing insert body"))]
|
||||
MissingInsertBody {
|
||||
source: sql::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to build default value, column: {}, source: {}",
|
||||
column,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to build default value, column: {}", column))]
|
||||
ColumnDefaultValue {
|
||||
column: String,
|
||||
location: Location,
|
||||
@@ -482,22 +455,19 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to prepare file table: {}", source))]
|
||||
#[snafu(display("Failed to prepare file table"))]
|
||||
PrepareFileTable {
|
||||
#[snafu(backtrace)]
|
||||
source: query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to infer file table schema: {}", source))]
|
||||
#[snafu(display("Failed to infer file table schema"))]
|
||||
InferFileTableSchema {
|
||||
#[snafu(backtrace)]
|
||||
source: query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"The schema of the file table is incompatible with the table schema: {}",
|
||||
source
|
||||
))]
|
||||
#[snafu(display("The schema of the file table is incompatible with the table schema"))]
|
||||
SchemaIncompatible {
|
||||
#[snafu(backtrace)]
|
||||
source: query::error::Error,
|
||||
|
||||
@@ -25,7 +25,7 @@ use table::metadata::TableId;
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Table route manager error: {}", source))]
|
||||
#[snafu(display("Table route manager error"))]
|
||||
TableRouteManager {
|
||||
source: common_meta::error::Error,
|
||||
location: Location,
|
||||
@@ -34,7 +34,7 @@ pub enum Error {
|
||||
#[snafu(display("Failed to get meta info from cache, error: {}", err_msg))]
|
||||
GetCache { err_msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to request Meta, source: {}", source))]
|
||||
#[snafu(display("Failed to request Meta"))]
|
||||
RequestMeta {
|
||||
location: Location,
|
||||
source: meta_client::error::Error,
|
||||
@@ -64,13 +64,13 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to serialize value to json, source: {}", source))]
|
||||
#[snafu(display("Failed to serialize value to json"))]
|
||||
SerializeJson {
|
||||
source: serde_json::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to deserialize value from json, source: {}", source))]
|
||||
#[snafu(display("Failed to deserialize value from json"))]
|
||||
DeserializeJson {
|
||||
source: serde_json::Error,
|
||||
location: Location,
|
||||
@@ -108,11 +108,7 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to convert DataFusion's ScalarValue: {:?}, source: {}",
|
||||
value,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to convert DataFusion's ScalarValue: {:?}", value))]
|
||||
ConvertScalarValue {
|
||||
value: ScalarValue,
|
||||
location: Location,
|
||||
|
||||
@@ -23,60 +23,46 @@ use snafu::{Location, Snafu};
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Unsupported expr type: {}, location: {}", name, location))]
|
||||
#[snafu(display("Unsupported expr type: {}", name))]
|
||||
UnsupportedExpr { name: String, location: Location },
|
||||
|
||||
#[snafu(display("Unexpected token: {:?}, location: {}", token, location))]
|
||||
#[snafu(display("Unexpected token: {:?}", token))]
|
||||
UnexpectedToken {
|
||||
token: TokenType,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Internal error during building DataFusion plan, error: {}, location: {}",
|
||||
source,
|
||||
location
|
||||
))]
|
||||
#[snafu(display("Internal error during building DataFusion plan"))]
|
||||
DataFusionPlanning {
|
||||
source: datafusion::error::DataFusionError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Unexpected plan or expression: {}, location: {}", desc, location))]
|
||||
#[snafu(display("Unexpected plan or expression: {}", desc))]
|
||||
UnexpectedPlanExpr { desc: String, location: Location },
|
||||
|
||||
#[snafu(display("Unknown table type, downcast failed, location: {}", location))]
|
||||
#[snafu(display("Unknown table type, downcast failed"))]
|
||||
UnknownTable { location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Cannot find time index column in table {}, location: {}",
|
||||
table,
|
||||
location
|
||||
))]
|
||||
#[snafu(display("Cannot find time index column in table {}", table))]
|
||||
TimeIndexNotFound { table: String, location: Location },
|
||||
|
||||
#[snafu(display("Cannot find value columns in table {}, location: {}", table, location))]
|
||||
#[snafu(display("Cannot find value columns in table {}", table))]
|
||||
ValueNotFound { table: String, location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Cannot accept multiple vector as function input, PromQL expr: {:?}, location: {}",
|
||||
"Cannot accept multiple vector as function input, PromQL expr: {:?}",
|
||||
expr,
|
||||
location
|
||||
))]
|
||||
MultipleVector { expr: PromExpr, location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Expect a PromQL expr but not found, input expr: {:?}, location: {}",
|
||||
expr,
|
||||
location
|
||||
))]
|
||||
#[snafu(display("Expect a PromQL expr but not found, input expr: {:?}", expr))]
|
||||
ExpectExpr { expr: PromExpr, location: Location },
|
||||
#[snafu(display(
|
||||
"Illegal range: offset {}, length {}, array len {}, location: {}",
|
||||
"Illegal range: offset {}, length {}, array len {}",
|
||||
offset,
|
||||
length,
|
||||
len,
|
||||
location
|
||||
))]
|
||||
IllegalRange {
|
||||
offset: u32,
|
||||
@@ -85,39 +71,39 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to deserialize: {}", source))]
|
||||
#[snafu(display("Failed to deserialize"))]
|
||||
Deserialize {
|
||||
source: prost::DecodeError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Empty range is not expected, location: {}", location))]
|
||||
#[snafu(display("Empty range is not expected"))]
|
||||
EmptyRange { location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Table (metric) name not found, this indicates a procedure error in PromQL planner, location: {}", location
|
||||
"Table (metric) name not found, this indicates a procedure error in PromQL planner"
|
||||
))]
|
||||
TableNameNotFound { location: Location },
|
||||
|
||||
#[snafu(display("General catalog error: {source}, location: {}", location))]
|
||||
#[snafu(display("General catalog error: "))]
|
||||
Catalog {
|
||||
location: Location,
|
||||
source: catalog::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Expect a range selector, but not found, location: {}", location))]
|
||||
#[snafu(display("Expect a range selector, but not found"))]
|
||||
ExpectRangeSelector { location: Location },
|
||||
|
||||
#[snafu(display("Zero range in range selector, location: {}", location))]
|
||||
#[snafu(display("Zero range in range selector"))]
|
||||
ZeroRangeSelector { location: Location },
|
||||
|
||||
#[snafu(display("Cannot find column {col}, location: {}", location))]
|
||||
#[snafu(display("Cannot find column {col}"))]
|
||||
ColumnNotFound { col: String, location: Location },
|
||||
|
||||
#[snafu(display("Found multiple metric matchers in selector, location: {}", location))]
|
||||
#[snafu(display("Found multiple metric matchers in selector"))]
|
||||
MultipleMetricMatchers { location: Location },
|
||||
|
||||
#[snafu(display("Expect a metric matcher, but not found, location: {}", location))]
|
||||
#[snafu(display("Expect a metric matcher, but not found"))]
|
||||
NoMetricMatcher { location: Location },
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ use snafu::{Location, Snafu};
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum InnerError {
|
||||
#[snafu(display("{}: {}", msg, source))]
|
||||
#[snafu(display("msg: {}", msg))]
|
||||
Datafusion {
|
||||
msg: &'static str,
|
||||
source: DataFusionError,
|
||||
@@ -33,22 +33,19 @@ pub enum InnerError {
|
||||
#[snafu(display("PhysicalPlan downcast failed"))]
|
||||
PhysicalPlanDowncast { location: Location },
|
||||
|
||||
#[snafu(display("Fail to convert arrow schema, source: {}", source))]
|
||||
#[snafu(display("Fail to convert arrow schema"))]
|
||||
ConvertSchema {
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to convert DataFusion's recordbatch stream, source: {}",
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to convert DataFusion's recordbatch stream"))]
|
||||
ConvertDfRecordBatchStream {
|
||||
location: Location,
|
||||
source: common_recordbatch::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to execute physical plan, source: {}", source))]
|
||||
#[snafu(display("Failed to execute physical plan"))]
|
||||
ExecutePhysicalPlan {
|
||||
location: Location,
|
||||
source: common_query::error::Error,
|
||||
|
||||
@@ -35,7 +35,7 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("General catalog error: {}", source))]
|
||||
#[snafu(display("General catalog error"))]
|
||||
Catalog {
|
||||
source: catalog::error::Error,
|
||||
location: Location,
|
||||
@@ -50,37 +50,37 @@ pub enum Error {
|
||||
#[snafu(display("Table not found: {}", table))]
|
||||
TableNotFound { table: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to do vector computation, source: {}", source))]
|
||||
#[snafu(display("Failed to do vector computation"))]
|
||||
VectorComputation {
|
||||
source: datatypes::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to create RecordBatch, source: {}", source))]
|
||||
#[snafu(display("Failed to create RecordBatch"))]
|
||||
CreateRecordBatch {
|
||||
source: common_recordbatch::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to create Schema, source: {}", source))]
|
||||
#[snafu(display("Failed to create Schema"))]
|
||||
CreateSchema {
|
||||
source: datatypes::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failure during query execution, source: {}", source))]
|
||||
#[snafu(display("Failure during query execution"))]
|
||||
QueryExecution {
|
||||
source: BoxedError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failure during query planning, source: {}", source))]
|
||||
#[snafu(display("Failure during query planning"))]
|
||||
QueryPlan {
|
||||
source: BoxedError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failure during query parsing, query: {}, source: {}", query, source))]
|
||||
#[snafu(display("Failure during query parsing, query: {}", query))]
|
||||
QueryParse {
|
||||
query: String,
|
||||
source: BoxedError,
|
||||
@@ -97,45 +97,45 @@ pub enum Error {
|
||||
#[snafu(display("The SQL string has multiple statements, query: {}", query))]
|
||||
MultipleStatements { query: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to convert Datafusion schema: {}", source))]
|
||||
#[snafu(display("Failed to convert Datafusion schema"))]
|
||||
ConvertDatafusionSchema {
|
||||
source: datatypes::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse timestamp `{}`: {}", raw, source))]
|
||||
#[snafu(display("Failed to parse timestamp `{}`", raw))]
|
||||
ParseTimestamp {
|
||||
raw: String,
|
||||
source: chrono::ParseError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse float number `{}`: {}", raw, source))]
|
||||
#[snafu(display("Failed to parse float number `{}`", raw))]
|
||||
ParseFloat {
|
||||
raw: String,
|
||||
source: std::num::ParseFloatError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("DataFusion error: {}", source))]
|
||||
#[snafu(display("DataFusion error"))]
|
||||
DataFusion {
|
||||
source: DataFusionError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to encode Substrait logical plan, source: {}", source))]
|
||||
#[snafu(display("Failed to encode Substrait logical plan"))]
|
||||
EncodeSubstraitLogicalPlan {
|
||||
source: substrait::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("General SQL error: {}", source))]
|
||||
#[snafu(display("General SQL error"))]
|
||||
Sql {
|
||||
location: Location,
|
||||
source: sql::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Cannot plan SQL: {}, source: {}", sql, source))]
|
||||
#[snafu(display("Cannot plan SQL: {}", sql))]
|
||||
PlanSql {
|
||||
sql: String,
|
||||
source: DataFusionError,
|
||||
@@ -162,20 +162,20 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to route partition of table {}, source: {}", table, source))]
|
||||
#[snafu(display("Failed to route partition of table {}", table))]
|
||||
RoutePartition {
|
||||
table: TableName,
|
||||
source: partition::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse SQL, source: {}", source))]
|
||||
#[snafu(display("Failed to parse SQL"))]
|
||||
ParseSql {
|
||||
source: sql::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to request remote peer, source: {}", source))]
|
||||
#[snafu(display("Failed to request remote peer"))]
|
||||
RemoteRequest {
|
||||
source: client::Error,
|
||||
location: Location,
|
||||
@@ -191,49 +191,45 @@ pub enum Error {
|
||||
#[snafu(display("Missing required field: {}", name))]
|
||||
MissingRequiredField { name: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to regex, source: {}", source))]
|
||||
#[snafu(display("Failed to regex"))]
|
||||
BuildRegex {
|
||||
location: Location,
|
||||
source: regex::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build data source backend, source: {}", source))]
|
||||
#[snafu(display("Failed to build data source backend"))]
|
||||
BuildBackend {
|
||||
source: common_datasource::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to list objects, source: {}", source))]
|
||||
#[snafu(display("Failed to list objects"))]
|
||||
ListObjects {
|
||||
source: common_datasource::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse file format: {}", source))]
|
||||
#[snafu(display("Failed to parse file format"))]
|
||||
ParseFileFormat {
|
||||
source: common_datasource::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to infer schema: {}", source))]
|
||||
#[snafu(display("Failed to infer schema"))]
|
||||
InferSchema {
|
||||
source: common_datasource::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert datafusion schema, source: {}", source))]
|
||||
#[snafu(display("Failed to convert datafusion schema"))]
|
||||
ConvertSchema {
|
||||
source: datatypes::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
#[snafu(display("Unknown table type, downcast failed, location: {}", location))]
|
||||
#[snafu(display("Unknown table type, downcast failed"))]
|
||||
UnknownTable { location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Cannot find time index column in table {}, location: {}",
|
||||
table,
|
||||
location
|
||||
))]
|
||||
#[snafu(display("Cannot find time index column in table {}", table))]
|
||||
TimeIndexNotFound { table: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to add duration '{:?}' to SystemTime, overflowed", duration))]
|
||||
|
||||
@@ -27,25 +27,21 @@ pub enum Error {
|
||||
#[snafu(display("Scripts table not found"))]
|
||||
ScriptsTableNotFound { location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to insert script to scripts table, name: {}, source: {}",
|
||||
name,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to insert script to scripts table, name: {}", name))]
|
||||
InsertScript {
|
||||
name: String,
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to compile python script, name: {}, source: {}", name, source))]
|
||||
#[snafu(display("Failed to compile python script, name: {}", name))]
|
||||
CompilePython {
|
||||
name: String,
|
||||
location: Location,
|
||||
source: crate::python::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to execute python script {}, source: {}", name, source))]
|
||||
#[snafu(display("Failed to execute python script {}", name))]
|
||||
ExecutePython {
|
||||
name: String,
|
||||
location: Location,
|
||||
@@ -55,7 +51,7 @@ pub enum Error {
|
||||
#[snafu(display("Script not found, name: {}", name))]
|
||||
ScriptNotFound { location: Location, name: String },
|
||||
|
||||
#[snafu(display("Failed to collect record batch, source: {}", source))]
|
||||
#[snafu(display("Failed to collect record batch"))]
|
||||
CollectRecords {
|
||||
location: Location,
|
||||
source: common_recordbatch::error::Error,
|
||||
@@ -64,13 +60,13 @@ pub enum Error {
|
||||
#[snafu(display("Failed to cast type, msg: {}", msg))]
|
||||
CastType { msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to build DataFusion logical plan, source: {}", source))]
|
||||
#[snafu(display("Failed to build DataFusion logical plan"))]
|
||||
BuildDfLogicalPlan {
|
||||
source: datafusion_common::DataFusionError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to execute internal statement, source: {}", source))]
|
||||
#[snafu(display("Failed to execute internal statement"))]
|
||||
ExecuteInternalStatement {
|
||||
source: query::error::Error,
|
||||
location: Location,
|
||||
|
||||
@@ -34,25 +34,25 @@ pub(crate) fn ret_other_error_with(reason: String) -> OtherSnafu<String> {
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub(crate)))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Datatype error: {}", source))]
|
||||
#[snafu(display("Datatype error"))]
|
||||
TypeCast {
|
||||
location: SnafuLocation,
|
||||
source: DataTypeError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to query, source: {}", source))]
|
||||
#[snafu(display("Failed to query"))]
|
||||
DatabaseQuery {
|
||||
location: SnafuLocation,
|
||||
source: QueryError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse script, source: {}", source))]
|
||||
#[snafu(display("Failed to parse script"))]
|
||||
PyParse {
|
||||
location: SnafuLocation,
|
||||
source: ParseError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to compile script, source: {}", source))]
|
||||
#[snafu(display("Failed to compile script"))]
|
||||
PyCompile {
|
||||
location: SnafuLocation,
|
||||
source: CodegenError,
|
||||
@@ -65,13 +65,13 @@ pub enum Error {
|
||||
location: SnafuLocation,
|
||||
},
|
||||
|
||||
#[snafu(display("Arrow error: {}", source))]
|
||||
#[snafu(display("Arrow error"))]
|
||||
Arrow {
|
||||
location: SnafuLocation,
|
||||
source: ArrowError,
|
||||
},
|
||||
|
||||
#[snafu(display("DataFusion error: {}", source))]
|
||||
#[snafu(display("DataFusion error"))]
|
||||
DataFusion {
|
||||
location: SnafuLocation,
|
||||
source: DataFusionError,
|
||||
@@ -104,18 +104,18 @@ pub enum Error {
|
||||
location: SnafuLocation,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to retrieve record batches, source: {}", source))]
|
||||
#[snafu(display("Failed to retrieve record batches"))]
|
||||
RecordBatch {
|
||||
location: SnafuLocation,
|
||||
source: common_recordbatch::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to create record batch, source: {}", source))]
|
||||
#[snafu(display("Failed to create record batch"))]
|
||||
NewRecordBatch {
|
||||
location: SnafuLocation,
|
||||
source: common_recordbatch::error::Error,
|
||||
},
|
||||
#[snafu(display("Failed to create tokio task, source: {}", source))]
|
||||
#[snafu(display("Failed to create tokio task"))]
|
||||
TokioJoin { source: tokio::task::JoinError },
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ use common_telemetry::logging;
|
||||
use datatypes::prelude::ConcreteDataType;
|
||||
use query::parser::PromQuery;
|
||||
use serde_json::json;
|
||||
use snafu::{Location, Snafu};
|
||||
use snafu::{ErrorCompat, Location, Snafu};
|
||||
use tonic::Code;
|
||||
|
||||
#[derive(Debug, Snafu)]
|
||||
@@ -35,78 +35,78 @@ pub enum Error {
|
||||
#[snafu(display("Internal error: {}", err_msg))]
|
||||
Internal { err_msg: String },
|
||||
|
||||
#[snafu(display("Internal IO error, source: {}", source))]
|
||||
#[snafu(display("Internal IO error"))]
|
||||
InternalIo { source: std::io::Error },
|
||||
|
||||
#[snafu(display("Tokio IO error: {}, source: {}", err_msg, source))]
|
||||
#[snafu(display("Tokio IO error: {}", err_msg))]
|
||||
TokioIo {
|
||||
err_msg: String,
|
||||
source: std::io::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to collect recordbatch, source: {}", source))]
|
||||
#[snafu(display("Failed to collect recordbatch"))]
|
||||
CollectRecordbatch {
|
||||
location: Location,
|
||||
source: common_recordbatch::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to start HTTP server, source: {}", source))]
|
||||
#[snafu(display("Failed to start HTTP server"))]
|
||||
StartHttp { source: hyper::Error },
|
||||
|
||||
#[snafu(display("Failed to start gRPC server, source: {}", source))]
|
||||
#[snafu(display("Failed to start gRPC server"))]
|
||||
StartGrpc { source: tonic::transport::Error },
|
||||
|
||||
#[snafu(display("{} server is already started", server))]
|
||||
AlreadyStarted { server: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to bind address {}, source: {}", addr, source))]
|
||||
#[snafu(display("Failed to bind address {}", addr))]
|
||||
TcpBind {
|
||||
addr: SocketAddr,
|
||||
source: std::io::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to execute query, source: {}, query: {}", source, query))]
|
||||
#[snafu(display("Failed to execute query, query: {}", query))]
|
||||
ExecuteQuery {
|
||||
query: String,
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to execute plan, source: {}", source))]
|
||||
#[snafu(display("Failed to execute plan"))]
|
||||
ExecutePlan {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("{source}"))]
|
||||
#[snafu(display("Execute gRPC query error"))]
|
||||
ExecuteGrpcQuery {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("{source}"))]
|
||||
#[snafu(display("Execute gRPC request error"))]
|
||||
ExecuteGrpcRequest {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to check database validity, source: {}", source))]
|
||||
#[snafu(display("Failed to check database validity"))]
|
||||
CheckDatabaseValidity {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to describe statement, source: {}", source))]
|
||||
#[snafu(display("Failed to describe statement"))]
|
||||
DescribeStatement { source: BoxedError },
|
||||
|
||||
#[snafu(display("Failed to insert script with name: {}, source: {}", name, source))]
|
||||
#[snafu(display("Failed to insert script with name: {}", name))]
|
||||
InsertScript {
|
||||
name: String,
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to execute script by name: {}, source: {}", name, source))]
|
||||
#[snafu(display("Failed to execute script by name: {}", name))]
|
||||
ExecuteScript {
|
||||
name: String,
|
||||
location: Location,
|
||||
@@ -122,25 +122,25 @@ pub enum Error {
|
||||
#[snafu(display("Invalid query: {}", reason))]
|
||||
InvalidQuery { reason: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to parse InfluxDB line protocol, source: {}", source))]
|
||||
#[snafu(display("Failed to parse InfluxDB line protocol"))]
|
||||
InfluxdbLineProtocol {
|
||||
location: Location,
|
||||
source: influxdb_line_protocol::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to write InfluxDB line protocol, source: {}", source))]
|
||||
#[snafu(display("Failed to write InfluxDB line protocol"))]
|
||||
InfluxdbLinesWrite {
|
||||
location: Location,
|
||||
source: common_grpc::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to write prometheus series, source: {}", source))]
|
||||
#[snafu(display("Failed to write prometheus series"))]
|
||||
PromSeriesWrite {
|
||||
location: Location,
|
||||
source: common_grpc::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to write OTLP metrics, source: {}", source))]
|
||||
#[snafu(display("Failed to write OTLP metrics"))]
|
||||
OtlpMetricsWrite {
|
||||
location: Location,
|
||||
source: common_grpc::error::Error,
|
||||
@@ -152,34 +152,34 @@ pub enum Error {
|
||||
#[snafu(display("Connection reset by peer"))]
|
||||
ConnResetByPeer { location: Location },
|
||||
|
||||
#[snafu(display("Hyper error, source: {}", source))]
|
||||
#[snafu(display("Hyper error"))]
|
||||
Hyper { source: hyper::Error },
|
||||
|
||||
#[snafu(display("Invalid OpenTSDB line, source: {}", source))]
|
||||
#[snafu(display("Invalid OpenTSDB line"))]
|
||||
InvalidOpentsdbLine {
|
||||
source: FromUtf8Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Invalid OpenTSDB Json request, source: {}", source))]
|
||||
#[snafu(display("Invalid OpenTSDB Json request"))]
|
||||
InvalidOpentsdbJsonRequest {
|
||||
source: serde_json::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to decode prometheus remote request, source: {}", source))]
|
||||
#[snafu(display("Failed to decode prometheus remote request"))]
|
||||
DecodePromRemoteRequest {
|
||||
location: Location,
|
||||
source: prost::DecodeError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to decode OTLP request, source: {}", source))]
|
||||
#[snafu(display("Failed to decode OTLP request"))]
|
||||
DecodeOtlpRequest {
|
||||
location: Location,
|
||||
source: prost::DecodeError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to decompress prometheus remote request, source: {}", source))]
|
||||
#[snafu(display("Failed to decompress prometheus remote request"))]
|
||||
DecompressPromRemoteRequest {
|
||||
location: Location,
|
||||
source: snap::Error,
|
||||
@@ -191,7 +191,7 @@ pub enum Error {
|
||||
#[snafu(display("Invalid prometheus remote read query result, msg: {}", msg))]
|
||||
InvalidPromRemoteReadQueryResult { msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Invalid Flight ticket, source: {}", source))]
|
||||
#[snafu(display("Invalid Flight ticket"))]
|
||||
InvalidFlightTicket {
|
||||
source: api::DecodeError,
|
||||
location: Location,
|
||||
@@ -200,7 +200,7 @@ pub enum Error {
|
||||
#[snafu(display("Tls is required for {}, plain connection is rejected", server))]
|
||||
TlsRequired { server: String },
|
||||
|
||||
#[snafu(display("Failed to get user info, source: {}", source))]
|
||||
#[snafu(display("Failed to get user info"))]
|
||||
Auth {
|
||||
location: Location,
|
||||
source: auth::error::Error,
|
||||
@@ -212,7 +212,7 @@ pub enum Error {
|
||||
#[snafu(display("Not found influx http authorization info"))]
|
||||
NotFoundInfluxAuth {},
|
||||
|
||||
#[snafu(display("Invalid visibility ASCII chars, source: {}", source))]
|
||||
#[snafu(display("Invalid visibility ASCII chars"))]
|
||||
InvisibleASCII {
|
||||
source: hyper::header::ToStrError,
|
||||
location: Location,
|
||||
@@ -224,26 +224,26 @@ pub enum Error {
|
||||
#[snafu(display("Invalid http authorization header"))]
|
||||
InvalidAuthorizationHeader { location: Location },
|
||||
|
||||
#[snafu(display("Invalid base64 value, source: {:?}", source))]
|
||||
#[snafu(display("Invalid base64 value"))]
|
||||
InvalidBase64Value {
|
||||
source: DecodeError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Invalid utf-8 value, source: {:?}", source))]
|
||||
#[snafu(display("Invalid utf-8 value"))]
|
||||
InvalidUtf8Value {
|
||||
source: FromUtf8Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Error accessing catalog: {}", source))]
|
||||
#[snafu(display("Error accessing catalog"))]
|
||||
CatalogError { source: catalog::error::Error },
|
||||
|
||||
#[snafu(display("Cannot find requested database: {}-{}", catalog, schema))]
|
||||
DatabaseNotFound { catalog: String, schema: String },
|
||||
|
||||
#[cfg(feature = "mem-prof")]
|
||||
#[snafu(display("Failed to dump profile data, source: {}", source))]
|
||||
#[snafu(display("Failed to dump profile data"))]
|
||||
DumpProfileData {
|
||||
location: Location,
|
||||
source: common_mem_prof::error::Error,
|
||||
@@ -255,26 +255,26 @@ pub enum Error {
|
||||
#[snafu(display("Invalid flush argument: {}", err_msg))]
|
||||
InvalidFlushArgument { err_msg: String },
|
||||
|
||||
#[snafu(display("Failed to build gRPC reflection service, source: {}", source))]
|
||||
#[snafu(display("Failed to build gRPC reflection service"))]
|
||||
GrpcReflectionService {
|
||||
source: tonic_reflection::server::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build HTTP response, source: {source}"))]
|
||||
#[snafu(display("Failed to build HTTP response"))]
|
||||
BuildHttpResponse {
|
||||
source: http::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse PromQL: {query:?}, source: {source}"))]
|
||||
#[snafu(display("Failed to parse PromQL: {query:?}"))]
|
||||
ParsePromQL {
|
||||
query: PromQuery,
|
||||
location: Location,
|
||||
source: query::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to get param types, source: {source}"))]
|
||||
#[snafu(display("Failed to get param types"))]
|
||||
GetPreparedStmtParams {
|
||||
source: query::error::Error,
|
||||
location: Location,
|
||||
@@ -285,50 +285,44 @@ pub enum Error {
|
||||
|
||||
// this error is used for custom error mapping
|
||||
// please do not delete it
|
||||
#[snafu(display("Other error, source: {}", source))]
|
||||
#[snafu(display("Other error"))]
|
||||
Other {
|
||||
source: BoxedError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to join task, source: {}", source))]
|
||||
#[snafu(display("Failed to join task"))]
|
||||
JoinTask {
|
||||
source: tokio::task::JoinError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[cfg(feature = "pprof")]
|
||||
#[snafu(display("Failed to dump pprof data, source: {}", source))]
|
||||
#[snafu(display("Failed to dump pprof data"))]
|
||||
DumpPprof { source: common_pprof::Error },
|
||||
|
||||
#[snafu(display("{source}"))]
|
||||
#[snafu(display(""))]
|
||||
Metrics { source: BoxedError },
|
||||
|
||||
#[snafu(display("DataFrame operation error, source: {source}, location: {location}"))]
|
||||
#[snafu(display("DataFrame operation error"))]
|
||||
DataFrame {
|
||||
source: datafusion::error::DataFusionError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to replace params with values in prepared statement, source: {source}, location: {location}"
|
||||
))]
|
||||
#[snafu(display("Failed to replace params with values in prepared statement"))]
|
||||
ReplacePreparedStmtParams {
|
||||
source: query::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert scalar value, source: {source}, location: {location}"))]
|
||||
#[snafu(display("Failed to convert scalar value"))]
|
||||
ConvertScalarValue {
|
||||
source: datatypes::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Expected type: {:?}, actual: {:?}, location: {location}",
|
||||
expected,
|
||||
actual
|
||||
))]
|
||||
#[snafu(display("Expected type: {:?}, actual: {:?}", expected, actual))]
|
||||
PreparedStmtTypeMismatch {
|
||||
expected: ConcreteDataType,
|
||||
actual: opensrv_mysql::ColumnType,
|
||||
@@ -523,7 +517,8 @@ impl From<std::io::Error> for Error {
|
||||
|
||||
impl IntoResponse for Error {
|
||||
fn into_response(self) -> Response {
|
||||
let (status, error_message) = match self {
|
||||
let error_msg = self.iter_chain().last().unwrap().to_string();
|
||||
let status = match self {
|
||||
Error::InfluxdbLineProtocol { .. }
|
||||
| Error::InfluxdbLinesWrite { .. }
|
||||
| Error::PromSeriesWrite { .. }
|
||||
@@ -534,15 +529,15 @@ impl IntoResponse for Error {
|
||||
| Error::DecompressPromRemoteRequest { .. }
|
||||
| Error::InvalidPromRemoteRequest { .. }
|
||||
| Error::InvalidQuery { .. }
|
||||
| Error::TimePrecision { .. } => (HttpStatusCode::BAD_REQUEST, self.to_string()),
|
||||
| Error::TimePrecision { .. } => HttpStatusCode::BAD_REQUEST,
|
||||
_ => {
|
||||
logging::error!(self; "Failed to handle HTTP request");
|
||||
|
||||
(HttpStatusCode::INTERNAL_SERVER_ERROR, self.to_string())
|
||||
HttpStatusCode::INTERNAL_SERVER_ERROR
|
||||
}
|
||||
};
|
||||
let body = Json(json!({
|
||||
"error": error_message,
|
||||
"error": error_msg,
|
||||
}));
|
||||
(status, body).into_response()
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ use axum::{Extension, Json};
|
||||
use hyper::Body;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use session::context::QueryContextRef;
|
||||
use snafu::ResultExt;
|
||||
use snafu::{ErrorCompat, ResultExt};
|
||||
|
||||
use crate::error::{self, Error, Result};
|
||||
use crate::opentsdb::codec::DataPoint;
|
||||
@@ -160,7 +160,7 @@ impl OpentsdbDebuggingResponse {
|
||||
if let Some(details) = self.errors.as_mut() {
|
||||
let error = OpentsdbDetailError {
|
||||
datapoint,
|
||||
error: error.to_string(),
|
||||
error: error.iter_chain().last().unwrap().to_string(),
|
||||
};
|
||||
details.push(error);
|
||||
};
|
||||
@@ -169,6 +169,8 @@ impl OpentsdbDebuggingResponse {
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use snafu::ErrorCompat;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
@@ -227,17 +229,13 @@ mod test {
|
||||
let body = Body::from("");
|
||||
let result = parse_data_points(body).await;
|
||||
assert!(result.is_err());
|
||||
assert_eq!(
|
||||
result.unwrap_err().to_string(),
|
||||
"Invalid OpenTSDB Json request, source: EOF while parsing a value at line 1 column 0"
|
||||
);
|
||||
let err = result.unwrap_err().iter_chain().last().unwrap().to_string();
|
||||
assert!(err.contains("EOF while parsing a value at line 1 column 0"));
|
||||
|
||||
let body = Body::from("hello world");
|
||||
let result = parse_data_points(body).await;
|
||||
assert!(result.is_err());
|
||||
assert_eq!(
|
||||
result.unwrap_err().to_string(),
|
||||
"Invalid OpenTSDB Json request, source: expected value at line 1 column 1"
|
||||
);
|
||||
let err = result.unwrap_err().iter_chain().last().unwrap().to_string();
|
||||
assert!(err.contains("expected value at line 1 column 1"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,37 +22,25 @@ use snafu::{Location, ResultExt, Snafu};
|
||||
|
||||
#[derive(Debug, Snafu)]
|
||||
pub enum Error {
|
||||
#[snafu(display(
|
||||
"Failed to create profiler guard, source: {}, location: {}",
|
||||
source,
|
||||
location
|
||||
))]
|
||||
#[snafu(display("Failed to create profiler guard"))]
|
||||
CreateGuard {
|
||||
source: pprof::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to create report, source: {}, location: {}", source, location))]
|
||||
#[snafu(display("Failed to create report"))]
|
||||
CreateReport {
|
||||
source: pprof::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to create flamegraph, source: {}, location: {}",
|
||||
source,
|
||||
location
|
||||
))]
|
||||
#[snafu(display("Failed to create flamegraph"))]
|
||||
CreateFlamegraph {
|
||||
source: pprof::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to create pprof report, source: {}, location: {}",
|
||||
source,
|
||||
location
|
||||
))]
|
||||
#[snafu(display("Failed to create pprof report"))]
|
||||
ReportPprof {
|
||||
source: pprof::Error,
|
||||
location: Location,
|
||||
|
||||
@@ -21,7 +21,7 @@ use snafu::{Location, Snafu};
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Failed to update jemalloc metrics, source: {source}, location: {location}"))]
|
||||
#[snafu(display("Failed to update jemalloc metrics"))]
|
||||
UpdateJemallocMetrics {
|
||||
source: tikv_jemalloc_ctl::Error,
|
||||
location: Location,
|
||||
|
||||
@@ -116,6 +116,7 @@ mod tests {
|
||||
use std::io::Write;
|
||||
|
||||
use bytes::BufMut;
|
||||
use snafu::ErrorCompat;
|
||||
use tokio_test::io::Builder;
|
||||
|
||||
use super::*;
|
||||
@@ -186,10 +187,8 @@ mod tests {
|
||||
buffer.writer().write_all(b"Hello Wor\xffld.\r\n").unwrap();
|
||||
let result = conn.parse_line();
|
||||
assert!(result.is_err());
|
||||
assert!(result
|
||||
.unwrap_err()
|
||||
.to_string()
|
||||
.contains("Invalid OpenTSDB line, source: invalid utf-8 sequence"));
|
||||
let err = result.unwrap_err().iter_chain().last().unwrap().to_string();
|
||||
assert!(err.contains("invalid utf-8 sequence"));
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
||||
@@ -153,7 +153,7 @@ async fn test_opentsdb_put() {
|
||||
assert_eq!(result.status(), 400);
|
||||
assert_eq!(
|
||||
result.text().await,
|
||||
"{\"error\":\"Invalid OpenTSDB Json request, source: expected value at line 1 column 1\"}"
|
||||
"{\"error\":\"expected value at line 1 column 1\"}"
|
||||
);
|
||||
|
||||
// internal server error
|
||||
|
||||
@@ -36,11 +36,10 @@ pub enum Error {
|
||||
Unsupported { sql: String, keyword: String },
|
||||
|
||||
#[snafu(display(
|
||||
"Unexpected token while parsing SQL statement: {}, expected: '{}', found: {}, source: {}",
|
||||
"Unexpected token while parsing SQL statement: {}, expected: '{}', found: {}",
|
||||
sql,
|
||||
expected,
|
||||
actual,
|
||||
source
|
||||
))]
|
||||
Unexpected {
|
||||
sql: String,
|
||||
@@ -57,7 +56,7 @@ pub enum Error {
|
||||
UnsupportedDefaultValue { column_name: String, expr: Expr },
|
||||
|
||||
// Syntax error from sql parser.
|
||||
#[snafu(display("Syntax error, source: {}, sql: {}", source, sql))]
|
||||
#[snafu(display("Syntax error, sql: {}", sql))]
|
||||
Syntax { sql: String, source: ParserError },
|
||||
|
||||
#[snafu(display("Missing time index constraint"))]
|
||||
@@ -96,7 +95,7 @@ pub enum Error {
|
||||
#[snafu(display("Invalid table name: {}", name))]
|
||||
InvalidTableName { name: String },
|
||||
|
||||
#[snafu(display("Invalid default constraint, column: {}, source: {}", column, source))]
|
||||
#[snafu(display("Invalid default constraint, column: {}", column))]
|
||||
InvalidDefault {
|
||||
column: String,
|
||||
location: Location,
|
||||
@@ -114,16 +113,13 @@ pub enum Error {
|
||||
#[snafu(display("Invalid table option key: {}", key))]
|
||||
InvalidTableOption { key: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to serialize column default constraint, source: {}", source))]
|
||||
#[snafu(display("Failed to serialize column default constraint"))]
|
||||
SerializeColumnDefaultConstraint {
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to convert data type to gRPC data type defined in proto, source: {}",
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to convert data type to gRPC data type defined in proto"))]
|
||||
ConvertToGrpcDataType {
|
||||
location: Location,
|
||||
source: api::error::Error,
|
||||
|
||||
@@ -98,6 +98,7 @@ impl<'a> ParserContext<'a> {
|
||||
mod tests {
|
||||
use std::assert_matches::assert_matches;
|
||||
|
||||
use snafu::ErrorCompat;
|
||||
use sqlparser::ast::{ColumnOption, DataType};
|
||||
|
||||
use super::*;
|
||||
@@ -214,9 +215,8 @@ mod tests {
|
||||
fn test_parse_alter_drop_column() {
|
||||
let sql = "ALTER TABLE my_metric_1 DROP a";
|
||||
let result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {}).unwrap_err();
|
||||
assert!(result
|
||||
.to_string()
|
||||
.contains("expect keyword COLUMN after ALTER TABLE DROP"));
|
||||
let err = result.iter_chain().last().unwrap().to_string();
|
||||
assert!(err.contains("expect keyword COLUMN after ALTER TABLE DROP"));
|
||||
|
||||
let sql = "ALTER TABLE my_metric_1 DROP COLUMN a";
|
||||
let mut result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {}).unwrap();
|
||||
@@ -245,9 +245,8 @@ mod tests {
|
||||
fn test_parse_alter_rename_table() {
|
||||
let sql = "ALTER TABLE test_table table_t";
|
||||
let result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {}).unwrap_err();
|
||||
assert!(result
|
||||
.to_string()
|
||||
.contains("expect keyword ADD or DROP or RENAME after ALTER TABLE"));
|
||||
let err = result.iter_chain().last().unwrap().to_string();
|
||||
assert!(err.contains("expect keyword ADD or DROP or RENAME after ALTER TABLE"));
|
||||
|
||||
let sql = "ALTER TABLE test_table RENAME table_t";
|
||||
let mut result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {}).unwrap();
|
||||
|
||||
@@ -837,6 +837,7 @@ mod tests {
|
||||
use std::collections::HashMap;
|
||||
|
||||
use common_catalog::consts::FILE_ENGINE;
|
||||
use snafu::ErrorCompat;
|
||||
use sqlparser::ast::ColumnOption::NotNull;
|
||||
|
||||
use super::*;
|
||||
@@ -1400,6 +1401,9 @@ ENGINE=mito";
|
||||
let result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {});
|
||||
assert!(result
|
||||
.unwrap_err()
|
||||
.iter_chain()
|
||||
.last()
|
||||
.unwrap()
|
||||
.to_string()
|
||||
.contains("sql parser error: Expected BY, found: RANGE"));
|
||||
|
||||
@@ -1414,6 +1418,9 @@ ENGINE=mito";
|
||||
let result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {});
|
||||
assert!(result
|
||||
.unwrap_err()
|
||||
.iter_chain()
|
||||
.last()
|
||||
.unwrap()
|
||||
.to_string()
|
||||
.contains("sql parser error: Expected LESS, found: THAN"));
|
||||
|
||||
@@ -1428,6 +1435,9 @@ ENGINE=mito";
|
||||
let result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {});
|
||||
assert!(result
|
||||
.unwrap_err()
|
||||
.iter_chain()
|
||||
.last()
|
||||
.unwrap()
|
||||
.to_string()
|
||||
.contains("Expected a concrete value, found: MAXVALU"));
|
||||
}
|
||||
@@ -1537,10 +1547,8 @@ ENGINE=mito";
|
||||
fn test_invalid_column_name() {
|
||||
let sql = "create table foo(user string, i timestamp time index)";
|
||||
let result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {});
|
||||
assert!(result
|
||||
.unwrap_err()
|
||||
.to_string()
|
||||
.contains("Cannot use keyword 'user' as column name"));
|
||||
let err = result.unwrap_err().iter_chain().last().unwrap().to_string();
|
||||
assert!(err.contains("Cannot use keyword 'user' as column name"));
|
||||
|
||||
// If column name is quoted, it's valid even same with keyword.
|
||||
let sql = r#"
|
||||
|
||||
@@ -33,6 +33,8 @@ impl<'a> ParserContext<'a> {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use snafu::ErrorCompat;
|
||||
|
||||
use crate::dialect::GreptimeDbDialect;
|
||||
use crate::parser::ParserContext;
|
||||
|
||||
@@ -53,6 +55,9 @@ mod tests {
|
||||
assert!(result.is_err());
|
||||
assert!(result
|
||||
.unwrap_err()
|
||||
.iter_chain()
|
||||
.last()
|
||||
.unwrap()
|
||||
.to_string()
|
||||
.contains("Expected an expression"));
|
||||
}
|
||||
|
||||
@@ -166,6 +166,8 @@ impl<'a> ParserContext<'a> {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use snafu::ErrorCompat;
|
||||
|
||||
use super::*;
|
||||
use crate::dialect::GreptimeDbDialect;
|
||||
#[test]
|
||||
@@ -284,11 +286,21 @@ mod tests {
|
||||
// Invalid duration
|
||||
let sql = "TQL EVAL (1676887657, 1676887659, 1m) http_requests_total{environment=~'staging|testing|development',method!='GET'} @ 1609746000 offset 5m";
|
||||
let result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {}).unwrap_err();
|
||||
assert!(result.to_string().contains("Expected ), found: m"));
|
||||
assert!(result
|
||||
.iter_chain()
|
||||
.last()
|
||||
.unwrap()
|
||||
.to_string()
|
||||
.contains("Expected ), found: m"));
|
||||
|
||||
// missing end
|
||||
let sql = "TQL EVAL (1676887657, '1m') http_requests_total{environment=~'staging|testing|development',method!='GET'} @ 1609746000 offset 5m";
|
||||
let result = ParserContext::create_with_dialect(sql, &GreptimeDbDialect {}).unwrap_err();
|
||||
assert!(result.to_string().contains("Expected ,, found: )"));
|
||||
assert!(result
|
||||
.iter_chain()
|
||||
.last()
|
||||
.unwrap()
|
||||
.to_string()
|
||||
.contains("Expected ,, found: )"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ use crate::write_batch;
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Invalid region descriptor, region: {}, source: {}", region, source))]
|
||||
#[snafu(display("Invalid region descriptor, region: {}", region))]
|
||||
InvalidRegionDesc {
|
||||
region: String,
|
||||
location: Location,
|
||||
@@ -46,89 +46,79 @@ pub enum Error {
|
||||
#[snafu(display("Missing column {} in write batch", column))]
|
||||
BatchMissingColumn { column: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to write parquet file, source: {}", source))]
|
||||
#[snafu(display("Failed to write parquet file"))]
|
||||
WriteParquet {
|
||||
source: parquet::errors::ParquetError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to write to buffer, source: {}", source))]
|
||||
#[snafu(display("Failed to write to buffer"))]
|
||||
WriteBuffer {
|
||||
location: Location,
|
||||
source: common_datasource::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to create RecordBatch from vectors, source: {}", source))]
|
||||
#[snafu(display("Failed to create RecordBatch from vectors"))]
|
||||
NewRecordBatch {
|
||||
location: Location,
|
||||
source: ArrowError,
|
||||
},
|
||||
|
||||
#[snafu(display("Fail to read object from path: {}, source: {}", path, source))]
|
||||
#[snafu(display("Fail to read object from path: {}", path))]
|
||||
ReadObject {
|
||||
path: String,
|
||||
location: Location,
|
||||
source: object_store::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Fail to write object into path: {}, source: {}", path, source))]
|
||||
#[snafu(display("Fail to write object into path: {}", path))]
|
||||
WriteObject {
|
||||
path: String,
|
||||
location: Location,
|
||||
source: object_store::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Fail to delete object from path: {}, source: {}", path, source))]
|
||||
#[snafu(display("Fail to delete object from path: {}", path))]
|
||||
DeleteObject {
|
||||
path: String,
|
||||
location: Location,
|
||||
source: object_store::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Fail to compress object by {}, path: {}, source: {}",
|
||||
compress_type,
|
||||
path,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Fail to compress object by {}, path: {}", compress_type, path))]
|
||||
CompressObject {
|
||||
compress_type: CompressionType,
|
||||
path: String,
|
||||
source: std::io::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Fail to decompress object by {}, path: {}, source: {}",
|
||||
compress_type,
|
||||
path,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Fail to decompress object by {}, path: {}", compress_type, path))]
|
||||
DecompressObject {
|
||||
compress_type: CompressionType,
|
||||
path: String,
|
||||
source: std::io::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Fail to list objects in path: {}, source: {}", path, source))]
|
||||
#[snafu(display("Fail to list objects in path: {}", path))]
|
||||
ListObjects {
|
||||
path: String,
|
||||
location: Location,
|
||||
source: object_store::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Fail to create str from bytes, source: {}", source))]
|
||||
#[snafu(display("Fail to create str from bytes"))]
|
||||
Utf8 {
|
||||
location: Location,
|
||||
source: Utf8Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Fail to encode object into json , source: {}", source))]
|
||||
#[snafu(display("Fail to encode object into json "))]
|
||||
EncodeJson {
|
||||
location: Location,
|
||||
source: JsonError,
|
||||
},
|
||||
|
||||
#[snafu(display("Fail to decode object from json , source: {}", source))]
|
||||
#[snafu(display("Fail to decode object from json "))]
|
||||
DecodeJson {
|
||||
location: Location,
|
||||
source: JsonError,
|
||||
@@ -141,34 +131,26 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to write WAL, WAL region_id: {}, source: {}",
|
||||
region_id,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to write WAL, WAL region_id: {}", region_id))]
|
||||
WriteWal {
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to encode WAL header, source {}", source))]
|
||||
#[snafu(display("Failed to encode WAL header"))]
|
||||
EncodeWalHeader {
|
||||
location: Location,
|
||||
source: std::io::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to decode WAL header, source {}", source))]
|
||||
#[snafu(display("Failed to decode WAL header"))]
|
||||
DecodeWalHeader {
|
||||
location: Location,
|
||||
source: std::io::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to wait flushing, region_id: {}, source: {}",
|
||||
region_id,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to wait flushing, region_id: {}", region_id))]
|
||||
WaitFlush {
|
||||
region_id: RegionId,
|
||||
source: tokio::sync::oneshot::error::RecvError,
|
||||
@@ -200,10 +182,10 @@ pub enum Error {
|
||||
#[snafu(display("Failed to decode action list, {}", msg))]
|
||||
DecodeMetaActionList { msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to read line, err: {}", source))]
|
||||
#[snafu(display("Failed to read line, err"))]
|
||||
Readline { source: IoError },
|
||||
|
||||
#[snafu(display("Failed to read Parquet file: {}, source: {}", file, source))]
|
||||
#[snafu(display("Failed to read Parquet file: {}", file))]
|
||||
ReadParquet {
|
||||
file: String,
|
||||
source: parquet::errors::ParquetError,
|
||||
@@ -216,18 +198,14 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to read WAL, region_id: {}, source: {}", region_id, source))]
|
||||
#[snafu(display("Failed to read WAL, region_id: {}", region_id))]
|
||||
ReadWal {
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to mark WAL as obsolete, region id: {}, source: {}",
|
||||
region_id,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to mark WAL as obsolete, region id: {}", region_id))]
|
||||
MarkWalObsolete {
|
||||
region_id: u64,
|
||||
location: Location,
|
||||
@@ -241,11 +219,7 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to delete WAL namespace, region id: {}, source: {}",
|
||||
region_id,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to delete WAL namespace, region id: {}", region_id))]
|
||||
DeleteWalNamespace {
|
||||
region_id: RegionId,
|
||||
location: Location,
|
||||
@@ -263,14 +237,14 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert store schema, file: {}, source: {}", file, source))]
|
||||
#[snafu(display("Failed to convert store schema, file: {}", file))]
|
||||
ConvertStoreSchema {
|
||||
file: String,
|
||||
location: Location,
|
||||
source: MetadataError,
|
||||
},
|
||||
|
||||
#[snafu(display("Invalid raw region metadata, region: {}, source: {}", region, source))]
|
||||
#[snafu(display("Invalid raw region metadata, region: {}", region))]
|
||||
InvalidRawRegion {
|
||||
region: String,
|
||||
location: Location,
|
||||
@@ -280,13 +254,13 @@ pub enum Error {
|
||||
#[snafu(display("Try to write the closed region"))]
|
||||
ClosedRegion { location: Location },
|
||||
|
||||
#[snafu(display("Invalid projection, source: {}", source))]
|
||||
#[snafu(display("Invalid projection"))]
|
||||
InvalidProjection {
|
||||
location: Location,
|
||||
source: MetadataError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to push data to batch builder, source: {}", source))]
|
||||
#[snafu(display("Failed to push data to batch builder"))]
|
||||
PushBatch {
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
@@ -295,30 +269,26 @@ pub enum Error {
|
||||
#[snafu(display("Failed to build batch, {}", msg))]
|
||||
BuildBatch { msg: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to filter column {}, source: {}", name, source))]
|
||||
#[snafu(display("Failed to filter column {}", name))]
|
||||
FilterColumn {
|
||||
name: String,
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Invalid alter request, source: {}", source))]
|
||||
#[snafu(display("Invalid alter request"))]
|
||||
InvalidAlterRequest {
|
||||
location: Location,
|
||||
source: MetadataError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to alter metadata, source: {}", source))]
|
||||
#[snafu(display("Failed to alter metadata"))]
|
||||
AlterMetadata {
|
||||
location: Location,
|
||||
source: MetadataError,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to create default value for column {}, source: {}",
|
||||
name,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to create default value for column {}", name))]
|
||||
CreateDefault {
|
||||
name: String,
|
||||
location: Location,
|
||||
@@ -347,11 +317,7 @@ pub enum Error {
|
||||
#[snafu(display("Incompatible schema to read, reason: {}", reason))]
|
||||
CompatRead { reason: String, location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to read column {}, could not create default value, source: {}",
|
||||
column,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to read column {}, could not create default value", column))]
|
||||
CreateDefaultToRead {
|
||||
column: String,
|
||||
location: Location,
|
||||
@@ -361,11 +327,7 @@ pub enum Error {
|
||||
#[snafu(display("Failed to read column {}, no proper default value for it", column))]
|
||||
NoDefaultToRead { column: String, location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to convert arrow chunk to batch, name: {}, source: {}",
|
||||
name,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to convert arrow chunk to batch, name: {}", name))]
|
||||
ConvertChunk {
|
||||
name: String,
|
||||
location: Location,
|
||||
@@ -375,7 +337,7 @@ pub enum Error {
|
||||
#[snafu(display("Unknown column {}", name))]
|
||||
UnknownColumn { name: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to create record batch for write batch, source:{}", source))]
|
||||
#[snafu(display("Failed to create record batch for write batch"))]
|
||||
CreateRecordBatch {
|
||||
location: Location,
|
||||
source: common_recordbatch::error::Error,
|
||||
@@ -420,19 +382,19 @@ pub enum Error {
|
||||
#[snafu(display("Failed to decode write batch, corrupted data {}", message))]
|
||||
BatchCorrupted { message: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to decode arrow data, source: {}", source))]
|
||||
#[snafu(display("Failed to decode arrow data"))]
|
||||
DecodeArrow {
|
||||
location: Location,
|
||||
source: ArrowError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to encode arrow data, source: {}", source))]
|
||||
#[snafu(display("Failed to encode arrow data"))]
|
||||
EncodeArrow {
|
||||
location: Location,
|
||||
source: ArrowError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to parse schema, source: {}", source))]
|
||||
#[snafu(display("Failed to parse schema"))]
|
||||
ParseSchema {
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
@@ -450,31 +412,31 @@ pub enum Error {
|
||||
#[snafu(display("Cannot schedule request, scheduler's already stopped"))]
|
||||
IllegalSchedulerState { location: Location },
|
||||
|
||||
#[snafu(display("Failed to start manifest gc task: {}", source))]
|
||||
#[snafu(display("Failed to start manifest gc task"))]
|
||||
StartManifestGcTask {
|
||||
location: Location,
|
||||
source: RuntimeError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to stop manifest gc task: {}", source))]
|
||||
#[snafu(display("Failed to stop manifest gc task"))]
|
||||
StopManifestGcTask {
|
||||
location: Location,
|
||||
source: RuntimeError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to stop scheduler, source: {}", source))]
|
||||
#[snafu(display("Failed to stop scheduler"))]
|
||||
StopScheduler {
|
||||
source: JoinError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to delete SST file, source: {}", source))]
|
||||
#[snafu(display("Failed to delete SST file"))]
|
||||
DeleteSst {
|
||||
source: object_store::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to calculate SST expire time, source: {}", source))]
|
||||
#[snafu(display("Failed to calculate SST expire time"))]
|
||||
TtlCalculation {
|
||||
location: Location,
|
||||
source: common_time::error::Error,
|
||||
@@ -500,41 +462,37 @@ pub enum Error {
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to start picking task for flush: {}", source))]
|
||||
#[snafu(display("Failed to start picking task for flush"))]
|
||||
StartPickTask {
|
||||
location: Location,
|
||||
source: RuntimeError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to stop picking task for flush: {}", source))]
|
||||
#[snafu(display("Failed to stop picking task for flush"))]
|
||||
StopPickTask {
|
||||
location: Location,
|
||||
source: RuntimeError,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert columns to rows, source: {}", source))]
|
||||
#[snafu(display("Failed to convert columns to rows"))]
|
||||
ConvertColumnsToRows {
|
||||
source: ArrowError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to sort arrays, source: {}", source))]
|
||||
#[snafu(display("Failed to sort arrays"))]
|
||||
SortArrays {
|
||||
source: ArrowError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build scan predicate, source: {}", source))]
|
||||
#[snafu(display("Failed to build scan predicate"))]
|
||||
BuildPredicate {
|
||||
source: table::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to join spawned tasks, source: {}, location: {}",
|
||||
source,
|
||||
location
|
||||
))]
|
||||
#[snafu(display("Failed to join spawned tasks"))]
|
||||
JoinError {
|
||||
source: JoinError,
|
||||
location: Location,
|
||||
|
||||
@@ -50,7 +50,7 @@ pub enum Error {
|
||||
#[snafu(display("Column id {} already exists", id))]
|
||||
ColIdExists { id: ColumnId, location: Location },
|
||||
|
||||
#[snafu(display("Failed to build schema, source: {}", source))]
|
||||
#[snafu(display("Failed to build schema"))]
|
||||
InvalidSchema {
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
@@ -85,17 +85,13 @@ pub enum Error {
|
||||
DropInternalColumn { name: String },
|
||||
|
||||
// End of variants for validating `AlterRequest`.
|
||||
#[snafu(display("Failed to convert to column schema, source: {}", source))]
|
||||
#[snafu(display("Failed to convert to column schema"))]
|
||||
ToColumnSchema {
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to parse metadata to int, key_value: {}, source: {}",
|
||||
key_value,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to parse metadata to int, key_value: {}", key_value))]
|
||||
ParseMetaInt {
|
||||
// Store key and value in one string to reduce the enum size.
|
||||
key_value: String,
|
||||
@@ -106,13 +102,13 @@ pub enum Error {
|
||||
#[snafu(display("Metadata of {} not found", key))]
|
||||
MetaNotFound { key: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to build column descriptor, source: {}", source))]
|
||||
#[snafu(display("Failed to build column descriptor"))]
|
||||
BuildColumnDescriptor {
|
||||
source: ColumnDescriptorBuilderError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert from arrow schema, source: {}", source))]
|
||||
#[snafu(display("Failed to convert from arrow schema"))]
|
||||
ConvertArrowSchema {
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
@@ -121,18 +117,14 @@ pub enum Error {
|
||||
#[snafu(display("Invalid internal column index in arrow schema"))]
|
||||
InvalidIndex { location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to convert arrow chunk to batch, name: {}, source: {}",
|
||||
name,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to convert arrow chunk to batch, name: {}", name))]
|
||||
ConvertChunk {
|
||||
name: String,
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert schema, source: {}", source))]
|
||||
#[snafu(display("Failed to convert schema"))]
|
||||
ConvertSchema {
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
|
||||
@@ -21,17 +21,17 @@ use crate::storage::ColumnDescriptorBuilderError;
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Invalid raw region request: {err}, at {location}"))]
|
||||
#[snafu(display("Invalid raw region request: {err}"))]
|
||||
InvalidRawRegionRequest { err: String, location: Location },
|
||||
|
||||
#[snafu(display("Invalid default constraint: {constraint}, source: {source}, at {location}"))]
|
||||
#[snafu(display("Invalid default constraint: {constraint}"))]
|
||||
InvalidDefaultConstraint {
|
||||
constraint: String,
|
||||
source: datatypes::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build column descriptor: {source}, at {location}"))]
|
||||
#[snafu(display("Failed to build column descriptor: "))]
|
||||
BuildColumnDescriptor {
|
||||
source: ColumnDescriptorBuilderError,
|
||||
location: Location,
|
||||
|
||||
@@ -565,44 +565,31 @@ impl SkippedFields {
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum MetadataError {
|
||||
#[snafu(display("Invalid schema, source: {}, location: {}", source, location))]
|
||||
#[snafu(display("Invalid schema"))]
|
||||
InvalidSchema {
|
||||
source: datatypes::error::Error,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Invalid metadata, {}, location: {}", reason, location))]
|
||||
#[snafu(display("Invalid metadata, {}", reason))]
|
||||
InvalidMeta { reason: String, location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to ser/de json object. Location: {}, source: {}",
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to ser/de json object"))]
|
||||
SerdeJson {
|
||||
location: Location,
|
||||
source: serde_json::Error,
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to convert struct from datatypes, location: {}, source: {}",
|
||||
location,
|
||||
source
|
||||
))]
|
||||
#[snafu(display("Failed to convert struct from datatypes"))]
|
||||
ConvertDatatypes {
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
},
|
||||
|
||||
#[snafu(display("Invalid raw region request, err: {}, location: {}", err, location))]
|
||||
#[snafu(display("Invalid raw region request, err: {}", err))]
|
||||
InvalidRawRegionRequest { err: String, location: Location },
|
||||
|
||||
#[snafu(display(
|
||||
"Invalid region request, region_id: {}, err: {}, location: {}",
|
||||
region_id,
|
||||
err,
|
||||
location
|
||||
))]
|
||||
#[snafu(display("Invalid region request, region_id: {}, err: {}", region_id, err))]
|
||||
InvalidRegionRequest {
|
||||
region_id: RegionId,
|
||||
err: String,
|
||||
|
||||
@@ -28,13 +28,13 @@ pub type Result<T> = std::result::Result<T, Error>;
|
||||
#[derive(Debug, Snafu)]
|
||||
#[snafu(visibility(pub))]
|
||||
pub enum Error {
|
||||
#[snafu(display("Datafusion error: {}", source))]
|
||||
#[snafu(display("Datafusion error"))]
|
||||
Datafusion {
|
||||
source: DataFusionError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to convert Arrow schema, source: {}", source))]
|
||||
#[snafu(display("Failed to convert Arrow schema"))]
|
||||
SchemaConversion {
|
||||
source: datatypes::error::Error,
|
||||
location: Location,
|
||||
@@ -46,26 +46,26 @@ pub enum Error {
|
||||
#[snafu(display("Engine exist: {}", engine))]
|
||||
EngineExist { engine: String, location: Location },
|
||||
|
||||
#[snafu(display("Table projection error, source: {}", source))]
|
||||
#[snafu(display("Table projection error"))]
|
||||
TableProjection {
|
||||
source: ArrowError,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to create record batch for Tables, source: {}", source))]
|
||||
#[snafu(display("Failed to create record batch for Tables"))]
|
||||
TablesRecordBatch {
|
||||
location: Location,
|
||||
source: BoxedError,
|
||||
},
|
||||
|
||||
#[snafu(display("Column {column_name} already exists in table {table_name}, at {location}"))]
|
||||
#[snafu(display("Column {column_name} already exists in table {table_name}"))]
|
||||
ColumnExists {
|
||||
column_name: String,
|
||||
table_name: String,
|
||||
location: Location,
|
||||
},
|
||||
|
||||
#[snafu(display("Failed to build schema, msg: {}, source: {}", msg, source))]
|
||||
#[snafu(display("Failed to build schema, msg: {}", msg))]
|
||||
SchemaBuild {
|
||||
location: Location,
|
||||
source: datatypes::error::Error,
|
||||
@@ -94,10 +94,9 @@ pub enum Error {
|
||||
},
|
||||
|
||||
#[snafu(display(
|
||||
"Failed to build column descriptor for table: {}, column: {}, source: {}",
|
||||
"Failed to build column descriptor for table: {}, column: {}",
|
||||
table_name,
|
||||
column_name,
|
||||
source,
|
||||
))]
|
||||
BuildColumnDescriptor {
|
||||
source: store_api::storage::ColumnDescriptorBuilderError,
|
||||
@@ -109,7 +108,7 @@ pub enum Error {
|
||||
#[snafu(display("Regions schemas mismatch in table: {}", table))]
|
||||
RegionSchemaMismatch { table: String, location: Location },
|
||||
|
||||
#[snafu(display("Failed to operate table, source: {}", source))]
|
||||
#[snafu(display("Failed to operate table"))]
|
||||
TableOperation { source: BoxedError },
|
||||
|
||||
#[snafu(display("Unsupported operation: {}", operation))]
|
||||
|
||||
@@ -248,7 +248,8 @@ pub async fn test_sql_api(store_type: StorageType) {
|
||||
let body = serde_json::from_str::<JsonResponse>(&res.text().await).unwrap();
|
||||
assert!(!body.success());
|
||||
let _ = body.execution_time_ms().unwrap();
|
||||
assert!(body.error().unwrap().contains("Table not found"));
|
||||
// TODO(shuiyisong): fix this when return source err msg to client side
|
||||
// assert!(body.error().unwrap().contains("Table not found"));
|
||||
|
||||
// test database given
|
||||
let res = client
|
||||
|
||||
Reference in New Issue
Block a user