You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by ja...@apache.org on 2017/11/20 02:10:10 UTC

carbondata git commit: [CARBONDATA-1769] Change alterTableCompaction to support transfer tabeInfo

Repository: carbondata
Updated Branches:
  refs/heads/master e7f9422b9 -> 1693e0c58


[CARBONDATA-1769] Change alterTableCompaction to support transfer tabeInfo

Change alterTableCompaction to support transfer tabeInfo

This closes #1533


Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo
Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/1693e0c5
Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/1693e0c5
Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/1693e0c5

Branch: refs/heads/master
Commit: 1693e0c587f0505baeb52c5f845654a1336cf9b0
Parents: e7f9422
Author: xubo245 <60...@qq.com>
Authored: Sun Nov 19 20:06:00 2017 +0800
Committer: Jacky Li <ja...@qq.com>
Committed: Mon Nov 20 10:10:00 2017 +0800

----------------------------------------------------------------------
 .../AlterTableCompactionCommand.scala           | 47 ++++++++++++--------
 .../sql/execution/strategy/DDLStrategy.scala    |  2 +-
 2 files changed, 29 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/carbondata/blob/1693e0c5/integration/spark2/src/main/scala/org/apache/spark/sql/execution/command/management/AlterTableCompactionCommand.scala
----------------------------------------------------------------------
diff --git a/integration/spark2/src/main/scala/org/apache/spark/sql/execution/command/management/AlterTableCompactionCommand.scala b/integration/spark2/src/main/scala/org/apache/spark/sql/execution/command/management/AlterTableCompactionCommand.scala
index 51275aa..9ff575b 100644
--- a/integration/spark2/src/main/scala/org/apache/spark/sql/execution/command/management/AlterTableCompactionCommand.scala
+++ b/integration/spark2/src/main/scala/org/apache/spark/sql/execution/command/management/AlterTableCompactionCommand.scala
@@ -26,6 +26,7 @@ import org.apache.spark.sql.hive.CarbonRelation
 import org.apache.carbondata.common.logging.{LogService, LogServiceFactory}
 import org.apache.carbondata.core.constants.CarbonCommonConstants
 import org.apache.carbondata.core.locks.{CarbonLockFactory, LockUsage}
+import org.apache.carbondata.core.metadata.schema.table.{CarbonTable, TableInfo}
 import org.apache.carbondata.core.mutate.CarbonUpdateUtil
 import org.apache.carbondata.core.util.CarbonProperties
 import org.apache.carbondata.processing.loading.model.{CarbonDataLoadSchema, CarbonLoadModel}
