/** * Decodes the encoded value - see {@link #fromLogical(Schema, BigDecimal)} for encoding format * * @param value the encoded value * @return the decoded value */ public static SpecialValueDecimal toLogical(final Struct value) { return new SpecialValueDecimal(new BigDecimal(new BigInteger(value.getBytes(VALUE_FIELD)), value.getInt32(SCALE_FIELD))); } }
private void assertGeomRecord(Struct value) { Struct after = value.getStruct(Envelope.FieldName.AFTER); Integer i = after.getInt32("id"); Testing.debug(after); assertThat(i).isNotNull(); if (i == 1) { // INSERT INTO dbz_507_geometry VALUES (1, ST_GeomFromText('POINT(1 1)', 4326), ST_GeomFromText('LINESTRING(0 0, 1 1)', 3187), ST_GeomFromText('POLYGON((0 0, 1 1, 1 0, 0 0))'), ST_GeomFromText('GEOMETRYCOLLECTION(POINT(1 1), LINESTRING(0 0, 1 1))', 4326)); assertThat(after.getStruct("geom").getInt32("srid")).isEqualTo(4326); assertThat(DatatypeConverter.printHexBinary(after.getStruct("geom").getBytes("wkb"))).isEqualTo("0101000000000000000000F03F000000000000F03F"); assertThat(after.getStruct("linestring").getInt32("srid")).isEqualTo(3187); assertThat(DatatypeConverter.printHexBinary(after.getStruct("linestring").getBytes("wkb"))).isEqualTo("01020000000200000000000000000000000000000000000000000000000000F03F000000000000F03F"); assertThat(after.getStruct("polygon").getInt32("srid")).isEqualTo(null); assertThat(DatatypeConverter.printHexBinary(after.getStruct("polygon").getBytes("wkb"))).isEqualTo("0103000000010000000400000000000000000000000000000000000000000000000000F03F000000000000F03F000000000000F03F000000000000000000000000000000000000000000000000"); assertThat(after.getStruct("collection").getInt32("srid")).isEqualTo(4326); assertThat(DatatypeConverter.printHexBinary(after.getStruct("collection").getBytes("wkb"))).isEqualTo("0107000000020000000101000000000000000000F03F000000000000F03F01020000000200000000000000000000000000000000000000000000000000F03F000000000000F03F"); } else if (i == 2) { // INSERT INTO dbz_507_geometry VALUES (2, ST_GeomFromText('LINESTRING(0 0, 1 1)'), NULL, NULL, NULL); assertThat(after.getStruct("geom").getInt32("srid")).isEqualTo(null); assertThat(DatatypeConverter.printHexBinary(after.getStruct("geom").getBytes("wkb"))).isEqualTo("01020000000200000000000000000000000000000000000000000000000000F03F000000000000F03F"); assertThat(after.getStruct("linestring")).isNull(); assertThat(after.getStruct("polygon")).isNull(); assertThat(after.getStruct("collection")).isNull(); } }
assertThat(c1).isEqualTo(Boolean.TRUE); byte[] c2 = after.getBytes("c2"); assertThat(c2.length).isEqualTo(1); assertThat(c2[0]).isEqualTo((byte) 2); byte[] c3 = after.getBytes("c3"); assertThat(c3.length).isEqualTo(1); assertThat(c3[0]).isEqualTo((byte) 64); byte[] c4 = after.getBytes("c4"); assertThat(c4.length).isEqualTo(8); // bytes, little endian assertThat(c4[0]).isEqualTo((byte) 219); // 11011011
/** * Decodes the encoded value - see {@link #fromLogical(Schema, BigDecimal)} for encoding format * * @param value the encoded value * @return the decoded value */ public static SpecialValueDecimal toLogical(final Struct value) { return new SpecialValueDecimal(new BigDecimal(new BigInteger(value.getBytes(VALUE_FIELD)), value.getInt32(SCALE_FIELD))); } }
for (Field field : schema.fields()) { if (this.config.fields.contains(field.name())) { byte[] buffer = input.getBytes(field.name()); struct.put(field.name(), new String(buffer, this.config.charset)); } else {
private void assertGeomRecord(Struct value) { Struct after = value.getStruct(Envelope.FieldName.AFTER); Integer i = after.getInt32("id"); Testing.debug(after); assertThat(i).isNotNull(); if (i == 1) { // INSERT INTO dbz_507_geometry VALUES (1, ST_GeomFromText('POINT(1 1)', 4326), ST_GeomFromText('LINESTRING(0 0, 1 1)', 3187), ST_GeomFromText('POLYGON((0 0, 1 1, 1 0, 0 0))'), ST_GeomFromText('GEOMETRYCOLLECTION(POINT(1 1), LINESTRING(0 0, 1 1))', 4326)); assertThat(after.getStruct("geom").getInt32("srid")).isEqualTo(4326); assertThat(DatatypeConverter.printHexBinary(after.getStruct("geom").getBytes("wkb"))).isEqualTo("0101000000000000000000F03F000000000000F03F"); assertThat(after.getStruct("linestring").getInt32("srid")).isEqualTo(3187); assertThat(DatatypeConverter.printHexBinary(after.getStruct("linestring").getBytes("wkb"))).isEqualTo("01020000000200000000000000000000000000000000000000000000000000F03F000000000000F03F"); assertThat(after.getStruct("polygon").getInt32("srid")).isEqualTo(null); assertThat(DatatypeConverter.printHexBinary(after.getStruct("polygon").getBytes("wkb"))).isEqualTo("0103000000010000000400000000000000000000000000000000000000000000000000F03F000000000000F03F000000000000F03F000000000000000000000000000000000000000000000000"); assertThat(after.getStruct("collection").getInt32("srid")).isEqualTo(4326); assertThat(DatatypeConverter.printHexBinary(after.getStruct("collection").getBytes("wkb"))).isEqualTo("0107000000020000000101000000000000000000F03F000000000000F03F01020000000200000000000000000000000000000000000000000000000000F03F000000000000F03F"); } else if (i == 2) { // INSERT INTO dbz_507_geometry VALUES (2, ST_GeomFromText('LINESTRING(0 0, 1 1)'), NULL, NULL, NULL); assertThat(after.getStruct("geom").getInt32("srid")).isEqualTo(null); assertThat(DatatypeConverter.printHexBinary(after.getStruct("geom").getBytes("wkb"))).isEqualTo("01020000000200000000000000000000000000000000000000000000000000F03F000000000000F03F"); assertThat(after.getStruct("linestring")).isNull(); assertThat(after.getStruct("polygon")).isNull(); assertThat(after.getStruct("collection")).isNull(); } }
assertThat(c1).isEqualTo(Boolean.TRUE); byte[] c2 = after.getBytes("c2"); assertThat(c2.length).isEqualTo(1); assertThat(c2[0]).isEqualTo((byte) 2); byte[] c3 = after.getBytes("c3"); assertThat(c3.length).isEqualTo(1); assertThat(c3[0]).isEqualTo((byte) 64); byte[] c4 = after.getBytes("c4"); assertThat(c4.length).isEqualTo(8); // bytes, little endian assertThat(c4[0]).isEqualTo((byte) 219); // 11011011