databendlabs / databend-jdbc

jdbc implementation for databend cloud
Apache License 2.0
11 stars 10 forks source link

refactor: adjust the interface between `com.databend.client` and ` com.databend.jdbc`. #289

Open youngsofun opened 2 hours ago

youngsofun commented 2 hours ago

the current DatabendQueryClient in com.databend.client is in fact a ResultSet, so it is not possible to extend other API based on it, especially session related ones.

Option 1

like in our go and rust clients, there is a core Client class with almost full capability and low level interface, and a Conn class to adopt to driver interface (not so strict in go, since Conn is bring into some low level).

need to create a new DatabendClient in com.databend.client and move some logic from com.databend.jdbc to it.

Option 2

if a low level Java API is not useful at all, we can combine com.databend.client into com.databend.jdbc directly. bendsql need it for cli and multi language support?

youngsofun commented 2 hours ago

cc @hantmac @ZhiHanZ @sundy-li @TCeason

flaneur2020 commented 2 hours ago

can it phase into depending on the rust core? cc @Xuanwo can you share some experience about opendal's java binding?

Xuanwo commented 2 hours ago

can it phase into depending on the rust core? cc @Xuanwo can you share some experience about opendal's java binding?

Well, it's relatively easy—just exposing some Rust API to the Java side. We can reuse the existing JDBC related code and replace the core (http related things)

flaneur2020 commented 2 hours ago

so, let's move forward to the rust core on jdbc?

Xuanwo commented 2 hours ago

so, let's move forward to the rust core on jdbc?

Here is my +1 vote. I prefer to go with the rust direction. Maintaining a Rust core and utilizing it across our SDKs will dramatically reduce costs.