def parseExpression()

in tools/bigquery-hive-external-table-loader/src/main/scala/com/google/cloud/bqhiveloader/PartitionFilters.scala [109:146]


  def parseExpression(expr: String): Option[FilterExpression] = {
    if (expr.contains("<=")) {
      expr.split("<=").map(_.trim) match {
        case Array(l,r) => Option(LessThanOrEq(l, r))
        case _ => None
      }
    } else if (expr.contains(">=")) {
      expr.split(">=").map(_.trim) match {
        case Array(l,r) => Option(GreaterThanOrEq(l, r))
        case _ => None
      }
    } else if (expr.contains('=')) {
      expr.split('=').map(_.trim) match {
        case Array(l,r) => Option(Equals(l, r))
        case _ => None
      }
    } else if (expr.contains('<')) {
      expr.split('<').map(_.trim) match {
        case Array(l,r) => Option(LessThan(l, r))
        case _ => None
      }
    } else if (expr.contains('>')) {
      expr.split('>').map(_.trim) match {
        case Array(l,r) => Option(GreaterThan(l, r))
        case _ => None
      }
    } else if (expr.contains(" IN ")) {
      expr.split(" IN ").map(_.trim) match {
        case Array(l,r) =>
          val set = r.stripPrefix("(").stripSuffix(")")
            .split(',').map(_.trim).toSet
          Option(In(l, set))
        case _ => None
      }
    } else if (expr.trim == "*") {
      Option(MatchAll)
    } else None
  }