59 lines
1.9 KiB
Rust
59 lines
1.9 KiB
Rust
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 == '$')
|
|
}
|