@@ -2856,6 +2856,59 @@ class SQLQuerySuite extends QueryTest with SharedSQLContext {
28562856 checkAnswer(sql(" select 26393499451 / (1e6 * 1000)" ), Row (BigDecimal (" 26.3934994510000" )))
28572857 }
28582858 }
2859+
2860+ test(" self join with aliases on partitioned tables #1" ) {
2861+ withTempView(" tmpView1" , " tmpView2" ) {
2862+ withTable(" tab1" , " tab2" ) {
2863+ sql(
2864+ """
2865+ |CREATE TABLE `tab1` (`col1` INT, `TDATE` DATE)
2866+ |USING CSV
2867+ |PARTITIONED BY (TDATE)
2868+ """ .stripMargin)
2869+ spark.table(" tab1" ).where(" TDATE >= '2017-08-15'" ).createOrReplaceTempView(" tmpView1" )
2870+ sql(" CREATE TABLE `tab2` (`TDATE` DATE) USING parquet" )
2871+ sql(
2872+ """
2873+ |CREATE OR REPLACE TEMPORARY VIEW tmpView2 AS
2874+ |SELECT N.tdate, col1 AS aliasCol1
2875+ |FROM tmpView1 N
2876+ |JOIN tab2 Z
2877+ |ON N.tdate = Z.tdate
2878+ """ .stripMargin)
2879+ withSQLConf(SQLConf .AUTO_BROADCASTJOIN_THRESHOLD .key -> " 0" ) {
2880+ sql(" SELECT * FROM tmpView2 x JOIN tmpView2 y ON x.tdate = y.tdate" ).collect()
2881+ }
2882+ }
2883+ }
2884+ }
2885+
2886+ test(" self join with aliases on partitioned tables #2" ) {
2887+ withTempView(" tmp" ) {
2888+ withTable(" tab1" , " tab2" ) {
2889+ sql(
2890+ """
2891+ |CREATE TABLE `tab1` (`EX` STRING, `TDATE` DATE)
2892+ |USING parquet
2893+ |PARTITIONED BY (tdate)
2894+ """ .stripMargin)
2895+ sql(" CREATE TABLE `tab2` (`TDATE` DATE) USING parquet" )
2896+ sql(
2897+ """
2898+ |CREATE OR REPLACE TEMPORARY VIEW TMP as
2899+ |SELECT N.tdate, EX AS new_ex
2900+ |FROM tab1 N
2901+ |JOIN tab2 Z
2902+ |ON N.tdate = Z.tdate
2903+ """ .stripMargin)
2904+ sql(
2905+ """
2906+ |SELECT * FROM TMP x JOIN TMP y
2907+ |ON x.tdate = y.tdate
2908+ """ .stripMargin).queryExecution.executedPlan
2909+ }
2910+ }
2911+ }
28592912}
28602913
28612914case class Foo (bar : Option [String ])
0 commit comments