in exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/statements/api/IdentifierManagerApi.kt [98:119]
fun shouldQuoteIdentifier(identity: String): Boolean {
// When preserveIdentifierCasing is enabled, bypass cache to ensure correct behavior
if (shouldPreserveIdentifierCasing) {
return !identity.isAlreadyQuoted()
}
return shouldQuoteIdentifiersCache.getOrPut(identity) {
val alreadyQuoted = identity.isAlreadyQuoted()
val alreadyLower = identity == identity.lowercase()
val alreadyUpper = identity == identity.uppercase()
when {
alreadyQuoted -> false
identity.isAKeyword() && shouldPreserveKeywordCasing -> true
supportsMixedIdentifiers -> false
alreadyLower && isLowerCaseIdentifiers -> false
alreadyUpper && isUpperCaseIdentifiers -> false
oracleVersion != OracleVersion.NonOracle -> false
supportsMixedQuotedIdentifiers && (!alreadyLower && !alreadyUpper) -> true
else -> false
}
}
}