@@ -164,6 +164,30 @@ public void testCharLength()
164164 assertFunction ("LENGTH(CAST('\u4FE1 \u5FF5 ,\u7231 ,\u5E0C \u671B ' AS CHAR(20)))" , BIGINT , 20L );
165165 }
166166
167+ @ Test
168+ public void testLongestCommonPrefix ()
169+ {
170+ assertFunction ("LONGEST_COMMON_PREFIX('', '')" , VARCHAR , "" );
171+ assertFunction ("LONGEST_COMMON_PREFIX('', 'hello')" , VARCHAR , "" );
172+ assertFunction ("LONGEST_COMMON_PREFIX('hello', '')" , VARCHAR , "" );
173+ assertFunction ("LONGEST_COMMON_PREFIX('hello', 'hello')" , VARCHAR , "hello" );
174+ assertFunction ("LONGEST_COMMON_PREFIX('hello world', 'hello')" , VARCHAR , "hello" );
175+ assertFunction ("LONGEST_COMMON_PREFIX('hello', 'hello world')" , VARCHAR , "hello" );
176+ assertFunction ("LONGEST_COMMON_PREFIX('hello world', 'hel wold')" , VARCHAR , "hel" );
177+ assertFunction ("LONGEST_COMMON_PREFIX('hel wold', 'hello world')" , VARCHAR , "hel" );
178+
179+ // Test for non-ASCII
180+ assertFunction ("LONGEST_COMMON_PREFIX('\u4FE1 \u5FF5 ,\u7231 ,\u5E0C \u671B ', '')" , VARCHAR , "" );
181+ assertFunction ("LONGEST_COMMON_PREFIX('', '\u4FE1 \u5FF5 ,\u7231 ,\u5E0C \u671B ')" , VARCHAR , "" );
182+ assertFunction ("LONGEST_COMMON_PREFIX('\u4FE1 \u5FF5 ,\u7231 ,\u5E0C \u671B ', '\u4FE1 \u5FF5 ,\u7231 ,\u5E0C \u671B ')" , VARCHAR , "\u4FE1 \u5FF5 ,\u7231 ,\u5E0C \u671B " );
183+ assertFunction ("LONGEST_COMMON_PREFIX('\u4FE1 \u5FF5 ,\u7221 ,\u5E0C \u671B ', '\u4FE1 \u5FF5 ,\u7231 ,\u5E0C \u671B ')" , VARCHAR , "\u4FE1 \u5FF5 ," );
184+ assertFunction ("LONGEST_COMMON_PREFIX('hello na\u00EF ve world', 'hello na\u00EF ve')" , VARCHAR , "hello na\u00EF ve" );
185+
186+ // Test for invalid-utf8 characters
187+ assertInvalidFunction ("LONGEST_COMMON_PREFIX('hello world', utf8(from_hex('81')))" , "Invalid UTF-8 encoding in characters: �" );
188+ assertInvalidFunction ("LONGEST_COMMON_PREFIX('hello world', utf8(from_hex('3281')))" , "Invalid UTF-8 encoding in characters: 2�" );
189+ }
190+
167191 @ Test
168192 public void testLevenshteinDistance ()
169193 {
0 commit comments