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

    https://github.com/apache/carbondata/pull/1469#discussion_r152728263
  
    --- Diff: 
integration/spark2/src/main/scala/org/apache/spark/sql/hive/CarbonAnalysisRules.scala
 ---
    @@ -95,11 +165,40 @@ case class CarbonIUDAnalysisRule(sparkSession: 
SparkSession) extends Rule[Logica
         def prepareTargetReleation(relation: UnresolvedRelation): 
SubqueryAlias = {
           val tupleId = UnresolvedAlias(Alias(UnresolvedFunction("getTupleId",
             Seq.empty, isDistinct = false), "tupleId")())
    +
    +      val localalias = alias match {
    +        case Some(a) => Some(alias.toSeq)
    +        case _ => None
    +      }
           val projList = Seq(
    -        UnresolvedAlias(UnresolvedStar(Option(table.alias.toSeq))), 
tupleId)
    +        UnresolvedAlias(UnresolvedStar(localalias)), tupleId)
           // include tuple id and rest of the required columns in subqury
    -      SubqueryAlias(table.alias.getOrElse(""),
    -        Project(projList, relation), Option(table.tableIdentifier))
    +//      SubqueryAlias(alias.getOrElse(""),
    +//        Project(projList, relation), Option(table.tableIdentifier))
    +//
    +      if (sparkSession.version.contains("2.1")) {
    +        //        
SubqueryAlias(table.output.map(_.withQualifier(Some(table.tableName))).toString(),
    +        //          Project(projList, relation), 
Option(table.tableIdentifier))
    +        val clazz = 
Utils.classForName("org.apache.spark.sql.catalyst.plans.logical.SubqueryAlias")
    +        val ctor = clazz.getConstructors.head
    +        ctor.setAccessible(true)
    +        val subqueryAlias = ctor
    +          .newInstance(alias.getOrElse(""),
    +            Project(projList, relation), 
Option(table.tableIdentifier)).asInstanceOf[SubqueryAlias]
    +        subqueryAlias
    +      } else if (sparkSession.version.contains("2.2")) {
    --- End diff --
    
    use startsWith instead of contains


---

Reply via email to