Bug #110688 Quert packet buffer length too short for MariaDB 10.5.12
Submitted: 13 Apr 2023 23:00 Modified: 14 Apr 2023 21:40
Reporter: Jingyang Sun Email Updates:
Status: Unsupported Impact on me:
None 
Category:Connector / J Severity:S3 (Non-critical)
Version:8.0.32 OS:Any
Assigned to: CPU Architecture:Any

[13 Apr 2023 23:00] Jingyang Sun
Description:
In 8.0.32, calling Connection.setAutoCommit() on MariaDB database at version 10.5.12 will give the exception:

Caused by: com.mysql.cj.exceptions.WrongArgumentException: Buffer length is less than expected payload length.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
    at com.mysql.cj.protocol.a.NativePacketPayload.readString(NativePacketPayload.java:632)
    at com.mysql.cj.protocol.a.NativePacketPayload.readString(NativePacketPayload.java:606)
    at com.mysql.cj.protocol.a.NativeServerSessionStateController$NativeServerSessionStateChanges.init(NativeServerSessionStateController.java:119)
    at com.mysql.cj.protocol.a.result.OkPacket.parse(OkPacket.java:66)
    at com.mysql.cj.protocol.a.NativeProtocol.readServerStatusForResultSets(NativeProtocol.java:1751)
    at com.mysql.cj.protocol.a.TextResultsetReader.read(TextResultsetReader.java:116)
    at com.mysql.cj.protocol.a.TextResultsetReader.read(TextResultsetReader.java:48)
    at com.mysql.cj.protocol.a.NativeProtocol.read(NativeProtocol.java:1660)
    at com.mysql.cj.protocol.a.NativeProtocol.readAllResults(NativeProtocol.java:1714)
    at com.mysql.cj.protocol.a.NativeProtocol.sendQueryPacket(NativeProtocol.java:1064)
    at com.mysql.cj.protocol.a.NativeProtocol.sendQueryString(NativeProtocol.java:997)
    at com.mysql.cj.NativeSession.execSQL(NativeSession.java:663)
    at com.mysql.cj.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:2031)
    ... 17 more

How to repeat:
On a MariaDB 10.5.12 database,

class ExecuteBufferBug {
  public static void main(final String[] args) {
    try (final Connection conn = DriverManager.getConnection(args[0])) {
      conn.setAutoCommit(false); // this should give WrongArgumentException
    } catch (Exception e) {
      System.out.println("Exception: " + e.getMessage());
    }
  }
}
[14 Apr 2023 21:40] MySQL Verification Team
Thank you for the bug report. MariaDB server it's not supported.