Skip to content

Release v0.3.0

Compare
Choose a tag to compare
@github-actions github-actions released this 24 Mar 01:48
549a62f

This is a feature release with enhancements and breaking changes. It's NOT recommended to upgrade if you feel comfortable with 0.2.x. If your work relies on non-JDBC APIs, you may want to wait until we're done with the refactoring in 0.4.0.

  • BREAKING CHANGES

    • dropped JDK 7 support
    • removed Guava dependency - please use long/BigInteger to deal with UInt64 instead of UnsignedLong
  • NEW FEATURES

    • JDBC 4.2 support

    • add connection setting client_name for load-balancing and troubleshooting

    • add writeBytes & writeUUIDArray and remove UnsignedLong related methods in ClickHouseRowBinaryStream

    • support more data types: IPv4, IPv6, Int128, UInt128, Int256, UInt256, Decimal256, DateTime*, and Map

    • support ORC/Parquet streaming

    • support read/write Bitmap from/into AggregateFunction(groupBitmap, UInt[8-64]) column

      Examples...
      // use JDBC interface - NOT recommended before 0.3.1
      try (PreparedStatement statement = connection.prepareStatement("insert into my_bitmap_table values(..., ?, ...)")) {
          ...
          // RoaringBitmap bitmap = RoaringBitmap.bitmapOf(1,2,3,...);
          s.setObject(index++, ClickHouseBitmap.wrap(bitmap, ClickHouseDataType.UInt32));
          ...
          // the actual SQL in 0.3.0 will be something like, which is also why batch insertion does not work...
          // insert into my_bitmap_table values(..., bitmapBuild([toUInt32(1),toUInt32(3),toUInt32(3),...]) ...)
          s.execute();
      }
      
      // use extended API - recommended in 0.3.0
      try (ClickHouseStatement statement = connection.createStatement()) {
          statement.sendRowBinaryStream("insert into my_bitmap_table", new ClickHouseStreamCallback() {
              public void writeTo(ClickHouseRowBinaryStream stream) throws IOException {
                  ...
                  // RoaringBitmap bitmap = RoaringBitmap.bitmapOf(1,2,3,...);
                  // In addition to RoaringBitmap, you can pass:
                  // ImmutableRoaringBitmap, MutableRoaringBitmap and even Roaring64NavigableMap
                  stream.writeBitmap(ClickHouseBitmap.wrap(bitmap, ClickHouseDataType.UInt32));
                  ...
              }
          });
      }
  • BUG FIXES

    • fix error when using ClickHouseCompression.none against 19.16
    • fix NegativeArraySizeException when dealing with large array
    • fix datetime/date display issue caused by timezone differences(between client and column/server)
    • throw SQLException instead of RuntimeException when instantiating ClickHouseConnectionImpl
  • MISC

    • 19.14-lts and 20.3-lts are no longer supported so they're removed from regression list