def isConvertibleToSolr()

in connector/src/main/scala/org/apache/spark/sql/cassandra/SolrPredicateRules.scala [170:201]


  def isConvertibleToSolr(filter: Filter, indexedCols: Set[String]): Boolean = filter match {
    case EqualTo(attr: String, value: Any) => indexedCols.contains(sanitizeSolrField(attr))
    case EqualNullSafe(attr: String, value: Any) => indexedCols.contains(sanitizeSolrField(attr))
    case In(attr: String, values: Array[Any]) => indexedCols.contains(sanitizeSolrField(attr))

    //Range Queries
    case GreaterThan(attr: String, value: Any) => indexedCols.contains(sanitizeSolrField(attr))
    case GreaterThanOrEqual(attr: String, value: Any) => indexedCols.contains(sanitizeSolrField(attr))
    case LessThan(attr: String, value: Any) => indexedCols.contains(sanitizeSolrField(attr))
    case LessThanOrEqual(attr: String, value: Any) => indexedCols.contains(sanitizeSolrField(attr))

    //Null Checks
    case IsNull(attr: String) => indexedCols.contains(sanitizeSolrField(attr))
    case IsNotNull(attr: String) => indexedCols.contains(sanitizeSolrField(attr))

    //Conjunctions
    case And(left: Filter, right: Filter) =>
      isConvertibleToSolr(left, indexedCols) && isConvertibleToSolr(right, indexedCols)
    case Or(left: Filter, right: Filter) =>
      isConvertibleToSolr(left, indexedCols) && isConvertibleToSolr(right, indexedCols)
    case Not(child: Filter) => isConvertibleToSolr(child, indexedCols)

    //StringMatching
    case StringStartsWith(attr: String, value: String) => indexedCols.contains(sanitizeSolrField(attr))
    case StringEndsWith(attr: String, value: String) => indexedCols.contains(sanitizeSolrField(attr))
    case StringContains(attr: String, value: String) => indexedCols.contains(sanitizeSolrField(attr))

    //Unknown
    case unknownFilter =>
      logError(s"Unknown Filter Type $unknownFilter")
      false
  }