[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]
