Github user dilipbiswal commented on a diff in the pull request:

    https://github.com/apache/spark/pull/21857#discussion_r205667472
  
    --- Diff: sql/core/src/test/resources/sql-tests/inputs/except-all.sql ---
    @@ -0,0 +1,146 @@
    +CREATE TEMPORARY VIEW tab1 AS SELECT * FROM VALUES
    +    (0), (1), (2), (2), (2), (2), (3), (null), (null) AS tab1(c1);
    +CREATE TEMPORARY VIEW tab2 AS SELECT * FROM VALUES
    +    (1), (2), (2), (3), (5), (5), (null) AS tab2(c1);
    +CREATE TEMPORARY VIEW tab3 AS SELECT * FROM VALUES
    +    (1, 2), 
    +    (1, 2),
    +    (1, 3),
    +    (2, 3),
    +    (2, 2)
    +    AS tab3(k, v);
    +CREATE TEMPORARY VIEW tab4 AS SELECT * FROM VALUES
    +    (1, 2), 
    +    (2, 3),
    +    (2, 2),
    +    (2, 2),
    +    (2, 20)
    +    AS tab4(k, v);
    +
    +-- Basic ExceptAll
    +SELECT * FROM tab1
    +EXCEPT ALL
    +SELECT * FROM tab2;
    +
    +-- ExceptAll same table in both branches
    +SELECT * FROM tab1
    +EXCEPT ALL
    +SELECT * FROM tab2 WHERE c1 IS NOT NULL;
    +
    +-- Empty left relation
    +SELECT * FROM tab1 WHERE c1 > 5
    +EXCEPT ALL
    +SELECT * FROM tab2;
    +
    +-- Empty right relation
    +SELECT * FROM tab1
    +EXCEPT ALL
    +SELECT * FROM tab2 WHERE c1 > 6;
    +
    +-- Type Coerced ExceptAll
    +SELECT * FROM tab1
    +EXCEPT ALL
    +SELECT CAST(1 AS BIGINT);
    +
    +-- Error as types of two side are not compatible
    +SELECT * FROM tab1
    +EXCEPT ALL
    +SELECT array(1);
    +
    +-- Basic
    +SELECT * FROM tab3
    +EXCEPT ALL
    +SELECT * FROM tab4;
    +
    +-- Basic
    +SELECT * FROM tab4
    +EXCEPT ALL
    +SELECT * FROM tab3;
    +
    +-- ExceptAll + Intersect
    +SELECT * FROM tab4
    +EXCEPT ALL
    +SELECT * FROM tab3
    +INTERSECT DISTINCT
    +SELECT * FROM tab4;
    +
    +-- ExceptAll + Except
    +SELECT * FROM tab4
    +EXCEPT ALL
    +SELECT * FROM tab3
    +EXCEPT DISTINCT
    +SELECT * FROM tab4;
    +
    +-- Chain of set operations
    +SELECT * FROM tab3
    +EXCEPT ALL
    +SELECT * FROM tab4
    +UNION ALL
    +SELECT * FROM tab3
    +EXCEPT DISTINCT
    +SELECT * FROM tab4;
    +
    +-- Mismatch on number of columns across both branches
    +SELECT k FROM tab3
    +EXCEPT ALL
    +SELECT k, v FROM tab4;
    +
    +-- Chain of set operations
    +SELECT * FROM tab3
    +EXCEPT ALL
    +SELECT * FROM tab4
    +UNION
    +SELECT * FROM tab3
    +EXCEPT DISTINCT
    +SELECT * FROM tab4;
    +
    +-- Chain of set operations
    +SELECT * FROM tab3
    +EXCEPT ALL
    +SELECT * FROM tab4
    +EXCEPT DISTINCT
    +SELECT * FROM tab3
    +EXCEPT DISTINCT
    +SELECT * FROM tab4;
    +
    +-- Join under except all. Should produce empty resultset since both left 
and right sets 
    +-- are same.
    +SELECT * 
    +FROM   (SELECT tab3.k, 
    +               tab4.v 
    +        FROM   tab3 
    +               JOIN tab4 
    +                 ON tab3.k = tab4.k)
    +EXCEPT ALL 
    +SELECT * 
    +FROM   (SELECT tab3.k, 
    +               tab4.v 
    +        FROM   tab3 
    +               JOIN tab4 
    +                 ON tab3.k = tab4.k);
    +
    +-- Join under except all (2)
    +SELECT * 
    +FROM   (SELECT tab3.k, 
    +               tab4.v 
    +        FROM   tab3 
    +               JOIN tab4 
    +                 ON tab3.k = tab4.k) 
    +EXCEPT ALL 
    +SELECT * 
    +FROM   (SELECT tab4.v AS k, 
    +               tab3.k AS v 
    +        FROM   tab3 
    +               JOIN tab4 
    +                 ON tab3.k = tab4.k);
    +
    +-- Group by under ExceptAll
    +SELECT v FROM tab3 GROUP BY v
    +EXCEPT ALL
    +SELECT k FROM tab4 GROUP BY k 
    --- End diff --
    
    @gatorsmile Thank you. fixed.


---

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

Reply via email to