[GitHub] spark pull request #14323: [SPARK-16675][SQL] Avoid per-record type dispatch...
Github user asfgit closed the pull request at: https://github.com/apache/spark/pull/14323 --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. --- - To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org
[GitHub] spark pull request #14323: [SPARK-16675][SQL] Avoid per-record type dispatch...
Github user HyukjinKwon commented on a diff in the pull request: https://github.com/apache/spark/pull/14323#discussion_r72185977 --- Diff: sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala --- @@ -138,6 +138,79 @@ object JdbcUtils extends Logging { throw new IllegalArgumentException(s"Can't get JDBC type for ${dt.simpleString}")) } + // A `JDBCValueSetter` is responsible for converting and setting a value from `Row` into + // a field for `PreparedStatement`. The last argument `Int` means the index for the + // value to be set in the SQL statement and also used for the value in `Row`. + private type JDBCValueSetter = (PreparedStatement, Row, Int) => Unit --- End diff -- Fixed! --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. --- - To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org
[GitHub] spark pull request #14323: [SPARK-16675][SQL] Avoid per-record type dispatch...
Github user cloud-fan commented on a diff in the pull request: https://github.com/apache/spark/pull/14323#discussion_r72185133 --- Diff: sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala --- @@ -138,6 +138,79 @@ object JdbcUtils extends Logging { throw new IllegalArgumentException(s"Can't get JDBC type for ${dt.simpleString}")) } + // A `JDBCValueSetter` is responsible for converting and setting a value from `Row` into + // a field for `PreparedStatement`. The last argument `Int` means the index for the + // value to be set in the SQL statement and also used for the value in `Row`. + private type JDBCValueSetter = (PreparedStatement, Row, Int) => Unit --- End diff -- please rename the read path too. --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. --- - To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org
[GitHub] spark pull request #14323: [SPARK-16675][SQL] Avoid per-record type dispatch...
Github user HyukjinKwon commented on a diff in the pull request: https://github.com/apache/spark/pull/14323#discussion_r72179986 --- Diff: sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala --- @@ -138,6 +138,80 @@ object JdbcUtils extends Logging { throw new IllegalArgumentException(s"Can't get JDBC type for ${dt.simpleString}")) } + // A `JDBCValueGetter` is responsible for converting, getting a value from `Row` + // and then setting into a field for `PreparedStatement`. The last argument + // `Int` means the index for the value to be set in the SQL statement and also used + // for the value to retrieve from `Row`. + private type JDBCValueGetter = (PreparedStatement, Row, Int) => Unit --- End diff -- Sure! thanks! --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. --- - To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org
[GitHub] spark pull request #14323: [SPARK-16675][SQL] Avoid per-record type dispatch...
Github user cloud-fan commented on a diff in the pull request: https://github.com/apache/spark/pull/14323#discussion_r72179607 --- Diff: sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JdbcUtils.scala --- @@ -138,6 +138,80 @@ object JdbcUtils extends Logging { throw new IllegalArgumentException(s"Can't get JDBC type for ${dt.simpleString}")) } + // A `JDBCValueGetter` is responsible for converting, getting a value from `Row` + // and then setting into a field for `PreparedStatement`. The last argument + // `Int` means the index for the value to be set in the SQL statement and also used + // for the value to retrieve from `Row`. + private type JDBCValueGetter = (PreparedStatement, Row, Int) => Unit --- End diff -- hmm, I think `setter` is a more proper name here, and we should use `getter` for the read path. `JDBCValueGetter`, sounds like we get the value from JDBC. --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. --- - To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org
[GitHub] spark pull request #14323: [SPARK-16675][SQL] Avoid per-record type dispatch...
GitHub user HyukjinKwon opened a pull request: https://github.com/apache/spark/pull/14323 [SPARK-16675][SQL] Avoid per-record type dispatch in JDBC when writing ## What changes were proposed in this pull request? Currently, `JdbcUtils.savePartition` is doing type-based dispatch for each row to write appropriate values. So, appropriate setters for `PreparedStatement` can be created first according to the schema, and then apply them to each row. This approach is similar with `CatalystWriteSupport`. This PR simply make the setters to avoid this. ## How was this patch tested? Existing tests should cover this. You can merge this pull request into a Git repository by running: $ git pull https://github.com/HyukjinKwon/spark SPARK-16675 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/spark/pull/14323.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #14323 commit 4284d4621104c3badcb743d908e48f283130b186 Author: hyukjinkwonDate: 2016-07-23T02:59:25Z [SPARK-16675][SQL] Avoid per-record type dispatch in JDBC when writing commit 8cac7dec9b1b999d3c5aa8ecf2086c40078ea4d9 Author: hyukjinkwon Date: 2016-07-23T03:01:16Z Fix comment --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. --- - To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org