You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by ch...@apache.org on 2016/07/20 10:13:45 UTC

[17/50] [abbrv] incubator-carbondata git commit: Drop Table dbname.tablename is not working, carbondata file path if '-' exist, gives wrong value. (#797)

Drop Table dbname.tablename is not working, carbondata file path if '-' exist, gives wrong value. (#797)



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

Branch: refs/heads/master
Commit: eecbdfde7734421c461a2d1f1780fc879e23f13e
Parents: 6a092bb
Author: nareshpr <pr...@gmail.com>
Authored: Fri Jul 15 22:31:16 2016 +0530
Committer: Ravindra Pesala <ra...@gmail.com>
Committed: Fri Jul 15 22:31:16 2016 +0530

----------------------------------------------------------------------
 .../core/carbon/path/CarbonTablePath.java       | 42 ++++++++++++++------
 .../CarbonFormatDirectoryStructureTest.java     |  4 ++
 .../spark/sql/hive/CarbonMetastoreCatalog.scala | 11 ++---
 .../spark/sql/hive/CarbonStrategies.scala       | 18 ++++++++-
 .../deleteTable/TestDeleteTableNewDDL.scala     | 11 +++++
 5 files changed, 67 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/eecbdfde/core/src/main/java/org/carbondata/core/carbon/path/CarbonTablePath.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/carbondata/core/carbon/path/CarbonTablePath.java b/core/src/main/java/org/carbondata/core/carbon/path/CarbonTablePath.java
index bf2ef57..4696927 100644
--- a/core/src/main/java/org/carbondata/core/carbon/path/CarbonTablePath.java
+++ b/core/src/main/java/org/carbondata/core/carbon/path/CarbonTablePath.java
@@ -305,33 +305,51 @@ public class CarbonTablePath extends Path {
      * gets updated timestamp information from given carbon data file name
      */
     public static String getUpdateTimeStamp(String carbonDataFileName) {
+      // Get the filename from file path
+      String fileName = getFileName(carbonDataFileName);
       // + 1 for size of "-"
-      int firstDashPos = carbonDataFileName.indexOf("-");
-      int secondDashPos = carbonDataFileName.indexOf("-", firstDashPos + 1);
-      int startIndex = carbonDataFileName.indexOf("-", secondDashPos + 1) + 1;
-      int endIndex = carbonDataFileName.indexOf(".");
-      return carbonDataFileName.substring(startIndex, endIndex);
+      int firstDashPos = fileName.indexOf("-");
+      int secondDashPos = fileName.indexOf("-", firstDashPos + 1);
+      int startIndex = fileName.indexOf("-", secondDashPos + 1) + 1;
+      int endIndex = fileName.indexOf(".");
+      return fileName.substring(startIndex, endIndex);
     }
 
     /**
      * gets file part number information from given carbon data file name
      */
     public static String getPartNo(String carbonDataFileName) {
+      // Get the filename from file path
+      String fileName = getFileName(carbonDataFileName);
       // + 1 for size of "-"
-      int startIndex = carbonDataFileName.indexOf("-") + 1;
-      int endIndex = carbonDataFileName.indexOf("-", startIndex);
-      return carbonDataFileName.substring(startIndex, endIndex);
+      int startIndex = fileName.indexOf("-") + 1;
+      int endIndex = fileName.indexOf("-", startIndex);
+      return fileName.substring(startIndex, endIndex);
     }
 
     /**
      * gets updated timestamp information from given carbon data file name
      */
     public static String getTaskNo(String carbonDataFileName) {
+      // Get the filename from file path
+      String fileName = getFileName(carbonDataFileName);
       // + 1 for size of "-"
-      int firstDashPos = carbonDataFileName.indexOf("-");
-      int startIndex = carbonDataFileName.indexOf("-", firstDashPos + 1) + 1;
-      int endIndex = carbonDataFileName.indexOf("-", startIndex);
-      return carbonDataFileName.substring(startIndex, endIndex);
+      int firstDashPos = fileName.indexOf("-");
+      int startIndex = fileName.indexOf("-", firstDashPos + 1) + 1;
+      int endIndex = fileName.indexOf("-", startIndex);
+      return fileName.substring(startIndex, endIndex);
+    }
+  }
+
+  /**
+   * Gets the file name from file path
+   */
+  private static String getFileName(String carbonDataFileName) {
+    int endIndex = carbonDataFileName.lastIndexOf(CarbonCommonConstants.FILE_SEPARATOR);
+    if (endIndex > -1) {
+      return carbonDataFileName.substring(endIndex + 1, carbonDataFileName.length());
+    } else {
+      return carbonDataFileName;
     }
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/eecbdfde/core/src/test/java/org/carbondata/core/path/CarbonFormatDirectoryStructureTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/carbondata/core/path/CarbonFormatDirectoryStructureTest.java b/core/src/test/java/org/carbondata/core/path/CarbonFormatDirectoryStructureTest.java
index 540daa1..ee0059d 100644
--- a/core/src/test/java/org/carbondata/core/path/CarbonFormatDirectoryStructureTest.java
+++ b/core/src/test/java/org/carbondata/core/path/CarbonFormatDirectoryStructureTest.java
@@ -65,5 +65,9 @@ public class CarbonFormatDirectoryStructureTest {
     assertTrue(CarbonTablePath.DataFileUtil.getTaskNo("part-3-4-999.carbondata").equals("4"));
     assertTrue(
         CarbonTablePath.DataFileUtil.getUpdateTimeStamp("part-3-4-999.carbondata").equals("999"));
+    assertTrue(CarbonTablePath.DataFileUtil.getPartNo("/opt/apache-carbon/part-3-4-999.carbondata").equals("3"));
+    assertTrue(CarbonTablePath.DataFileUtil.getTaskNo("/opt/apache-carbon/part-3-4-999.carbondata").equals("4"));
+    assertTrue(
+        CarbonTablePath.DataFileUtil.getUpdateTimeStamp("/opt/apache-carbon/part-3-4-999.carbondata").equals("999"));
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/eecbdfde/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonMetastoreCatalog.scala
----------------------------------------------------------------------
diff --git a/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonMetastoreCatalog.scala b/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonMetastoreCatalog.scala
index e8f752c..f952aa3 100644
--- a/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonMetastoreCatalog.scala
+++ b/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonMetastoreCatalog.scala
@@ -481,6 +481,12 @@ class CarbonMetastoreCatalog(hive: HiveContext, val storePath: String, client: C
       }
     }
 
+    metadata.cubesMeta -= metadata.cubesMeta.filter(
+      c => c.carbonTableIdentifier.getDatabaseName.equalsIgnoreCase(schemaName) &&
+           c.carbonTableIdentifier.getTableName.equalsIgnoreCase(cubeName))(0)
+    org.carbondata.core.carbon.metadata.CarbonMetadata.getInstance
+      .removeTable(schemaName + "_" + cubeName)
+
     try {
       sqlContext.sql(s"DROP TABLE $schemaName.$cubeName").collect()
     } catch {
@@ -489,11 +495,6 @@ class CarbonMetastoreCatalog(hive: HiveContext, val storePath: String, client: C
           s"Error While deleting the table $schemaName.$cubeName during drop Table" + e.getMessage)
     }
 
-    metadata.cubesMeta -= metadata.cubesMeta.filter(
-      c => c.carbonTableIdentifier.getDatabaseName.equalsIgnoreCase(schemaName) &&
-           c.carbonTableIdentifier.getTableName.equalsIgnoreCase(cubeName))(0)
-    org.carbondata.core.carbon.metadata.CarbonMetadata.getInstance
-      .removeTable(schemaName + "_" + cubeName)
     logInfo(s"Table $cubeName of $schemaName Database dropped syccessfully.")
     LOGGER.info("Table " + cubeName + " of " + schemaName + " Database dropped syccessfully.")
 

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/eecbdfde/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonStrategies.scala
----------------------------------------------------------------------
diff --git a/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonStrategies.scala b/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonStrategies.scala
index 429014d..fb5f8a5 100644
--- a/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonStrategies.scala
+++ b/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonStrategies.scala
@@ -337,8 +337,14 @@ class CarbonStrategies(sqlContext: SQLContext) extends QueryPlanner[SparkPlan] {
         ExecutedCommand(ShowAllTablesDetail(schemaName, plan.output)) :: Nil
       case DropTable(tableName, ifNotExists)
         if CarbonEnv.getInstance(sqlContext).carbonCatalog
-          .cubeExists(Seq(tableName.toLowerCase()))(sqlContext) =>
-        ExecutedCommand(DropCubeCommand(ifNotExists, None, tableName.toLowerCase())) :: Nil
+          .cubeExists(toTableIdentifier(tableName))(sqlContext) =>
+        val tblIdentifier = toTableIdentifier(tableName)
+        if(tblIdentifier.size == 2) {
+          ExecutedCommand(DropCubeCommand(ifNotExists,
+              Some(tblIdentifier(0)), tblIdentifier(1))) :: Nil
+        } else {
+          ExecutedCommand(DropCubeCommand(ifNotExists, None, tableName.toLowerCase())) :: Nil
+        }
       case ShowAggregateTablesCommand(schemaName) =>
         ExecutedCommand(ShowAggregateTables(schemaName, plan.output)) :: Nil
       case ShowLoadsCommand(schemaName, cube, limit) =>
@@ -391,6 +397,14 @@ class CarbonStrategies(sqlContext: SQLContext) extends QueryPlanner[SparkPlan] {
       case _ =>
         Nil
     }
+
+    private def toTableIdentifier(name: String): Seq[String] = {
+      val identifier = name.toLowerCase.split("\\.")
+      identifier match {
+        case Array(tableName) => Seq(tableName)
+        case Array(dbName, tableName) => Seq(dbName, tableName)
+      }
+    }
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/eecbdfde/integration/spark/src/test/scala/org/carbondata/spark/testsuite/deleteTable/TestDeleteTableNewDDL.scala
----------------------------------------------------------------------
diff --git a/integration/spark/src/test/scala/org/carbondata/spark/testsuite/deleteTable/TestDeleteTableNewDDL.scala b/integration/spark/src/test/scala/org/carbondata/spark/testsuite/deleteTable/TestDeleteTableNewDDL.scala
index aeac733..c137e58 100644
--- a/integration/spark/src/test/scala/org/carbondata/spark/testsuite/deleteTable/TestDeleteTableNewDDL.scala
+++ b/integration/spark/src/test/scala/org/carbondata/spark/testsuite/deleteTable/TestDeleteTableNewDDL.scala
@@ -74,6 +74,17 @@ class TestDeleteTableNewDDL extends QueryTest with BeforeAndAfterAll {
 
   }
 
+  test("drop table using dbName and table name") {
+    // create table
+    sql(
+      "CREATE table default.table3 (ID int, date String, country String, name " +
+      "String," +
+      "phonetype String, serialname String, salary int) stored by 'org.apache.carbondata.format'" +
+      "TBLPROPERTIES('DICTIONARY_INCLUDE'='ID', 'DICTIONARY_INCLUDE'='salary')"
+    )
+    // table should drop without any error
+    sql("drop table default.table3")
+  }
 
   override def afterAll: Unit = {