Skip to content

Commit cbcce7a

Browse files
authored
[Fix][Connector-V2] Fix text file read separator issue (#8970)
1 parent b24d0e7 commit cbcce7a

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

Diff for: seatunnel-formats/seatunnel-format-text/src/main/java/org/apache/seatunnel/format/text/splitor/DefaultTextLineSplitor.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,12 @@
1818
package org.apache.seatunnel.format.text.splitor;
1919

2020
import java.io.Serializable;
21+
import java.util.regex.Pattern;
2122

2223
public class DefaultTextLineSplitor implements TextLineSplitor, Serializable {
2324

2425
@Override
2526
public String[] spliteLine(String line, String seperator) {
26-
return line.split(seperator, -1);
27+
return line.split(Pattern.quote(seperator), -1);
2728
}
2829
}

Diff for: seatunnel-formats/seatunnel-format-text/src/test/java/org/apache/seatunnel/format/text/TextFormatSchemaTest.java

+18
Original file line numberDiff line numberDiff line change
@@ -232,4 +232,22 @@ public void testSerializationWithNullValue() throws Exception {
232232
"\\N\u0001\\N\u0001\\N\u0001\\N\u0001\\N\u0001\\N\u0001\\N\u0001\\N",
233233
new String(textSerializationSchema.serialize(expected)));
234234
}
235+
236+
@Test
237+
public void testSerializationWithRequireEscapeCharacters() throws Exception {
238+
SeaTunnelRowType rowType =
239+
new SeaTunnelRowType(
240+
new String[] {"id", "name"},
241+
new SeaTunnelDataType[] {INT_TYPE, STRING_TYPE});
242+
TextDeserializationSchema deserializationSchema =
243+
TextDeserializationSchema.builder()
244+
.seaTunnelRowType(rowType)
245+
.delimiter("|")
246+
.build();
247+
248+
String content = "1|tyrantlucifer";
249+
SeaTunnelRow seaTunnelRow = deserializationSchema.deserialize(content.getBytes());
250+
Assertions.assertEquals(1, seaTunnelRow.getField(0));
251+
Assertions.assertEquals("tyrantlucifer", seaTunnelRow.getField(1));
252+
}
235253
}

0 commit comments

Comments
 (0)