You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by rx...@apache.org on 2015/06/07 08:00:12 UTC
spark git commit: [SPARK-8004][SQL] Enclose column names by JDBC
Dialect
Repository: spark
Updated Branches:
refs/heads/master 3285a5112 -> 901a552c5
[SPARK-8004][SQL] Enclose column names by JDBC Dialect
JIRA: https://issues.apache.org/jira/browse/SPARK-8004
Author: Liang-Chi Hsieh <vi...@gmail.com>
Closes #6577 from viirya/enclose_jdbc_columns and squashes the following commits:
614606a [Liang-Chi Hsieh] For comment.
bc50182 [Liang-Chi Hsieh] Enclose column names by JDBC Dialect.
Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/901a552c
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/901a552c
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/901a552c
Branch: refs/heads/master
Commit: 901a552c5e973262fddbf70ee2d4078c948bc668
Parents: 3285a51
Author: Liang-Chi Hsieh <vi...@gmail.com>
Authored: Sat Jun 6 22:59:31 2015 -0700
Committer: Reynold Xin <rx...@databricks.com>
Committed: Sat Jun 6 22:59:31 2015 -0700
----------------------------------------------------------------------
.../main/scala/org/apache/spark/sql/jdbc/JDBCRDD.scala | 4 +++-
.../scala/org/apache/spark/sql/jdbc/JdbcDialects.scala | 13 +++++++++++++
.../scala/org/apache/spark/sql/jdbc/JDBCSuite.scala | 11 +++++++++++
3 files changed, 27 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/spark/blob/901a552c/sql/core/src/main/scala/org/apache/spark/sql/jdbc/JDBCRDD.scala
----------------------------------------------------------------------
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/jdbc/JDBCRDD.scala b/sql/core/src/main/scala/org/apache/spark/sql/jdbc/JDBCRDD.scala
index 40b604d..2930f7b 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/jdbc/JDBCRDD.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/jdbc/JDBCRDD.scala
@@ -211,12 +211,14 @@ private[sql] object JDBCRDD extends Logging {
requiredColumns: Array[String],
filters: Array[Filter],
parts: Array[Partition]): RDD[Row] = {
+ val dialect = JdbcDialects.get(url)
+ val enclosedColumns = requiredColumns.map(dialect.columnEnclosing(_))
new JDBCRDD(
sc,
getConnector(driver, url, properties),
pruneSchema(schema, requiredColumns),
fqTable,
- requiredColumns,
+ enclosedColumns,
filters,
parts,
properties)
http://git-wip-us.apache.org/repos/asf/spark/blob/901a552c/sql/core/src/main/scala/org/apache/spark/sql/jdbc/JdbcDialects.scala
----------------------------------------------------------------------
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/jdbc/JdbcDialects.scala b/sql/core/src/main/scala/org/apache/spark/sql/jdbc/JdbcDialects.scala
index 6a169e1..04052f8 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/jdbc/JdbcDialects.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/jdbc/JdbcDialects.scala
@@ -80,6 +80,15 @@ abstract class JdbcDialect {
* @return The new JdbcType if there is an override for this DataType
*/
def getJDBCType(dt: DataType): Option[JdbcType] = None
+
+ /**
+ * Enclose column name
+ * @param colName The coulmn name
+ * @return Enclosed column name
+ */
+ def columnEnclosing(colName: String): String = {
+ s""""$colName""""
+ }
}
/**
@@ -208,4 +217,8 @@ case object MySQLDialect extends JdbcDialect {
Some(BooleanType)
} else None
}
+
+ override def columnEnclosing(colName: String): String = {
+ s"`$colName`"
+ }
}
http://git-wip-us.apache.org/repos/asf/spark/blob/901a552c/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala
----------------------------------------------------------------------
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala
index 7931854..a228543 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala
@@ -410,6 +410,17 @@ class JDBCSuite extends SparkFunSuite with BeforeAndAfter {
assert(JdbcDialects.get("test.invalid") == NoopDialect)
}
+ test("Enclosing column names by jdbc dialect") {
+ val MySQL = JdbcDialects.get("jdbc:mysql://127.0.0.1/db")
+ val Postgres = JdbcDialects.get("jdbc:postgresql://127.0.0.1/db")
+
+ val columns = Seq("abc", "key")
+ val MySQLColumns = columns.map(MySQL.columnEnclosing(_))
+ val PostgresColumns = columns.map(Postgres.columnEnclosing(_))
+ assert(MySQLColumns === Seq("`abc`", "`key`"))
+ assert(PostgresColumns === Seq(""""abc"""", """"key""""))
+ }
+
test("Dialect unregister") {
JdbcDialects.registerDialect(testH2Dialect)
JdbcDialects.unregisterDialect(testH2Dialect)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org