Skip to content

Commit 3f71e56

Browse files
committed
docs: Note on JDBC drivers in the contribution guidelines
1 parent c3ca3c4 commit 3f71e56

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

CONTRIBUTING.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -126,15 +126,15 @@ To enhance the adoption of community-contributed drivers, we decided to split th
126126
4. Posting a backlink to an open-source repository would be a good idea here so people can provide feedback on it by posting issues.
127127
5. Before creating PR for the main repository, please make sure it's tested with the standard Cube E2E testing suite. An example of an E2E testing suite can be found here: https://github.com/cube-js/cube/blob/master/packages/cubejs-testing/test/driver-postgres.test.ts
128128
6. If you're creating PR for the main repo, please be prepared to become a maintainer for this driver and dedicate some time to it. There're no specific time requirements. As a rule of thumb, you should expect to spend time on a weekly basis.
129-
7. Due to limited resources Core team will review and merge driver PRs based on popularity and development activity.
129+
7. Due to limited resources Core team will review and merge driver PRs based on popularity and development activity. Preference is given to drivers that are used by a significant number of users.
130130

131131
### Implementing a Driver
132132

133133
1. Copy existing driver package structure and name it in `@cubejs-backend/<db-name>-driver` format.
134134
`@cubejs-backend/mysql-driver` is a very good candidate for copying this structure.
135135
2. Please do not copy *CHANGELOG.md*.
136136
3. Name driver class and adjust package.json, README.md accordingly.
137-
4. As a rule of thumb please use only Pure JS libraries as a dependencies where possible.
137+
4. As a rule of thumb please use only pure JS libraries as a dependencies where possible.
138138
It increases driver adoption rate a lot.
139139
5. Typically, you need to implement only `query()` and `testConnection()` methods of driver.
140140
The rest will be done by `BaseDriver` class.
@@ -145,10 +145,9 @@ The rest will be done by `BaseDriver` class.
145145

146146
### Implementing a JDBC Driver
147147

148-
If there's existing JDBC Driver in place for Database of interest you can just create `DbTypes` configuration inside
149-
[cubejs-jdbc-driver/driver/JDBCDriver.ts](https://github.com/cube-js/cube/blob/master/packages/cubejs-jdbc-driver/src/JDBCDriver.ts).
150-
Most of the time no additional adjustments required for base `JDBCDriver` implementation as JDBC is pretty standard.
151-
In case you need to tweak it a little please follow [Implementing Driver](#implementing-driver) steps but use `JDBCDriver` as your base driver class.
148+
It is recommended to implement native, non-JDBC drivers for databases. Even though implementing
149+
a JDBC driver might seem like a quick solution, its reliance on external libraries makes it
150+
harder to maintain. Also, such drivers often lack support for important features, such as export buckets and various authentication methods.
152151

153152
### Implementing SQL Dialect
154153

0 commit comments

Comments
 (0)