Repository navigation
Closed
Description
0.2.x
Focus on bug fixes, small enhancements, and backward compatibility...
0.3.x
Focus on new features, code clean up, and abstraction which may break existing interfaces/APIs...
Previous releases...
0.3.0-
BREAKING CHANGE: drop JDK7 support -
BREAKING CHANGE: remove Guava dependency (UnsignedLongis removed, please uselong(faster) orBigInteger(slower) instead forUInt64)
~~Note: shaded jar is now ~3.65MB(was 7.19MB in 0.2.6, and 5.68MB in 0.2.4).~~ -
JDBC 4.2 support -
more data types (including aliases) like IPv4, IPv6, DateTime64, *Int128, *Int256, Decimal256 and Map
Note:UInt128will be supported soon on server side. -
RoaringBitmap support - please use latest RoaringBitmap -
restructure code (clickhouse-jdbcfor JDBC compliance, andclickhouse-*clientfor efficiency and consistent behaviors like any other clickhouse client, see Proposal of restructuring code (RFC) #570) -
performance test (clickhouse-jdbcvs.clickhouse4jvs.clickhouse-native-jdbcvs.mariadb-java-client) -
CI enhancement: checkstyle, spellcheck & SonarCloud
-
0.3.1-
BREAKING CHANGE: remove deprecated stuff
Note: will also drop fallback of SQL parsing -
BREAKING CHANGE: exclude roaringbitmap in uber jar and remove jitpack.io maven repository - see Could not find com.github.RoaringBitmap:RoaringBitmap:0.9.9 #603 -
multi-statement support - only return the last result
-
Ongoing releases...
- 0.3.2
- JPMS support along with multi-release jars
19M target/clickhouse-jdbc-0.3.2-SNAPSHOT-all.jar 18M target/clickhouse-jdbc-0.3.2-SNAPSHOT-grpc.jar 664K target/clickhouse-jdbc-0.3.2-SNAPSHOT-http.jar 960K target/clickhouse-jdbc-0.3.2-SNAPSHOT-javadoc.jar 2.7M target/clickhouse-jdbc-0.3.2-SNAPSHOT-shaded.jar 428K target/clickhouse-jdbc-0.3.2-SNAPSHOT.jar - introduce abstract module
clickhouse-client, experimentalclickhouse-grpc-client, and HttpURLConnection-basedclickhouse-http-client - named parameter support(only available in
clickhouse-client) - support RowBinary* format and more data types(Geo types, Date32, Tuple, Nested, mixed use of Array/Tuple/Map etc.)
- new JDBC driver(
com.clickhouse.jdbc.ClickHouseDriver) built on top ofclickhouse-client
Note: both old and new drivers will co-exist in 0.3.x series and the old one will be removed starting from 0.4. - show schema of remote datasources(when JDBC bridge is available)
- fix timezone and DateTime64 related issues
- adaptive integration test against local testcontainer or a remote server, and categorize cases under different groups
- replace
jackson-databindandjackson-corebygson - enhance benchmarks to cover most JDBC drivers and data types
- alternative implementation for http(s) protocol(JDK 11 HttpClient)
- JPMS support along with multi-release jars
Reacted by Felix Mueller, josepowera, UnamedRus, audricbizouarn, filimonov, Cheng Pan, zeronewb, Eugene Klimov, melin, Okapist and 4 more
Reacted by Alexander Millin
Metadata
Metadata
Assignees
Labels
No labels
Activity
enqueue commentedon Jan 5, 2021
Hi @zhicwu , I am excited to see a renewed activity in this project. I think it is important that the official JDBC driver is maintained. Please let me know if there is anything I can help with.
zhicwu commentedon Jan 6, 2021
Thanks @enqueue, looking forward to work with you to carry on the development :) I'm focusing on
0.2.5at this point. I think we can resume the work for JDBC 4.2 support. I saw the PR pending for a while, and I hope you don't mind to spend some more time on that PR by merging changes from0.2.xand make it part of0.3.0.enqueue commentedon Jan 6, 2021
No need to hurry regarding new features. I will try to to help and take a dab at the items for 0.2.5 if you don't mind.
zhicwu commentedon Jan 6, 2021
Sure. Feel free to ping me on Telegram :)
kiwimg commentedon Jan 25, 2021
Roadmap is very nice,
enqueue commentedon Feb 6, 2021
Thanks for your effort, there sure is a lot on the roadmap for this year, and you already delivered some bugfixes and improvements! Most of the items sound very reasonable. There are three topics I would like to see represented a little bit more:
JDBC compatibility
This is a JDBC driver, not just a Java library for talking more easily to ClickHouse. We should strive for better JDBC compatibilit. I think that @serge-rider might have some valuable input here, too.
SQLException. Is there some rationale behind this?Cleaner code
The code has seen a couple of authors, each one of them using an individual style, and having different preferences regarding patterns. Bringing more consistency into this would help everybody to understand the code better and improve quality. Here are a couple of ideas:
-WerrorassertThrows(IAE.class, () -> doSomething()))ClickHouseContainerForTestis a great start, perhaps we could achieve better clarity by sticking to one pattern or even providing anAbstractClickHouseIntegrationTestCase😉Control non-JDBC API
The driver also provides some proprietary API, and this obviously has its benefits, too. However, I have seen some situations in which it was not clear, whether a method on e.g.
ClickHouseConnectionImplwas public on purpose. We must make sure that the public API is under control and production ready.Performance
The other community members are much more knowledgeable about performance than me, here is just a simple observation:
ResultSetis actually made for scrolling, i.e. the driver does not need to hold the whole result in memory. The first results could be available earlier and the memory does not have to explode. Some of the "big boys" use paging in the background. I do not know how to implement this using HTTP client and ClickHouse server, but there is probably a smart person out there who does.Perhaps we can discuss the items together, drop the ones which are not interesting to the community, create tickets for the remaining ones and bring them in order according to this roadmap. Do you see a chance for a short chat or virtual meeting with the major stakeholders and users?
zhicwu commentedon Feb 8, 2021
These are great inputs! IMO, put the repository name aside,
clickhouse-jdbcis both JDBC driver and Java client for ClickHouse :) Implementing JDBC interfaces simplifies integration, while as a Java client, it should stick with the clickhouse-way - simple to use and efficient in runtime. Alternatively, we can simply treat it as a JDBC wrapper over Java client for ClickHouse, meaning we can choose suitable interface to talk to ClickHouse using JVM languages, depending on what we need.I'm with you on JDBC compliance. That's why I created #545 and suggested to introduce a new setting. On the other hand, we probably don't have to completely follow JDBC standards - not only because ClickHouse has its own limitation(like transaction support, server-side cursor etc.), but also to save time so that we can focus on things that matter the most(like more data types support, streaming, caching, stability etc.). It seems we'd better restructure the code early using multiple modules/packages.
I think we can start to create more issues/feature requests and add them into the release plan, starting from 0.3.0. I'm sure we can fill the gap between 0.4 and 1.0 quickly ;) And of course it's a plan that we can change as needed.
Some more comments:
ClickHouseContainerForTest.beforeSuite()insetUpmethod ;)Veryfirefly commentedon Jul 16, 2021
hi, i look forward to contributing to clickhouse-jdbc, but I am not quite sure about the content of the work that needs to be done at present. I didn't find any
springboot-clickhouse-jdbc-starterrepository on github, so I implemented one easily. Is there any plan for future planning? Or is there anything I can help?zhicwu commentedon Jul 19, 2021
Sorry for the late response @Veryfirefly. Of course you can help :) I'm still in the middle of refactoring, but I think you can start with unassigned issues. Alternatively, if you have some new ideas regarding this driver, or Java client to be more specific, please feel free to create new issue for discussion and then submit a pull request for implementation.
Veryfirefly commentedon Jul 20, 2021
Thanks, how to claim an issues, i am not very clear , sorry...
zhicwu commentedon Jul 21, 2021
That's fine. Ping me (zhicwu) on Telegram/Slack and we can discuss more there.
kiwimg commentedon Oct 31, 2021
When will 0.3.2 be released,
in addition
Can bitmaps support bulk inserts?
zhicwu commentedon Nov 1, 2021
It's taking much longer time than I thought. I don't have an exact ETA at this point, but I'll create a few "beta" releases for public testing, after getting the new driver merged.
Are you using jdbc batch insertion? You can use extended API before 0.3.2. Feel free to open a new issue for discussion.
zhicwu commentedon Dec 29, 2021
Close this one and move unfinished items to #784.