@Override
    public Serializable read(final MySQLBinlogColumnDef columnDef, final MySQLPacketPayload payload) {
        byte[] bytes = payload.readStringFixByBytes(VARCHAR_LENGTH_META_POINT > columnDef.getColumnMeta() ? payload.getByteBuf().readUnsignedByte() : payload.getByteBuf().readUnsignedShortLE());
        return new MySQLBinaryString(bytes);
    }
@Test
    void assertReadVarcharValueWithMeta2() {
        StringBuilder expectedStringBuilder = new StringBuilder("test string for length more than 256");
        for (int i = 0; i < 256; i++) {
            expectedStringBuilder.append(i);
        }
        byte[] expected = expectedStringBuilder.toString().getBytes();
        columnDef.setColumnMeta(expected.length);
        when(payload.getByteBuf()).thenReturn(byteBuf);
        when(byteBuf.readUnsignedShortLE()).thenReturn(expected.length);
        when(payload.readStringFixByBytes(expected.length)).thenReturn(expected);
        Serializable actual = new MySQLVarcharBinlogProtocolValue().read(columnDef, payload);
        assertThat(actual, instanceOf(MySQLBinaryString.class));
        assertThat(((MySQLBinaryString) actual).getBytes(), is(expected));
    }