This is an automated email from the ASF dual-hosted git repository. snuyanzin pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/flink.git
commit 39c823ad53f348ec045989c47e14a73c010cd9b9 Author: Sergey Nuyanzin <[email protected]> AuthorDate: Sun Jul 19 09:52:25 2026 +0200 [FLINK-40182][table] Optimize code generated by `ArrayToStringCastRule` --- .../functions/casting/ArrayToStringCastRule.java | 61 +++++++++++----------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToStringCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToStringCastRule.java index 378060a4d44..4c32ce9b953 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToStringCastRule.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToStringCastRule.java @@ -60,54 +60,53 @@ class ArrayToStringCastRule extends AbstractNullAwareCodeGeneratorCastRule<Array isNull$0 = _myInputIsNull; if (!isNull$0) { - builder$1.setLength(0); - builder$1.append("["); - for (int i$3 = 0; i$3 < _myInput.size(); i$3++) { - if (builder$1.length() > 10) { + int size$2 = _myInput.size(); + builder$0.setLength(0); + builder$0.append("["); + for (int i$3 = 0; i$3 < size$2; i$3++) { + if (builder$0.length() > 10) { break; } if (i$3 != 0) { - builder$1.append(", "); + builder$0.append(", "); } int element$4 = -1; boolean elementIsNull$5 = _myInput.isNullAt(i$3); if (!elementIsNull$5) { - element$4 = _myInput.getInt(i$3); - isNull$2 = false; - if (!isNull$2) { - result$3 = org.apache.flink.table.data.binary.BinaryStringData.fromString("" + element$4); - isNull$2 = result$3 == null; - } else { - result$3 = org.apache.flink.table.data.binary.BinaryStringData.EMPTY_UTF8; - } - builder$1.append(result$3); + element$4 = _myInput.getInt(i$3); + isNull$2 = false; + if (!isNull$2) { + result$3 = org.apache.flink.table.data.binary.BinaryStringData.fromString("" + element$4); + isNull$2 = result$3 == null; } else { - builder$1.append("NULL"); + result$3 = org.apache.flink.table.data.binary.BinaryStringData.EMPTY_UTF8; + } + builder$0.append(result$3); + } else { + builder$0.append("NULL"); } } - builder$1.append("]"); - java.lang.String resultString$2; - resultString$2 = builder$1.toString(); - if (builder$1.length() > 10) { - resultString$2 = builder$1.substring(0, java.lang.Math.min(builder$1.length(), 10)); + builder$0.append("]"); + java.lang.String resultString$1; + if (builder$0.length() > 10) { + resultString$1 = builder$0.substring(0, 10); } else { - if (resultString$2.length() < 10) { + resultString$1 = builder$0.toString(); + if (builder$0.length() < 10) { int padLength$6; - padLength$6 = 10 - resultString$2.length(); - java.lang.StringBuilder sbPadding$7; - sbPadding$7 = new java.lang.StringBuilder(); - for (int i$8 = 0; i$8 < padLength$6; i$8++) { - sbPadding$7.append(" "); - } - resultString$2 = resultString$2 + sbPadding$7.toString(); + padLength$6 = 10 - builder$0.length(); + resultString$1 = resultString$1 + " ".repeat(padLength$6); } } - result$1 = org.apache.flink.table.data.binary.BinaryStringData.fromString(resultString$2); + result$1 = org.apache.flink.table.data.binary.BinaryStringData.fromString(resultString$1); isNull$0 = result$1 == null; } else { result$1 = org.apache.flink.table.data.binary.BinaryStringData.EMPTY_UTF8; } + returnTerm = result$1 + isNullTerm = isNull$0 + */ @Override protected String generateCodeBlockInternal( @@ -124,14 +123,16 @@ class ArrayToStringCastRule extends AbstractNullAwareCodeGeneratorCastRule<Array className(StringBuilder.class), builderTerm, constructorCall(StringBuilder.class)); final String resultStringTerm = newName(codeGeneratorContext, "resultString"); + final String sizeTerm = newName(codeGeneratorContext, "size"); final int length = LogicalTypeChecks.getLength(targetLogicalType); CastRuleUtils.CodeWriter writer = new CastRuleUtils.CodeWriter() + .declStmt(int.class, sizeTerm, methodCall(inputTerm, "size")) .stmt(methodCall(builderTerm, "setLength", 0)) .stmt(methodCall(builderTerm, "append", strLiteral("["))) .forStmt( - methodCall(inputTerm, "size"), + sizeTerm, (indexTerm, loopBodyWriter) -> { String elementTerm = newName(codeGeneratorContext, "element"); String elementIsNullTerm =
