Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-25701

Declare JDBC drivers as runtime & optional dependencies

    XMLWordPrintableJSON

Details

    Description

      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 ) 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, maven-optional).

      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.

      Attachments

        Issue Links

          Activity

            People

              zabetak Stamatis Zampetakis
              zabetak Stamatis Zampetakis
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 0.5h
                  0.5h