You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2021/11/15 13:56:00 UTC

[jira] [Work logged] (HIVE-25701) Declare JDBC drivers as runtime & optional dependencies

     [ https://issues.apache.org/jira/browse/HIVE-25701?focusedWorklogId=681511&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-681511 ]

ASF GitHub Bot logged work on HIVE-25701:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 15/Nov/21 13:55
            Start Date: 15/Nov/21 13:55
    Worklog Time Spent: 10m 
      Work Description: zabetak opened a new pull request #2790:
URL: https://github.com/apache/hive/pull/2790


   ### What changes were proposed in this pull request?
   1. Use dependency management section for setting version, scope, and optionality of a JDBC driver.
   2. Remove download-maven-plugin.
   3. Add explicit dependencies to drivers when necessary.
   4. Gather JDBC declarations together in dependency management.
   
   ### Why are the changes needed?
   1. Eliminates the risk to write code which needs JDBC driver classes in order to compile and potentially violate AL2.
   2. Unifies the declaration of JDBC drivers making easier to add/remove one if necessary.
   3. Removes the need to use download-maven-plugin and other similar workarounds to avoid licensing problems.
   4. Simplifies the execution of tests using these drivers since now they are added in the runtime classpath automatically by maven.
   5. Projects with dependencies depending on Hive will not inherit any JDBC driver by default.
   
   ### Does this PR introduce _any_ user-facing change?
   Projects depending on Hive modules with derby must now declare the JDBC driver dependency explicitly.
   
   ### How was this patch tested?
   1. Run various tests dependent on the presence of JDBC drivers
   ```
   cd standalone-metastore/metastore-server
   mvn verify -DskipITests=false -Dtest=nosuch -Dit.test=ITestDerby
   mvn verify -DskipITests=false -Dtest=nosuch -Dit.test=ITestPostgres
   mvn verify -DskipITests=false -Dtest=nosuch -Dit.test=ITestOracle
   mvn verify -DskipITests=false -Dtest=nosuch -Dit.test=ITestMysql
   mvn verify -DskipITests=false -Dtest=nosuch -Dit.test=ITestMssql
   
   cd itests/qtest
   mvn test -Dtest=TestMiniLlapLocalCliDriver -Dqfile_regex=jdbc_table_with_schema.*
   ```
   2. Ensure JDBC drivers appear as runtime & optional via mvn dependency:tree


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Issue Time Tracking
-------------------

            Worklog Id:     (was: 681511)
    Remaining Estimate: 0h
            Time Spent: 10m

> Declare JDBC drivers as runtime & optional dependencies
> -------------------------------------------------------
>
>                 Key: HIVE-25701
>                 URL: https://issues.apache.org/jira/browse/HIVE-25701
>             Project: Hive
>          Issue Type: Task
>          Components: Standalone Metastore, Testing Infrastructure
>            Reporter: Stamatis Zampetakis
>            Assignee: Stamatis Zampetakis
>            Priority: Major
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently, we are using the following JDBC drivers in various Hive modules:
> * MariaDB
> * MySQL
> * Oracle
> * Postgres
> * MSSQL
> * Derby
> MariaDB, MySQL, and Oracle licenses are not compatible with Apache License 2 ([Category-X |https://www.apache.org/legal/resolved.html#category-x]) and in the past we used various ways to circumvent licensing problems (see HIVE-23284). Now, some of them appear as test scope dependency which is OKish but in the near future may lead again to licensing problems.
> JDBC drivers are only needed at runtime so they could all be declared at runtime scope. Moreover, Hive does not require a specific JDBC driver in order to operate so they are all optional. 
> The goal of this issue is to declare every JDBC driver at runtime scope and mark it as optional ([ASF-optional|https://www.apache.org/legal/resolved.html#optional], [maven-optional|https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html]). 
> This has the following advantages:
> * Eliminates the risk to write code which needs JDBC driver classes in order to compile and potentially violate AL2.
> * Unifies the declaration of JDBC drivers making easier to add/remove some if necessary.
> * Removes the need to use download-maven-plugin and other similar workarounds to avoid licensing problems.
> * Simplifies the execution of tests using these drivers since now they are added in the runtime classpath automatically by maven.
> * Projects with dependencies depending on Hive will not inherit any JDBC driver by default.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)