[ 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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)

Reply via email to