use crate::models::connection::DatabaseType; pub fn is_schema_aware(database_type: DatabaseType) -> bool { matches!( database_type, DatabaseType::Postgres | DatabaseType::SqlServer | DatabaseType::Oracle | DatabaseType::Redshift | DatabaseType::Dameng | DatabaseType::Gaussdb | DatabaseType::Kwdb | DatabaseType::Kingbase | DatabaseType::Highgo | DatabaseType::Vastbase | DatabaseType::Yashandb | DatabaseType::Databricks | DatabaseType::SapHana | DatabaseType::Teradata | DatabaseType::Vertica | DatabaseType::Exasol | DatabaseType::OpenGauss | DatabaseType::OceanbaseOracle | DatabaseType::Gbase | DatabaseType::Databend | DatabaseType::Jdbc | DatabaseType::H2 | DatabaseType::Snowflake | DatabaseType::Trino | DatabaseType::Hive | DatabaseType::Db2 | DatabaseType::Tdengine | DatabaseType::DuckDb | DatabaseType::Iris ) } pub fn uses_fetch_first(database_type: DatabaseType) -> bool { matches!(database_type, DatabaseType::Oracle | DatabaseType::Dameng | DatabaseType::Db2) } pub(super) fn is_simple_informix_identifier(name: &str) -> bool { let mut chars = name.chars(); let Some(first) = chars.next() else { return false; }; (first.is_ascii_alphabetic() || first == '_') && chars.all(|ch| ch.is_ascii_alphanumeric() || ch == '_' || ch == '$') } pub(super) fn is_simple_jdbc_identifier(name: &str) -> bool { let mut chars = name.chars(); let Some(first) = chars.next() else { return false; }; (first.is_ascii_alphabetic() || first == '_') && chars.all(|ch| ch.is_ascii_alphanumeric() || ch == '_' || ch == '$') }