diff --git a/src/main/java/com/starrocks/connector/flink/row/sink/StarRocksTableRowTransformer.java b/src/main/java/com/starrocks/connector/flink/row/sink/StarRocksTableRowTransformer.java index aef0c02b..5818b4fd 100644 --- a/src/main/java/com/starrocks/connector/flink/row/sink/StarRocksTableRowTransformer.java +++ b/src/main/java/com/starrocks/connector/flink/row/sink/StarRocksTableRowTransformer.java @@ -132,7 +132,7 @@ private Object typeConvertion(LogicalType type, RowData record, int pos) { columns.getOrDefault(columnNames[pos], StarRocksDataType.UNKNOWN); if ((starRocksDataType == StarRocksDataType.JSON || starRocksDataType == StarRocksDataType.UNKNOWN) - && (sValue.charAt(0) == '{' || sValue.charAt(0) == '[')) { + && !sValue.isEmpty() && (sValue.charAt(0) == '{' || sValue.charAt(0) == '[')) { // The json string need to be converted to a json object, and to the json string // again via JSON.toJSONString in StarRocksJsonSerializer#serialize. Otherwise, // the final json string in stream load will not be correct. For example, the received diff --git a/src/test/java/com/starrocks/connector/flink/it/sink/StarRocksSinkITTest.java b/src/test/java/com/starrocks/connector/flink/it/sink/StarRocksSinkITTest.java index 13253a21..13313808 100644 --- a/src/test/java/com/starrocks/connector/flink/it/sink/StarRocksSinkITTest.java +++ b/src/test/java/com/starrocks/connector/flink/it/sink/StarRocksSinkITTest.java @@ -633,7 +633,8 @@ public void testJsonType() throws Exception { DataStream dataStream = env.fromElements( Row.ofKind(RowKind.INSERT, 1, 1.0, "{\"a\": 1, \"b\": true}"), - Row.ofKind(RowKind.INSERT, 2, 2.0, "{\"a\": 2, \"b\": false}")); + Row.ofKind(RowKind.INSERT, 2, 2.0, "{\"a\": 2, \"b\": false}"), + Row.ofKind(RowKind.INSERT, 3, 3.0, "")); Table table = tEnv.fromChangelogStream(dataStream, Schema.newBuilder().primaryKey("f0").build(), ChangelogMode.all()); tEnv.createTemporaryView("src", table); @@ -687,7 +688,8 @@ public void testJsonType() throws Exception { List> expectedData = Arrays.asList( Arrays.asList(1, 1.0, "{\"a\": 1, \"b\": true}"), - Arrays.asList(2, 2.0, "{\"a\": 2, \"b\": false}") + Arrays.asList(2, 2.0, "{\"a\": 2, \"b\": false}"), + Arrays.asList(3, 3.0, "\"\"") ); verifyResult(expectedData, actualData);