This is an automated email from the ASF dual-hosted git repository. ajantha pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/carbondata.git
The following commit(s) were added to refs/heads/master by this push: new 5a715ce [CARBONDATA-3741] Fix ParseException from hive during ALTER SET TBLPROERTIES if database name starts with Underscore 5a715ce is described below commit 5a715cef7a1e191b08a2116d9b88aabea256dd77 Author: Indhumathi27 <indhumathi...@gmail.com> AuthorDate: Fri Mar 13 15:17:59 2020 +0530 [CARBONDATA-3741] Fix ParseException from hive during ALTER SET TBLPROERTIES if database name starts with Underscore Why is this PR needed? After creating table, on next query, we will fire alter query to alter schema if table has index table or not. If database name contains underscore as first letter, hive alter query fails with parsing exception. What changes were proposed in this PR? Format Database name with `` , before firing the query to avoid parsing exception Does this PR introduce any user interface change? No Is any new testcase added? Yes This closes #3668 --- .../org/apache/spark/sql/hive/CarbonHiveMetaStore.scala | 2 +- .../apache/spark/sql/hive/CarbonSessionCatalogUtil.scala | 4 ++-- .../allqueries/InsertIntoCarbonTableSpark2TestCase.scala | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonHiveMetaStore.scala b/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonHiveMetaStore.scala index b0a0d47..6cf7551 100644 --- a/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonHiveMetaStore.scala +++ b/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonHiveMetaStore.scala @@ -161,7 +161,7 @@ class CarbonHiveMetaStore extends CarbonFileMetastore { .catalog .externalCatalog.asInstanceOf[HiveExternalCatalog] .client - hiveClient.runSqlHive(s"ALTER TABLE $dbName.$tableName SET SERDEPROPERTIES($schemaParts)") + hiveClient.runSqlHive(s"ALTER TABLE `$dbName`.`$tableName` SET SERDEPROPERTIES($schemaParts)") sparkSession.catalog.refreshTable(TableIdentifier(tableName, Some(dbName)).quotedString) removeTableFromMetadata(dbName, tableName) diff --git a/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonSessionCatalogUtil.scala b/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonSessionCatalogUtil.scala index f6a5475..db66acc 100644 --- a/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonSessionCatalogUtil.scala +++ b/integration/spark/src/main/scala/org/apache/spark/sql/hive/CarbonSessionCatalogUtil.scala @@ -72,8 +72,8 @@ object CarbonSessionCatalogUtil { cols: Option[Seq[ColumnSchema]], sparkSession: SparkSession): Unit = { getClient(sparkSession) - .runSqlHive(s"ALTER TABLE ${ tableIdentifier.database.get }.${ tableIdentifier.table } " + - s"SET TBLPROPERTIES(${ schemaParts })") + .runSqlHive(s"ALTER TABLE `${tableIdentifier.database.get}`.`${tableIdentifier.table}` " + + s"SET TBLPROPERTIES($schemaParts)") } def alterTableProperties( diff --git a/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/allqueries/InsertIntoCarbonTableSpark2TestCase.scala b/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/allqueries/InsertIntoCarbonTableSpark2TestCase.scala index 7dafaf7..f4a60f0 100644 --- a/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/allqueries/InsertIntoCarbonTableSpark2TestCase.scala +++ b/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/allqueries/InsertIntoCarbonTableSpark2TestCase.scala @@ -31,7 +31,21 @@ class InsertIntoCarbonTableSpark2TestCase extends QueryTest with BeforeAndAfterA checkAnswer(sql("select * from OneRowTable"), Seq(Row("0.1", "a.b", 1, 1.2))) } + test("test insert into with database name having underscore") { + sql("drop table if exists OneRowTable") + sql("create table OneRowTable(col1 string, col2 string, col3 int, col4 double) STORED AS carbondata") + sql("insert into OneRowTable select '0.1', 'a.b', 1, 1.2") + checkAnswer(sql("select * from OneRowTable"), Seq(Row("0.1", "a.b", 1, 1.2))) + sql("drop database if exists _default cascade") + sql("create database _default") + sql("create table _default._OneRowTable(col1 string, col2 string, col3 int, col4 double) STORED AS carbondata") + sql("insert into _default._OneRowTable select * from OneRowTable") + checkAnswer(sql("select * from _default._OneRowTable"), Seq(Row("0.1", "a.b", 1, 1.2))) + sql("drop database if exists _default cascade") + } + override def afterAll { sql("drop table if exists OneRowTable") + sql("drop database if exists _default cascade") } }