Skip to content

Commit 633d5d2

Browse files
committed
Merge pull request #36 from chenyun/patch-1
AbstractRowsDeserializer: make logic flow more reasonable
2 parents f1fb18b + b9f4214 commit 633d5d2

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

src/main/java/com/github/shyiko/mysql/binlog/event/deserialization/AbstractRowsEventDataDeserializer.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -71,28 +71,28 @@ protected Serializable[] deserializeRow(long tableId, BitSet includedColumns, By
7171
Serializable[] result = new Serializable[numberOfBitsSet(includedColumns)];
7272
BitSet nullColumns = inputStream.readBitSet(result.length, true);
7373
for (int i = 0, numberOfSkippedColumns = 0; i < types.length; i++) {
74-
int typeCode = types[i] & 0xFF, meta = metadata[i], length = 0;
75-
if (typeCode == ColumnType.STRING.getCode() && meta > 256) {
76-
int meta0 = meta >> 8, meta1 = meta & 0xFF;
77-
if ((meta0 & 0x30) != 0x30) { // long CHAR field
78-
typeCode = meta0 | 0x30;
79-
length = meta1 | (((meta0 & 0x30) ^ 0x30) << 4);
80-
} else {
81-
if (meta0 == ColumnType.SET.getCode() || meta0 == ColumnType.ENUM.getCode() ||
82-
meta0 == ColumnType.STRING.getCode()) {
83-
typeCode = meta0;
84-
length = meta1;
85-
} else {
86-
throw new IOException("Unexpected meta " + meta + " for column of type " + typeCode);
87-
}
88-
}
89-
}
9074
if (!includedColumns.get(i)) {
9175
numberOfSkippedColumns++;
9276
continue;
9377
}
9478
int index = i - numberOfSkippedColumns;
9579
if (!nullColumns.get(index)) {
80+
int typeCode = types[i] & 0xFF, meta = metadata[i], length = 0;
81+
if (typeCode == ColumnType.STRING.getCode() && meta > 256) {
82+
int meta0 = meta >> 8, meta1 = meta & 0xFF;
83+
if ((meta0 & 0x30) != 0x30) { // long CHAR field
84+
typeCode = meta0 | 0x30;
85+
length = meta1 | (((meta0 & 0x30) ^ 0x30) << 4);
86+
} else {
87+
if (meta0 == ColumnType.SET.getCode() || meta0 == ColumnType.ENUM.getCode() ||
88+
meta0 == ColumnType.STRING.getCode()) {
89+
typeCode = meta0;
90+
length = meta1;
91+
} else {
92+
throw new IOException("Unexpected meta " + meta + " for column of type " + typeCode);
93+
}
94+
}
95+
}
9696
result[index] = deserializeCell(ColumnType.byCode(typeCode), meta, length, inputStream);
9797
}
9898
}
@@ -374,4 +374,4 @@ private static long bigEndianLong(byte[] bytes, int offset, int length) {
374374
return result;
375375
}
376376

377-
}
377+
}

0 commit comments

Comments
 (0)