提交 7a109250 编写于 作者: T tristaZero

Merge branch 'dev' of ssh://github.com/shardingjdbc/sharding-jdbc into dev

......@@ -91,6 +91,9 @@ public final class BinaryProtocolValue {
* @param binaryData binary data to be written
*/
public void write(final Object binaryData) {
if (null == binaryData) {
return;
}
switch (columnType) {
case MYSQL_TYPE_STRING:
case MYSQL_TYPE_VARCHAR:
......@@ -108,11 +111,7 @@ public final class BinaryProtocolValue {
payload.writeStringLenenc(binaryData.toString());
break;
case MYSQL_TYPE_LONGLONG:
if (binaryData instanceof BigDecimal) {
payload.writeInt8(((BigDecimal) binaryData).longValue());
} else {
payload.writeInt8((Long) binaryData);
}
writeInt8(binaryData);
break;
case MYSQL_TYPE_LONG:
case MYSQL_TYPE_INT24:
......@@ -143,4 +142,12 @@ public final class BinaryProtocolValue {
throw new IllegalArgumentException(String.format("Cannot find MySQL type '%s' in column type when write binary protocol value", columnType));
}
}
private void writeInt8(final Object binaryData) {
if (binaryData instanceof BigDecimal) {
payload.writeInt8(((BigDecimal) binaryData).longValue());
} else {
payload.writeInt8((Long) binaryData);
}
}
}
......@@ -39,13 +39,13 @@ public final class BinaryResultSetRowPacketTest {
private MySQLPacketPayload payload;
@Test
@Ignore
public void assertWrite() {
BinaryResultSetRowPacket actual = new BinaryResultSetRowPacket(1, 2, Arrays.<Object>asList("value", null), Arrays.asList(ColumnType.MYSQL_TYPE_STRING, ColumnType.MYSQL_TYPE_STRING));
assertThat(actual.getSequenceId(), is(1));
assertThat(actual.getData(), is(Arrays.<Object>asList("value", null)));
actual.write(payload);
verify(payload, times(2)).writeInt1(0x00);
verify(payload).writeInt1(0x00);
verify(payload).writeInt1(0x08);
verify(payload).writeStringLenenc("value");
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册