@@ -1600,24 +1600,27 @@ private void handleStateChange(Buffer buf, Results results) {
16001600 buf .skipLengthEncodedBytes (); // info
16011601 while (buf .remaining () > 0 ) {
16021602 Buffer stateInfo = buf .getLengthEncodedBuffer ();
1603- if (stateInfo .remaining () > 0 ) {
1603+ while (stateInfo .remaining () > 0 ) {
16041604 switch (stateInfo .readByte ()) {
16051605 case StateChange .SESSION_TRACK_SYSTEM_VARIABLES :
1606- Buffer sessionVariableBuf = stateInfo .getLengthEncodedBuffer ();
1607- String variable = sessionVariableBuf .readStringLengthEncoded (StandardCharsets .UTF_8 );
1608- String value = sessionVariableBuf .readStringLengthEncoded (StandardCharsets .UTF_8 );
1609- logger .debug ("System variable change : {} = {}" , variable , value );
1610-
1611- // only variable uses
1612- switch (variable ) {
1613- case "auto_increment_increment" :
1614- autoIncrementIncrement = Integer .parseInt (value );
1615- results .setAutoIncrement (autoIncrementIncrement );
1616- break ;
1617-
1618- default :
1619- // variable not used by driver
1620- }
1606+ Buffer sessionVariableBuf ;
1607+ do {
1608+ sessionVariableBuf = stateInfo .getLengthEncodedBuffer ();
1609+ String variable = sessionVariableBuf .readStringLengthEncoded (StandardCharsets .UTF_8 );
1610+ String value = sessionVariableBuf .readStringLengthEncoded (StandardCharsets .UTF_8 );
1611+ logger .debug ("System variable change : {} = {}" , variable , value );
1612+
1613+ // only variable uses
1614+ switch (variable ) {
1615+ case "auto_increment_increment" :
1616+ autoIncrementIncrement = Integer .parseInt (value );
1617+ results .setAutoIncrement (autoIncrementIncrement );
1618+ break ;
1619+
1620+ default :
1621+ // variable not used by driver
1622+ }
1623+ } while (sessionVariableBuf .remaining () > 0 );
16211624 break ;
16221625
16231626 case StateChange .SESSION_TRACK_SCHEMA :
0 commit comments