use serde::{Deserialize, Serialize};
use std::fmt;
pub mod core;
pub mod projection;
pub mod schema;
pub mod validator;
pub mod backward_compat;
pub use backward_compat::*;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ExprDataType {
Boolean,
Integer,
Float,
String,
Date,
Timestamp,
}
impl fmt::Display for ExprDataType {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Boolean => write!(f, "BOOLEAN"),
Self::Integer => write!(f, "BIGINT"),
Self::Float => write!(f, "DOUBLE"),
Self::String => write!(f, "VARCHAR"),
Self::Date => write!(f, "DATE"),
Self::Timestamp => write!(f, "TIMESTAMP"),
}
}
}
pub use self::core::{BinaryOperator, Expr, Literal, UnaryOperator};
pub use self::projection::{ColumnProjection, ProjectionExt, UdfDefinition};
pub use self::schema::{ColumnMeta, ExprSchema};
pub use self::validator::{ExprValidator, InferredType};