Skip to content

Commit e8f000d

Browse files
committed
[CONJ-1153] session tracking only read first SYSTEM_VARIABLES session tracking change
1 parent 30b00ea commit e8f000d

File tree

1 file changed

+19
-16
lines changed

1 file changed

+19
-16
lines changed

src/main/java/org/mariadb/jdbc/internal/protocol/AbstractQueryProtocol.java

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)