@@ -37,41 +38,47 @@ import org.apache.carbondata.spark.util.CommonUtil
  * Command for the compaction in alter table command
  */
 case class AlterTableCompactionCommand(
-    alterTableModel: AlterTableModel)
+    alterTableModel: AlterTableModel,
+    tableInfoOp: Option[TableInfo] = None)
   extends RunnableCommand with DataProcessCommand {
 
-  private val LOGGER: LogService = LogServiceFactory.getLogService(this.getClass.getName)
-
   override def run(sparkSession: SparkSession): Seq[Row] = {
     processData(sparkSession)
   }
 
   override def processData(sparkSession: SparkSession): Seq[Row] = {
-
+    val LOGGER: LogService =
+    LogServiceFactory.getLogService(this.getClass.getName)
     val tableName = alterTableModel.tableName.toLowerCase
     val databaseName = alterTableModel.dbName.getOrElse(sparkSession.catalog.currentDatabase)
-    val relation =
-      CarbonEnv.getInstance(sparkSession).carbonMetastore
-        .lookupRelation(Option(databaseName), tableName)(sparkSession)
-        .asInstanceOf[CarbonRelation]
-    if (relation == null) {
-      sys.error(s"Table $databaseName.$tableName does not exist")
-    }
-    if (null == relation.carbonTable) {
-      LOGGER.error(s"alter table failed. table not found: $databaseName.$tableName")
-      sys.error(s"alter table failed. table not found: $databaseName.$tableName")
+
+    val table = if (tableInfoOp.isDefined) {
+      val tableInfo = tableInfoOp.get
+      //   To DO: CarbonEnv.updateStorePath
+      CarbonTable.buildFromTableInfo(tableInfo)
+    } else {
+      val relation =
+        CarbonEnv.getInstance(sparkSession).carbonMetastore
+          .lookupRelation(Option(databaseName), tableName)(sparkSession)
+          .asInstanceOf[CarbonRelation]
+      if (relation == null) {
+        sys.error(s"Table $databaseName.$tableName does not exist")
+      }
+      if (null == relation.carbonTable) {
+        LOGGER.error(s"alter table failed. table not found: $databaseName.$tableName")
+        sys.error(s"alter table failed. table not found: $databaseName.$tableName")
+      }
+      relation.carbonTable
     }
 
     val carbonLoadModel = new CarbonLoadModel()
-
-    val table = relation.carbonTable
     carbonLoadModel.setTableName(table.getTableName)
     val dataLoadSchema = new CarbonDataLoadSchema(table)
     // Need to fill dimension relation
     carbonLoadModel.setCarbonDataLoadSchema(dataLoadSchema)
-    carbonLoadModel.setTableName(relation.carbonTable.getTableName)
-    carbonLoadModel.setDatabaseName(relation.carbonTable.getDatabaseName)
-    carbonLoadModel.setTablePath(relation.carbonTable.getTablePath)
+    carbonLoadModel.setTableName(table.getTableName)
+    carbonLoadModel.setDatabaseName(table.getDatabaseName)
+    carbonLoadModel.setTablePath(table.getTablePath)
 
     var storeLocation = CarbonProperties.getInstance
       .getProperty(CarbonCommonConstants.STORE_LOCATION_TEMP_PATH,
@@ -99,6 +106,8 @@ case class AlterTableCompactionCommand(
       alterTableModel: AlterTableModel,
       carbonLoadModel: CarbonLoadModel,
       storeLocation: String): Unit = {
+    val LOGGER: LogService =
+    LogServiceFactory.getLogService(this.getClass.getName)
     var compactionSize: Long = 0
     var compactionType: CompactionType = CompactionType.MINOR_COMPACTION
     if (alterTableModel.compactionType.equalsIgnoreCase("major")) {

http://git-wip-us.apache.org/repos/asf/carbondata/blob/1693e0c5/integration/spark2/src/main/scala/org/apache/spark/sql/execution/strategy/DDLStrategy.scala
----------------------------------------------------------------------
diff --git a/integration/spark2/src/main/scala/org/apache/spark/sql/execution/strategy/DDLStrategy.scala b/integration/spark2/src/main/scala/org/apache/spark/sql/execution/strategy/DDLStrategy.scala
index 4e75547..d0dca68 100644
--- a/integration/spark2/src/main/scala/org/apache/spark/sql/execution/strategy/DDLStrategy.scala
+++ b/integration/spark2/src/main/scala/org/apache/spark/sql/execution/strategy/DDLStrategy.scala
@@ -78,7 +78,7 @@ class DDLStrategy(sparkSession: SparkSession) extends SparkStrategy {
         ExecutedCommandExec(createDb) :: Nil
       case drop@DropDatabaseCommand(dbName, ifExists, isCascade) =>
         ExecutedCommandExec(CarbonDropDatabaseCommand(drop)) :: Nil
-      case alterTable@AlterTableCompactionCommand(altertablemodel) =>
+      case alterTable@AlterTableCompactionCommand(altertablemodel, _) =>
         val isCarbonTable = CarbonEnv.getInstance(sparkSession).carbonMetastore
           .tableExists(TableIdentifier(altertablemodel.tableName,
             altertablemodel.dbName))(sparkSession)