Github user zzcclp commented on a diff in the pull request: https://github.com/apache/carbondata/pull/1469#discussion_r152730468 --- Diff: integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSparkSqlParser.scala --- @@ -38,7 +40,26 @@ import org.apache.carbondata.spark.util.CommonUtil */ class CarbonSparkSqlParser(conf: SQLConf, sparkSession: SparkSession) extends AbstractSqlParser { - val astBuilder = new CarbonSqlAstBuilder(conf) + val parser = new CarbonSpark2SqlParser + val astBuilder = getAstBuilder() + + def getAstBuilder(): AstBuilder = { + if (sparkSession.version.contains("2.1")) { + val clazz = Utils.classForName("org.apache.spark.sql.hive.CarbonSqlAstBuilder") + val ctor = clazz.getConstructors.head + ctor.setAccessible(true) + val astBuilder = ctor.newInstance(conf, parser).asInstanceOf[AstBuilder] + astBuilder + } else if (sparkSession.version.contains("2.2")) { + val clazz = Utils.classForName("org.apache.spark.sql.hive.CarbonSqlAstBuilder") + val ctor = clazz.getConstructors.head + ctor.setAccessible(true) + val astBuilder = ctor.newInstance(conf, parser).asInstanceOf[AstBuilder] + astBuilder --- End diff -- what's the difference between the code for 2.1 and 2.2
---