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
