Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 1F8A3200BFD for ; Sun, 15 Jan 2017 18:05:54 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 1E495160B2B; Sun, 15 Jan 2017 17:05:54 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 41F68160B32 for ; Sun, 15 Jan 2017 18:05:53 +0100 (CET) Received: (qmail 86487 invoked by uid 500); 15 Jan 2017 17:05:52 -0000 Mailing-List: contact commits-help@carbondata.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@carbondata.incubator.apache.org Delivered-To: mailing list commits@carbondata.incubator.apache.org Received: (qmail 86478 invoked by uid 99); 15 Jan 2017 17:05:52 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 15 Jan 2017 17:05:52 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 1252BC075A for ; Sun, 15 Jan 2017 17:05:52 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -6.219 X-Spam-Level: X-Spam-Status: No, score=-6.219 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-2.999] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id I3oTi8ChYEFK for ; Sun, 15 Jan 2017 17:05:50 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with SMTP id 0BB565F254 for ; Sun, 15 Jan 2017 17:05:48 +0000 (UTC) Received: (qmail 86439 invoked by uid 99); 15 Jan 2017 17:05:48 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 15 Jan 2017 17:05:48 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 2F3E6DFC15; Sun, 15 Jan 2017 17:05:48 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: ravipesala@apache.org To: commits@carbondata.incubator.apache.org Date: Sun, 15 Jan 2017 17:05:48 -0000 Message-Id: <08093bb4608d4b83acfc36c5876978c3@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [1/2] incubator-carbondata git commit: added validation for bucket number is not negative archived-at: Sun, 15 Jan 2017 17:05:54 -0000 Repository: incubator-carbondata Updated Branches: refs/heads/master 11c2b33c2 -> 7d2159681 added validation for bucket number is not negative formatted the code corrected the table name for testbucketing class refactor the code reutilized the imports removed the java style Project: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/commit/2b4f5069 Tree: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/tree/2b4f5069 Diff: http://git-wip-us.apache.org/repos/asf/incubator-carbondata/diff/2b4f5069 Branch: refs/heads/master Commit: 2b4f5069500ed0206189deebe94776187f18c0fe Parents: 11c2b33 Author: anubhav100 Authored: Tue Jan 10 11:01:52 2017 +0530 Committer: ravipesala Committed: Sun Jan 15 22:34:37 2017 +0530 ---------------------------------------------------------------------- .../org/apache/spark/sql/CarbonSource.scala | 16 +++++++++---- .../spark/sql/parser/CarbonSparkSqlParser.scala | 24 ++++++++++++-------- .../bucketing/TableBucketingTestCase.scala | 19 ++++++++++++++++ 3 files changed, 44 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/2b4f5069/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonSource.scala ---------------------------------------------------------------------- diff --git a/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonSource.scala b/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonSource.scala index 328c49c..b44b066 100644 --- a/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonSource.scala +++ b/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonSource.scala @@ -135,14 +135,20 @@ class CarbonSource extends CreatableRelationProvider f } val map = scala.collection.mutable.Map[String, String]() - parameters.foreach { x => map.put(x._1, x._2) } - val bucketFields = { - if (options.isBucketingEnabled) { - Some(BucketFields(options.bucketColumns.split(","), options.bucketNumber)) + parameters.foreach { parameter => map.put(parameter._1, parameter._2) } + val bucketFields = if (options.isBucketingEnabled) { + if (options.bucketNumber.toString.contains("-") || + options.bucketNumber.toString.contains("+") ) { + throw new MalformedCarbonCommandException("INVALID NUMBER OF BUCKETS SPECIFIED" + + options.bucketNumber.toString) + } + else { + Some(BucketFields(options.bucketColumns.split(","), options.bucketNumber)) + } } else { None } - } + val cm = TableCreator.prepareTableModel(false, Option(dbName), tableName, fields, Nil, bucketFields, map) CreateTable(cm, false).run(sparkSession) http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/2b4f5069/integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSparkSqlParser.scala ---------------------------------------------------------------------- diff --git a/integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSparkSqlParser.scala b/integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSparkSqlParser.scala index 3dcf2d9..04de23d 100644 --- a/integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSparkSqlParser.scala +++ b/integration/spark2/src/main/scala/org/apache/spark/sql/parser/CarbonSparkSqlParser.scala @@ -41,10 +41,6 @@ class CarbonSparkSqlParser(conf: SQLConf) extends AbstractSqlParser { private val substitutor = new VariableSubstitution(conf) - protected override def parse[T](command: String)(toResult: SqlBaseParser => T): T = { - super.parse(substitutor.substitute(command))(toResult) - } - override def parsePlan(sqlText: String): LogicalPlan = { try { super.parsePlan(sqlText) @@ -55,6 +51,10 @@ class CarbonSparkSqlParser(conf: SQLConf) extends AbstractSqlParser { astBuilder.parser.parse(sqlText) } } + + protected override def parse[T](command: String)(toResult: SqlBaseParser => T): T = { + super.parse(substitutor.substitute(command))(toResult) + } } class CarbonSqlAstBuilder(conf: SQLConf) extends SparkSqlAstBuilder(conf) { @@ -124,7 +124,7 @@ class CarbonSqlAstBuilder(conf: SQLConf) extends SparkSqlAstBuilder(conf) { f.scale = scale f.dataType = Some("decimal") } - if(f.dataType.getOrElse("").startsWith("char")) { + if (f.dataType.getOrElse("").startsWith("char")) { f.dataType = Some("char") } f.rawSchema = x @@ -136,12 +136,16 @@ class CarbonSqlAstBuilder(conf: SQLConf) extends SparkSqlAstBuilder(conf) { throw new MalformedCarbonCommandException("Invalid table properties") } val options = new CarbonOption(properties) - val bucketFields = { - if (options.isBucketingEnabled) { + val bucketFields = if (options.isBucketingEnabled) { + if (options.bucketNumber.toString.contains("-") || + options.bucketNumber.toString.contains("+")) { + throw new MalformedCarbonCommandException("INVALID NUMBER OF BUCKETS SPECIFIED") + } + else { Some(BucketFields(options.bucketColumns.split(","), options.bucketNumber)) - } else { - None } + } else { + None } val tableProperties = mutable.Map[String, String]() @@ -184,7 +188,7 @@ class CarbonSqlAstBuilder(conf: SQLConf) extends SparkSqlAstBuilder(conf) { operationNotAllowed( s"Values must be specified for key(s): ${ badKeys.mkString("[", ",", "]") }", ctx) } - props.map{ case (key, value) => + props.map { case (key, value) => (key.toLowerCase, value.toLowerCase) } } http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/2b4f5069/integration/spark2/src/test/scala/org/apache/spark/carbondata/bucketing/TableBucketingTestCase.scala ---------------------------------------------------------------------- diff --git a/integration/spark2/src/test/scala/org/apache/spark/carbondata/bucketing/TableBucketingTestCase.scala b/integration/spark2/src/test/scala/org/apache/spark/carbondata/bucketing/TableBucketingTestCase.scala index b3bab49..daecee5 100644 --- a/integration/spark2/src/test/scala/org/apache/spark/carbondata/bucketing/TableBucketingTestCase.scala +++ b/integration/spark2/src/test/scala/org/apache/spark/carbondata/bucketing/TableBucketingTestCase.scala @@ -28,6 +28,7 @@ import org.apache.carbondata.core.carbon.metadata.CarbonMetadata import org.apache.carbondata.core.carbon.metadata.schema.table.CarbonTable import org.apache.carbondata.core.constants.CarbonCommonConstants import org.apache.carbondata.core.util.CarbonProperties +import org.apache.carbondata.spark.exception.MalformedCarbonCommandException class TableBucketingTestCase extends QueryTest with BeforeAndAfterAll { @@ -42,6 +43,7 @@ class TableBucketingTestCase extends QueryTest with BeforeAndAfterAll { sql("DROP TABLE IF EXISTS t6") sql("DROP TABLE IF EXISTS t7") sql("DROP TABLE IF EXISTS t8") + sql("DROP TABLE IF EXISTS t9") } test("test create table with buckets") { @@ -63,6 +65,23 @@ class TableBucketingTestCase extends QueryTest with BeforeAndAfterAll { } } + test("must be unable to create if number of buckets is in negative number") { + try { + sql( + """ + CREATE TABLE t9 + (ID Int, date Timestamp, country String, + name String, phonetype String, serialname String, salary Int) + USING org.apache.spark.sql.CarbonSource + OPTIONS("bucketnumber"="-1", "bucketcolumns"="name", "tableName"="t9") + """) + assert(false) + } + catch { + case malformedCarbonCommandException: MalformedCarbonCommandException => assert(true) + } + } + test("test create table with no bucket join of carbon tables") { sql( """