in atlas-postgres/src/main/scala/com/netflix/atlas/postgres/SqlUtils.scala [222:239]
private def toWhere(columns: List[String], query: Query): String = {
query match {
case Query.True => "TRUE"
case Query.False => "FALSE"
case Query.And(q1, q2) => s"(${toWhere(columns, q1)}) and (${toWhere(columns, q2)})"
case Query.Or(q1, q2) => s"(${toWhere(columns, q1)}) or (${toWhere(columns, q2)})"
case Query.Not(q) => s"not (${toWhere(columns, q)})"
case Query.HasKey(k) => s"${formatColumn(columns, k)} is not null"
case Query.Equal(k, v) => s"${formatColumn(columns, k)} = '${escapeLiteral(v)}'"
case Query.GreaterThan(k, v) => s"${formatColumn(columns, k)} > '${escapeLiteral(v)}'"
case Query.GreaterThanEqual(k, v) => s"${formatColumn(columns, k)} >= '${escapeLiteral(v)}'"
case Query.LessThan(k, v) => s"${formatColumn(columns, k)} < '${escapeLiteral(v)}'"
case Query.LessThanEqual(k, v) => s"${formatColumn(columns, k)} <= '${escapeLiteral(v)}'"
case r: Query.Regex => toRegexCondition(columns, r.k, r.pattern)
case r: Query.RegexIgnoreCase => toRegexIgnoreCaseCondition(columns, r.k, r.pattern)
case Query.In(k, vs) => toInCondition(columns, k, vs)
}
}