1#![deny(missing_docs)]
4#![warn(clippy::all, clippy::pedantic)]
5#![allow(clippy::duration_suboptimal_units)] #![allow(clippy::module_name_repetitions)]
7#![allow(clippy::too_many_arguments, clippy::too_many_lines)] #![allow(clippy::disallowed_types)] #![allow(clippy::doc_markdown)]
10#![allow(clippy::uninlined_format_args)]
11
12pub mod datafusion;
13pub mod error;
14pub mod parser;
15pub mod planner;
16pub mod temporal;
17pub mod translator;
18
19pub use parser::{parse_streaming_sql, StreamingStatement};
21pub use planner::streaming_optimizer::{StreamingPhysicalValidator, StreamingValidatorMode};
22pub use planner::StreamingPlanner;
23pub use translator::{OrderOperatorConfig, WindowOperatorConfig, WindowType};
24
25pub use datafusion::execute::execute_streaming_sql;
27pub use datafusion::{
28 base_session_config, create_session_context, create_streaming_context_with_validator,
29 register_streaming_functions, register_streaming_functions_with_watermark, DdlResult,
30 QueryResult, StreamingSqlResult,
31};
32
33pub type Result<T> = std::result::Result<T, Error>;
35
36#[derive(Debug, thiserror::Error)]
38pub enum Error {
39 ParseError(#[from] parser::ParseError),
41
42 PlanningError(#[from] planner::PlanningError),
44
45 DataFusionError(#[from] datafusion_common::DataFusionError),
47
48 UnsupportedFeature(String),
50}
51
52impl std::fmt::Display for Error {
53 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
54 match self {
55 Self::ParseError(e) => write!(f, "SQL parse error: {e}"),
56 Self::PlanningError(e) => write!(f, "Planning error: {e}"),
57 Self::DataFusionError(e) => {
58 let translated = error::translate_datafusion_error(&e.to_string());
59 write!(f, "{translated}")
60 }
61 Self::UnsupportedFeature(msg) => {
62 write!(f, "Unsupported feature: {msg}")
63 }
64 }
65 }
66}