in connectors/spark-tsfile/src/main/scala/org/apache/iotdb/spark/tsfile/WideConverter.scala [235:294]
private def transformFilter(schema: StructType, node: Filter): IExpression = {
var filter: IExpression = null
node match {
case node: Not =>
throw new Exception("NOT filter is not supported now")
case node: And =>
filter = BinaryExpression.and(transformFilter(schema, node.left), transformFilter(schema,
node.right))
filter
case node: Or =>
filter = BinaryExpression.or(transformFilter(schema, node.left), transformFilter(schema,
node.right))
filter
case node: EqualTo =>
if (QueryConstant.RESERVED_TIME.equals(node.attribute.toLowerCase())) {
filter = new GlobalTimeExpression(TimeFilterApi.eq(node.value.asInstanceOf[java.lang.Long]))
} else {
filter = constructFilter(schema, node.attribute, node.value, FilterTypes.Eq)
}
filter
case node: LessThan =>
if (QueryConstant.RESERVED_TIME.equals(node.attribute.toLowerCase())) {
filter = new GlobalTimeExpression(TimeFilterApi.lt(node.value.asInstanceOf[java.lang.Long]))
} else {
filter = constructFilter(schema, node.attribute, node.value, FilterTypes.Lt)
}
filter
case node: LessThanOrEqual =>
if (QueryConstant.RESERVED_TIME.equals(node.attribute.toLowerCase())) {
filter = new GlobalTimeExpression(TimeFilterApi.ltEq(node.value.asInstanceOf[java.lang.Long]))
} else {
filter = constructFilter(schema, node.attribute, node.value, FilterTypes.LtEq)
}
filter
case node: GreaterThan =>
if (QueryConstant.RESERVED_TIME.equals(node.attribute.toLowerCase())) {
filter = new GlobalTimeExpression(TimeFilterApi.gt(node.value.asInstanceOf[java.lang.Long]))
} else {
filter = constructFilter(schema, node.attribute, node.value, FilterTypes.Gt)
}
filter
case node: GreaterThanOrEqual =>
if (QueryConstant.RESERVED_TIME.equals(node.attribute.toLowerCase())) {
filter = new GlobalTimeExpression(TimeFilterApi.gtEq(node.value.asInstanceOf[java.lang.Long]))
} else {
filter = constructFilter(schema, node.attribute, node.value, FilterTypes.GtEq)
}
filter
case other =>
throw new Exception(s"Unsupported filter $other")
}
}