Github user jackylk commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/1489#discussion_r150506019
--- Diff:
integration/spark2/src/main/scala/org/apache/spark/sql/execution/command/preaaggregate/CreatePreAggregateTableCommand.scala
---
@@ -79,24 +79,26 @@ case class CreatePreAggregateTableCommand(
tableModel.parentTable = Some(parentTable)
tableModel.dataMapRelation = Some(fieldRelationMap)
CarbonCreateTableCommand(tableModel, createDSTable = true).run
(sparkSession)
- try {
+ try {
val relation = CarbonEnv.getInstance(sparkSession).carbonMetastore.
- lookupRelation(
tableIdentifier)(sparkSession).asInstanceOf[CarbonRelation]
- val tableInfo= relation.tableMeta.carbonTable.getTableInfo
- // child schema object which will be updated on parent table
about the
- val childSchema = tableInfo.getFactTable
- .buildChildSchema(dataMapName,"", tableInfo.getDatabaseName,
queryString, "AGGREGATION")
- childSchema.setProperties(dmproperties.asJava) // upadting the
parent table about child table
- PreAggregateUtil.updateMainTable(parentDbName, parentTableName,
childSchema, sparkSession)
- val loadAvailable = PreAggregateUtil
- .checkMainTableLoad(parentTable)
- if (loadAvailable) {
- sparkSession.sql(s"insert into ${ cm.databaseName }.${
cm.tableName } $queryString")
- }} catch {
- case e: Exception =>
- sparkSession.
- sql(s"""DROP TABLE IF EXISTS
${tableModel.databaseName}.${tableModel.tableName}""")
- throw e
+
lookupRelation(tableIdentifier)(sparkSession).asInstanceOf[CarbonRelation]
+ val tableInfo = relation.tableMeta.carbonTable.getTableInfo
+ // child schema object which will be updated on parent table about
the
+ val childSchema = tableInfo.getFactTable
+ .buildChildSchema(dataMapName, "", tableInfo.getDatabaseName,
queryString, "AGGREGATION")
+ dmproperties.foreach(f => childSchema.getProperties.put(f._1, f._2))
+ // updating the parent table about child table
+ PreAggregateUtil.updateMainTable(parentDbName, parentTableName,
childSchema, sparkSession)
+ val loadAvailable = PreAggregateUtil.checkMainTableLoad(parentTable)
+ if (loadAvailable) {
+ sparkSession
+ .sql(s"insert into ${ tableModel.databaseName }.${
tableModel.tableName } $queryString")
+ }
+ } catch {
+ case e: Exception =>
+ sparkSession.
+ sql(s"""DROP TABLE IF EXISTS ${ tableModel.databaseName }.${
tableModel.tableName }""")
--- End diff --
Can we use programmical way instead of issuing another SQL?
---