Is it okay to bundle JDBC driver with jdbc driver connector in lib folder or Is there any other way to add dependency?

Hi Team,

Currently, we are bundling teradata jdbc driver in source code itself while developing destination airbyte teradata connector. Is it okay to keep like this or do we need to get it from any repository? What is the best in this case?

Hi @SatishChGit! This is an excellent question! Let me look into it and make sure I get back to you with the correct info.

1 Like

Hi natalyjazzviolin, Do you any update on this? I followed Updating Gradle Dependencies | Airbyte Documentation but didn’t get information on how JDBC libs can be managed.

Yes, I believe I’ve found the answer for you in this doc:
https://docs.airbyte.com/connector-development/tutorials/building-a-java-destination#step-5-implement-write

This:

The Postgres destination leverages the AbstractJdbcDestination superclass which makes it extremely easy to create a destination for a database or data warehouse if it has a compatible JDBC driver. If the destination you are implementing has a JDBC driver, be sure to check out AbstractJdbcDestination.

So make sure you use that abstracted class to implement the JDBC driver!

Thank you @natalyjazzviolin for your comments. Yes I implemented teradata java destination using AbstractJdbcDestination as teradata has JDBC driver to connect from java programs. Now the question here is, how we need to bundle teradatajdbcdriver.jar in to airbyte source code? Right now I added this jar in lib folder in the source code itself? Is it okay to bundle this or do we need to put in any gradle or maven dependency?

This class shouldn’t be in its own file, this should be implemented in the <ConnectorName>Destination.java like so:
public class <ConnectorName>Destination extends AbstractJdbcDestination implements Destination

You can look at an example in this file:

airbyte/airbyte-integrations/connectors/destination-postgres/src/main/java/io/airbyte/integrations/destination/postgres/PostgresDestination.java

So there should not be a need to bundle anything, as you would be extending the AbstractJdbcDestination superclass and extending it.

Able to resolve this issue by adding jdbc driver dependency using maven central as below in teradata connector build.gradle.

implementation ‘com.teradata.jdbc:terajdbc4:17.20.00.12’