You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by ra...@apache.org on 2017/12/28 07:29:17 UTC
carbondata git commit: [CARBONDATA-1910]do not allow tupleid,
referenceid and positionReference as columns names
Repository: carbondata
Updated Branches:
refs/heads/master b1206012f -> 7a36c1a8d
[CARBONDATA-1910]do not allow tupleid, referenceid and positionReference as columns names
This closes #1682
Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo
Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/7a36c1a8
Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/7a36c1a8
Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/7a36c1a8
Branch: refs/heads/master
Commit: 7a36c1a8de6d6c5a38d51807783e16cb50e48d8a
Parents: b120601
Author: akashrn5 <ak...@gmail.com>
Authored: Tue Dec 19 18:34:10 2017 +0530
Committer: ravipesala <ra...@gmail.com>
Committed: Thu Dec 28 12:59:01 2017 +0530
----------------------------------------------------------------------
.../createTable/TestCreateTableAsSelect.scala | 18 +++++++++++
.../iud/UpdateCarbonTableTestCase.scala | 34 +++++++++++++++++++-
.../spark/sql/catalyst/CarbonDDLSqlParser.scala | 20 ++++++++++++
3 files changed, 71 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/carbondata/blob/7a36c1a8/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/createTable/TestCreateTableAsSelect.scala
----------------------------------------------------------------------
diff --git a/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/createTable/TestCreateTableAsSelect.scala b/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/createTable/TestCreateTableAsSelect.scala
index ffe6261..09268b5 100644
--- a/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/createTable/TestCreateTableAsSelect.scala
+++ b/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/createTable/TestCreateTableAsSelect.scala
@@ -152,6 +152,24 @@ class TestCreateTableAsSelect extends QueryTest with BeforeAndAfterAll {
assert(dictFiles.length == 3)
}
+ test("test create table as select with column name as tupleid") {
+ intercept[Exception] {
+ sql("create table t2 stored by 'carbondata' as select count(value) AS tupleid from carbon_ctas_test")
+ }
+ }
+
+ test("test create table as select with column name as positionid") {
+ intercept[Exception] {
+ sql("create table t2 stored by 'carbondata' as select count(value) AS positionid from carbon_ctas_test")
+ }
+ }
+
+ test("test create table as select with column name as positionreference") {
+ intercept[Exception] {
+ sql("create table t2 stored by 'carbondata' as select count(value) AS positionreference from carbon_ctas_test")
+ }
+ }
+
override def afterAll {
sql("DROP TABLE IF EXISTS carbon_ctas_test")
sql("DROP TABLE IF EXISTS parquet_ctas_test")
http://git-wip-us.apache.org/repos/asf/carbondata/blob/7a36c1a8/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/iud/UpdateCarbonTableTestCase.scala
----------------------------------------------------------------------
diff --git a/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/iud/UpdateCarbonTableTestCase.scala b/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/iud/UpdateCarbonTableTestCase.scala
index 25a4999..7f6cae4 100644
--- a/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/iud/UpdateCarbonTableTestCase.scala
+++ b/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/iud/UpdateCarbonTableTestCase.scala
@@ -637,6 +637,38 @@ class UpdateCarbonTableTestCase extends QueryTest with BeforeAndAfterAll {
sql("""drop table if exists iud.dest33_part""")
}
+ test("test create table with tupleid as column name") {
+ try {
+ sql("create table create_with_tupleid_column(item int, tupleId String) stored by " +
+ "'carbondata'")
+ } catch {
+ case ex: Exception =>
+ assert(ex.getMessage.contains("not allowed in column name while creating table"))
+ }
+ }
+
+ test("test create table with position reference as column name") {
+ try {
+ sql(
+ "create table create_with_positionReference_column(item int, positionReference String) " +
+ "stored by 'carbondata'")
+ } catch {
+ case ex: Exception =>
+ assert(ex.getMessage.contains("not allowed in column name while creating table"))
+ }
+ }
+
+ test("test create table with position id as column name") {
+ try {
+ sql(
+ "create table create_with_positionid_column(item int, positionId String) stored by " +
+ "'carbondata'")
+ } catch {
+ case ex: Exception =>
+ assert(ex.getMessage.contains("not allowed in column name while creating table"))
+ }
+ }
+
override def afterAll {
sql("use default")
sql("drop database if exists iud cascade")
@@ -645,4 +677,4 @@ class UpdateCarbonTableTestCase extends QueryTest with BeforeAndAfterAll {
CarbonProperties.getInstance()
.addProperty(CarbonCommonConstants.ENABLE_VECTOR_READER , "true")
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/carbondata/blob/7a36c1a8/integration/spark-common/src/main/scala/org/apache/spark/sql/catalyst/CarbonDDLSqlParser.scala
----------------------------------------------------------------------
diff --git a/integration/spark-common/src/main/scala/org/apache/spark/sql/catalyst/CarbonDDLSqlParser.scala b/integration/spark-common/src/main/scala/org/apache/spark/sql/catalyst/CarbonDDLSqlParser.scala
index 129e6b3..66351e3 100644
--- a/integration/spark-common/src/main/scala/org/apache/spark/sql/catalyst/CarbonDDLSqlParser.scala
+++ b/integration/spark-common/src/main/scala/org/apache/spark/sql/catalyst/CarbonDDLSqlParser.scala
@@ -231,6 +231,23 @@ abstract class CarbonDDLSqlParser extends AbstractCarbonSparkSQLParser {
}
/**
+ * this function validates for the column names as tupleId, PositionReference and positionId
+ * @param fields
+ */
+ private def validateColumnNames(fields: Seq[Field]): Unit = {
+ fields.foreach { col =>
+ if (col.column.equalsIgnoreCase(CarbonCommonConstants.CARBON_IMPLICIT_COLUMN_TUPLEID) ||
+ col.column.equalsIgnoreCase(CarbonCommonConstants.CARBON_IMPLICIT_COLUMN_POSITIONID) ||
+ col.column.equalsIgnoreCase(CarbonCommonConstants.POSITION_REFERENCE)) {
+ throw new MalformedCarbonCommandException(
+ s"Carbon Implicit column ${col.column} is not allowed in" +
+ s" column name while creating table")
+ }
+
+ }
+ }
+
+ /**
* This will prepate the Model from the Tree details.
*
* @param ifNotExistPresent
@@ -252,6 +269,9 @@ abstract class CarbonDDLSqlParser extends AbstractCarbonSparkSQLParser {
isAlterFlow: Boolean = false,
tableComment: Option[String] = None): TableModel = {
+ // do not allow below key words as column name
+ validateColumnNames(fields)
+
fields.zipWithIndex.foreach { case (field, index) =>
field.schemaOrdinal = index
}