diff --git a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/querytest/GeneratedSubquerySuite.scala b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/querytest/GeneratedSubquerySuite.scala index 015898b70b7c5..fd3dafdda4996 100644 --- a/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/querytest/GeneratedSubquerySuite.scala +++ b/connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/querytest/GeneratedSubquerySuite.scala @@ -182,8 +182,11 @@ class GeneratedSubquerySuite extends DockerJDBCIntegrationSuite with QueryGenera } else { Seq() } - val isScalarSubquery = Seq(SubqueryType.ATTRIBUTE, SubqueryType.SCALAR_PREDICATE_EQUALS, - SubqueryType.SCALAR_PREDICATE_LESS_THAN).contains(subqueryType) + val isScalarSubquery = Seq(SubqueryType.ATTRIBUTE, + SubqueryType.SCALAR_PREDICATE_EQUALS, SubqueryType.SCALAR_PREDICATE_NOT_EQUALS, + SubqueryType.SCALAR_PREDICATE_LESS_THAN, SubqueryType.SCALAR_PREDICATE_LESS_THAN_OR_EQUALS, + SubqueryType.SCALAR_PREDICATE_GREATER_THAN, + SubqueryType.SCALAR_PREDICATE_GREATER_THAN_OR_EQUALS).contains(subqueryType) val subqueryOrganization = generateSubquery( innerTable, correlationConditions, isDistinct, operatorInSubquery, isScalarSubquery) @@ -218,8 +221,16 @@ class GeneratedSubquerySuite extends DockerJDBCIntegrationSuite with QueryGenera val whereClausePredicate = subqueryType match { case SubqueryType.SCALAR_PREDICATE_EQUALS => Equals(expr, Subquery(subqueryOrganization)) + case SubqueryType.SCALAR_PREDICATE_NOT_EQUALS => + NotEquals(expr, Subquery(subqueryOrganization)) case SubqueryType.SCALAR_PREDICATE_LESS_THAN => LessThan(expr, Subquery(subqueryOrganization)) + case SubqueryType.SCALAR_PREDICATE_LESS_THAN_OR_EQUALS => + LessThanOrEquals(expr, Subquery(subqueryOrganization)) + case SubqueryType.SCALAR_PREDICATE_GREATER_THAN => + GreaterThan(expr, Subquery(subqueryOrganization)) + case SubqueryType.SCALAR_PREDICATE_GREATER_THAN_OR_EQUALS => + GreaterThanOrEquals(expr, Subquery(subqueryOrganization)) case SubqueryType.EXISTS => Exists(subqueryOrganization) case SubqueryType.NOT_EXISTS => Not(Exists(subqueryOrganization)) case SubqueryType.IN => In(expr, subqueryOrganization) @@ -294,7 +305,11 @@ class GeneratedSubquerySuite extends DockerJDBCIntegrationSuite with QueryGenera case SubqueryLocation.FROM => Seq(SubqueryType.RELATION) case SubqueryLocation.WHERE => Seq( SubqueryType.SCALAR_PREDICATE_LESS_THAN, + SubqueryType.SCALAR_PREDICATE_LESS_THAN_OR_EQUALS, + SubqueryType.SCALAR_PREDICATE_GREATER_THAN, + SubqueryType.SCALAR_PREDICATE_GREATER_THAN_OR_EQUALS, SubqueryType.SCALAR_PREDICATE_EQUALS, + SubqueryType.SCALAR_PREDICATE_NOT_EQUALS, SubqueryType.IN, SubqueryType.NOT_IN, SubqueryType.EXISTS, diff --git a/sql/core/src/test/scala/org/apache/spark/sql/QueryGeneratorHelper.scala b/sql/core/src/test/scala/org/apache/spark/sql/QueryGeneratorHelper.scala index a17f3a353569f..8e780b3ef70f9 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/QueryGeneratorHelper.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/QueryGeneratorHelper.scala @@ -82,9 +82,22 @@ trait QueryGeneratorHelper { case class Equals(expr: Expression, rightSideExpr: Expression) extends Predicate { override def toString: String = f"$expr = $rightSideExpr" } + case class NotEquals(expr: Expression, rightSideExpr: Expression) extends Predicate { + override def toString: String = f"$expr <> $rightSideExpr" + } case class LessThan(expr: Expression, rightSideExpr: Expression) extends Predicate { override def toString: String = f"$expr < $rightSideExpr" } + case class LessThanOrEquals(expr: Expression, rightSideExpr: Expression) extends Predicate { + override def toString: String = f"$expr <= $rightSideExpr" + } + case class GreaterThan(expr: Expression, rightSideExpr: Expression) extends Predicate { + override def toString: String = f"$expr > $rightSideExpr" + } + case class GreaterThanOrEquals(expr: Expression, rightSideExpr: Expression) extends Predicate { + override def toString: String = f"$expr >= $rightSideExpr" + } + case class In(expr: Expression, inner: Operator) extends Predicate { override def toString: String = f"$expr IN ($inner)" @@ -96,7 +109,10 @@ trait QueryGeneratorHelper { // Subquery to be treated as a Relation. val RELATION = Value // Subquery is a Predicate - types of predicate subqueries. - val SCALAR_PREDICATE_EQUALS, SCALAR_PREDICATE_LESS_THAN, IN, NOT_IN, EXISTS, NOT_EXISTS = Value + val SCALAR_PREDICATE_EQUALS, SCALAR_PREDICATE_NOT_EQUALS, + SCALAR_PREDICATE_LESS_THAN, SCALAR_PREDICATE_LESS_THAN_OR_EQUALS, + SCALAR_PREDICATE_GREATER_THAN, SCALAR_PREDICATE_GREATER_THAN_OR_EQUALS, + IN, NOT_IN, EXISTS, NOT_EXISTS = Value } trait SubqueryExpression extends Expression {