[CARBONDATA-2111] Fix self join query with dictionary include

This closes #1918


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

Branch: refs/heads/branch-1.3
Commit: 6fd778ab177fba19042b28d15a6e9b395477ec85
Parents: 22f78fa
Author: ravipesala <[email protected]>
Authored: Fri Feb 2 23:10:48 2018 +0530
Committer: Jacky Li <[email protected]>
Committed: Sat Feb 3 17:30:57 2018 +0800

----------------------------------------------------------------------
 .../testsuite/allqueries/AllDataTypesTestCase.scala   | 14 ++++++++++++++
 .../sql/optimizer/CarbonDecoderOptimizerHelper.scala  |  2 +-
 2 files changed, 15 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/carbondata/blob/6fd778ab/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/allqueries/AllDataTypesTestCase.scala
----------------------------------------------------------------------
diff --git 
a/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/allqueries/AllDataTypesTestCase.scala
 
b/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/allqueries/AllDataTypesTestCase.scala
index afff2d0..4c6b47a 100644
--- 
a/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/allqueries/AllDataTypesTestCase.scala
+++ 
b/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/allqueries/AllDataTypesTestCase.scala
@@ -1199,4 +1199,18 @@ class AllDataTypesTestCase extends QueryTest with 
BeforeAndAfterAll {
     sql("drop table if exists ORDERS")
   }
 
+  test("test self join query fail") {
+    sql("DROP TABLE IF EXISTS uniqdata_INCLUDEDICTIONARY")
+
+    sql("CREATE TABLE uniqdata_INCLUDEDICTIONARY (CUST_ID int,CUST_NAME 
String,ACTIVE_EMUI_VERSION string, DOB timestamp, DOJ timestamp, BIGINT_COLUMN1 
bigint,BIGINT_COLUMN2 bigint,DECIMAL_COLUMN1 decimal(30,10), DECIMAL_COLUMN2 
decimal(36,10),Double_COLUMN1 double, Double_COLUMN2 double,INTEGER_COLUMN1 
int) STORED BY 'org.apache.carbondata.format' 
TBLPROPERTIES('DICTIONARY_INCLUDE'='CUST_ID,CUST_NAME,ACTIVE_EMUI_VERSION,DOB,DOJ,BIGINT_COLUMN1,BIGINT_COLUMN2,DECIMAL_COLUMN1,DECIMAL_COLUMN2,Double_COLUMN1,Double_COLUMN2,INTEGER_COLUMN1')")
+    sql(s"LOAD DATA INPATH '${resourcesPath + "/data_with_all_types.csv"}' 
into table" +
+              " uniqdata_INCLUDEDICTIONARY OPTIONS('DELIMITER'=',' , 
'QUOTECHAR'='\"'," +
+              
"'BAD_RECORDS_ACTION'='FORCE','FILEHEADER'='CUST_ID,CUST_NAME,ACTIVE_EMUI_VERSION,"
 +
+              
"DOB,DOJ,BIGINT_COLUMN1,BIGINT_COLUMN2,DECIMAL_COLUMN1,DECIMAL_COLUMN2," +
+              "Double_COLUMN1,Double_COLUMN2,INTEGER_COLUMN1')")
+
+    val count = sql("select 
b.BIGINT_COLUMN1,b.DECIMAL_COLUMN1,b.Double_COLUMN1,b.DOB,b.CUST_ID,b.CUST_NAME 
from uniqdata_INCLUDEDICTIONARY a join uniqdata_INCLUDEDICTIONARY b on 
a.cust_name=b.cust_name and a.cust_name RLIKE '10'").count()
+    assert(count > 0)
+    sql("DROP TABLE IF EXISTS uniqdata_INCLUDEDICTIONARY")
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/carbondata/blob/6fd778ab/integration/spark-common/src/main/scala/org/apache/spark/sql/optimizer/CarbonDecoderOptimizerHelper.scala
----------------------------------------------------------------------
diff --git 
a/integration/spark-common/src/main/scala/org/apache/spark/sql/optimizer/CarbonDecoderOptimizerHelper.scala
 
b/integration/spark-common/src/main/scala/org/apache/spark/sql/optimizer/CarbonDecoderOptimizerHelper.scala
index e055c86..fe7c35d 100644
--- 
a/integration/spark-common/src/main/scala/org/apache/spark/sql/optimizer/CarbonDecoderOptimizerHelper.scala
+++ 
b/integration/spark-common/src/main/scala/org/apache/spark/sql/optimizer/CarbonDecoderOptimizerHelper.scala
@@ -114,10 +114,10 @@ class CarbonDecoderProcessor {
       decoderNotDecode: util.HashSet[AttributeReferenceWrapper]): Unit = {
     scalaList.reverseMap {
       case Node(cd: CarbonDictionaryTempDecoder) =>
-        cd.notDecodeCarryForward.asScala.foreach(decoderNotDecode.remove)
         decoderNotDecode.asScala.foreach(cd.attrsNotDecode.add)
         decoderNotDecode.asScala.foreach(cd.attrList.remove)
         decoderNotDecode.addAll(cd.attrList)
+        cd.notDecodeCarryForward.asScala.foreach(decoderNotDecode.remove)
       case ArrayCarbonNode(children) =>
         children.foreach { child =>
           val notDecode = new util.HashSet[AttributeReferenceWrapper]

Reply via email to