diff --git a/common/unsafe/src/main/java/org/apache/spark/unsafe/types/UTF8String.java b/common/unsafe/src/main/java/org/apache/spark/unsafe/types/UTF8String.java index 50a3cc6049ea..2657bc3e885c 100644 --- a/common/unsafe/src/main/java/org/apache/spark/unsafe/types/UTF8String.java +++ b/common/unsafe/src/main/java/org/apache/spark/unsafe/types/UTF8String.java @@ -1192,7 +1192,7 @@ public UTF8String repeat(int times) { * @return the position of the first occurrence of the empty substr (now, always 0) */ public int indexOfEmpty(int start) { - return 0; // TODO: Fix this behaviour (SPARK-48284) + return start >= numChars() ? 0 : start; } /** diff --git a/common/unsafe/src/test/java/org/apache/spark/unsafe/types/UTF8StringSuite.java b/common/unsafe/src/test/java/org/apache/spark/unsafe/types/UTF8StringSuite.java index c4a66fdffdd4..feb31ec50728 100644 --- a/common/unsafe/src/test/java/org/apache/spark/unsafe/types/UTF8StringSuite.java +++ b/common/unsafe/src/test/java/org/apache/spark/unsafe/types/UTF8StringSuite.java @@ -271,6 +271,8 @@ public void indexOf() { assertEquals(0, EMPTY_UTF8.indexOf(EMPTY_UTF8, 0)); assertEquals(-1, EMPTY_UTF8.indexOf(fromString("l"), 0)); assertEquals(0, fromString("hello").indexOf(EMPTY_UTF8, 0)); + assertEquals(2, fromString("hello").indexOf(EMPTY_UTF8, 2)); + assertEquals(0, fromString("hello").indexOf(EMPTY_UTF8, 9)); assertEquals(2, fromString("hello").indexOf(fromString("l"), 0)); assertEquals(3, fromString("hello").indexOf(fromString("l"), 3)); assertEquals(-1, fromString("hello").indexOf(fromString("a"), 0));