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
---