raminqaf commented on code in PR #29370:
URL: https://github.com/apache/flink/pull/29370#discussion_r4181964779
##########
flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/runtime/functions/VariantCastUtilsTest.java:
##########
@@ -65,6 +79,49 @@ void testCastToVariantRejectsValuesOverTheSizeLimit() {
.hasMessageStartingWith("Cannot cast a string value of
16777212 bytes to VARIANT.");
}
+ @ParameterizedTest
+ @ValueSource(strings = {"", "hello", "Grüße, 世界 🚀"})
+ void testCastStringToVariantStoresItsUtf8Bytes(final String str) {
+
assertThat(fromString(binaryString(str.getBytes(UTF_8)))).isEqualTo(BUILDER.of(str));
+ }
+
+ @ParameterizedTest
+ @MethodSource("invalidUtf8")
+ void testCastStringToVariantReplacesInvalidUtf8(final byte[] invalid) {
+ final Variant variant = fromString(binaryString(invalid));
+
+ assertThat(variant.getString()).contains(REPLACEMENT_CHARACTER);
+ assertThat(variant).isEqualTo(BUILDER.of(new String(invalid, UTF_8)));
+ }
+
+ private static Stream<byte[]> invalidUtf8() {
+ return Stream.of(
+ new byte[] {'a', (byte) 0xFF, 'b'},
+ new byte[] {'a', (byte) 0xC3},
+ new byte[] {(byte) 0xC0, (byte) 0xAF},
+ new byte[] {(byte) 0xED, (byte) 0xA0, (byte) 0x80});
+ }
+
+ @ParameterizedTest(name = "{0} as DECIMAL({1}, {2})")
+ @CsvSource({
+ "0, 1, 0",
+ "1.50, 10, 2",
+ "999999999, 9, 0",
+ "-0.999999999, 9, 9",
+ "1000000000, 10, 0",
+ "0.0000000001, 10, 10",
+ "-999999999999999999, 18, 0",
Review Comment:
`DecimalType` rejects any scale outside `[0, precision]`, so `fromDecimal`
never sees one. The builder test already covers (5, -1).
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]