[CARBONDATA-1943][PARTITION] Fix Load static partition with LOAD COMMAND 
creates multiple partitions

When using the LOAD syntax without options then spark creates LoadDataCommand 
so passing of partitions information to CarbonLoadDataCommand is missing in 
that case. This PR fixes it.

This closes #1731


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

Branch: refs/heads/branch-1.3
Commit: a7742024086fc2d9dce12e863f8ebd4c0e5d26df
Parents: a51ad30
Author: ravipesala <[email protected]>
Authored: Wed Dec 27 22:56:04 2017 +0530
Committer: Jacky Li <[email protected]>
Committed: Wed Jan 3 15:04:14 2018 +0800

----------------------------------------------------------------------
 .../StandardPartitionTableLoadingTestCase.scala  | 18 ++++++++++++++++++
 .../sql/execution/strategy/DDLStrategy.scala     | 19 +++++++++++++------
 2 files changed, 31 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/carbondata/blob/a7742024/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/standardpartition/StandardPartitionTableLoadingTestCase.scala
----------------------------------------------------------------------
diff --git 
a/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/standardpartition/StandardPartitionTableLoadingTestCase.scala
 
b/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/standardpartition/StandardPartitionTableLoadingTestCase.scala
index b7010e5..d3ea5aa 100644
--- 
a/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/standardpartition/StandardPartitionTableLoadingTestCase.scala
+++ 
b/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/standardpartition/StandardPartitionTableLoadingTestCase.scala
@@ -254,6 +254,23 @@ class StandardPartitionTableLoadingTestCase extends 
QueryTest with BeforeAndAfte
     }
   }
 
+  test("load static partition table for one static partition column with load 
syntax issue") {
+    sql(
+      """
+        | CREATE TABLE loadstaticpartitiononeissue (empname String, 
designation String, doj Timestamp,
+        |  workgroupcategory int, workgroupcategoryname String, deptno int, 
deptname String,
+        |  projectcode int, projectjoindate Timestamp, projectenddate 
Timestamp,attendance int,
+        |  utilization int,salary int)
+        | PARTITIONED BY (empno int)
+        | STORED BY 'org.apache.carbondata.format'
+      """.stripMargin)
+
+    sql(s"""LOAD DATA local inpath '$resourcesPath/data.csv' INTO TABLE 
loadstaticpartitiononeissue PARTITION(empno='1')""")
+    val df = sql("show partitions loadstaticpartitiononeissue")
+    assert(df.collect().length == 1)
+    checkExistence(df, true,  "empno=1")
+  }
+
 
   override def afterAll = {
     dropTable
@@ -272,6 +289,7 @@ class StandardPartitionTableLoadingTestCase extends 
QueryTest with BeforeAndAfte
     sql("drop table if exists loadstaticpartitionone")
     sql("drop table if exists loadstaticpartitiononeoverwrite")
     sql("drop table if exists streamingpartitionedtable")
+    sql("drop table if exists loadstaticpartitiononeissue")
   }
 
 }

http://git-wip-us.apache.org/repos/asf/carbondata/blob/a7742024/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 45f0f0a..684a749 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
@@ -51,12 +51,19 @@ class DDLStrategy(sparkSession: SparkSession) extends 
SparkStrategy {
           .tableExists(identifier)(sparkSession) =>
         ExecutedCommandExec(
           CarbonLoadDataCommand(
-            identifier.database,
-            identifier.table.toLowerCase,
-            path,
-            Seq(),
-            Map(),
-            isOverwrite)) :: Nil
+            databaseNameOp = identifier.database,
+            tableName = identifier.table.toLowerCase,
+            factPathFromUser = path,
+            dimFilesPath = Seq(),
+            options = Map(),
+            isOverwriteTable = isOverwrite,
+            inputSqlString = null,
+            dataFrame = None,
+            updateModel = None,
+            tableInfoOp = None,
+            internalOptions = Map.empty,
+            partition = partition.getOrElse(Map.empty).map { case (col, value) 
=>
+              (col, Some(value))})) :: Nil
       case alter@AlterTableRenameCommand(oldTableIdentifier, 
newTableIdentifier, _) =>
         val dbOption = oldTableIdentifier.database.map(_.toLowerCase)
         val tableIdentifier = 
TableIdentifier(oldTableIdentifier.table.toLowerCase(), dbOption)

Reply via email to