Hi,

I'd like to submit an idea regarding the current coupling of Avatica with
protobuf and jackson.

Avatica is both a framework to write a JDBC driver (used by Drill and
Flight SQL JDBC drivers) AND also a client/server protocol (used by Phoenix
and Druid).

Today most of the code is under the core module, and it handles both
aspects at the same time. But for projects only using the framework part,
this results in the introduction of extra dependencies which may either
conflict with their own use of those dependencies, or one could use the
shaded version which relocates those dependencies but this result in an
increase in artifact size (and also extra work re CVE analysis).

To illustrate the current situation:
* avatica jar (1.25.0) is 7MB (~20MB uncompressed)
* avatica classes only represent less than 4MB (out of 20MB), 800kb if you
remove proto, remote and ha classes.

The ideal scenario is that core Avatica classes do not depend on protobuf
and jackson (possibly by moving the protocol part out of core to make sure
concerns stay separated) but the effort is not trivial and would result in
some API breakage.

Would people be interested in addressing this issue, and okay to introduce
some public API breakage? Or are there other alternatives to be considered?

Cheers,

Laurent

Reply via email to