Github user cloud-fan commented on a diff in the pull request:

    https://github.com/apache/spark/pull/16762#discussion_r99748730
  
    --- Diff: 
sql/core/src/main/scala/org/apache/spark/sql/execution/joins/BroadcastNestedLoopJoinExec.scala
 ---
    @@ -339,6 +340,33 @@ case class BroadcastNestedLoopJoinExec(
         )
       }
     
    +  protected override def doPrepare(): Unit = {
    +    if (!sqlContext.conf.crossJoinEnabled) {
    +      joinType match {
    +        case Cross => // Do nothing
    +        case Inner =>
    +          if (condition.isEmpty) {
    +            throw new AnalysisException(
    +              s"""Detected cartesian product for INNER join between 
logical plans
    +                 |${left.treeString(false).trim}
    +                 |and
    +                 |${right.treeString(false).trim}
    +                 |Join condition is missing or trivial.
    +                 |Use the CROSS JOIN syntax to allow cartesian products 
between these relations.
    +               """.stripMargin)
    +          }
    +        case _ if !withinBroadcastThreshold || condition.isEmpty =>
    +          throw new AnalysisException(
    +            s"""Both sides of this join are outside the broadcasting 
threshold and
    +               |computing it could be prohibitively expensive. To 
explicitly enable it,
    +               |Please set ${SQLConf.CROSS_JOINS_ENABLED.key} = true.
    --- End diff --
    
    shall we support `CROSS OUTER JOIN`, `CROSS LEFT JOIN`, etc?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to