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