Stamatis Zampetakis created HIVE-25701:
------------------------------------------

             Summary: 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


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