Skip to content

Commit 4bdb8ab

Browse files
author
gituser
committed
Merge branch 'hotfix_1.10_4.0.x_33004' into 1.10_release_4.0.x
2 parents 37a6996 + a0d5fa7 commit 4bdb8ab

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

core/src/main/java/com/dtstack/flink/sql/parser/InsertSqlParser.java

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -162,23 +162,32 @@ private static void rebuildSelectNode(SqlNodeList selectList, SqlSelect sqlSelec
162162
SqlNodeList sqlNodes = new SqlNodeList(selectList.getParserPosition());
163163

164164
for (int index = 0; index < selectList.size(); index++) {
165-
if (selectList.get(index).getKind().equals(SqlKind.AS)
166-
|| (selectList.get(index).getClass().equals(SqlIdentifier.class)
167-
&& ((SqlIdentifier) selectList.get(index)).names.size() == 1)) {
168-
sqlNodes.add(selectList.get(index));
165+
SqlNode sqlNode = selectList.get(index);
166+
// 判断sqlNode的类型是否属于 't1.f1 as f2'
167+
boolean isAsNode = sqlNode.getKind().equals(SqlKind.AS);
168+
169+
// 判断sqlNode的结构是否属于'f1' 或者 't.*'
170+
boolean isIdentifierOrStar = sqlNode.getClass().equals(SqlIdentifier.class)
171+
// sqlNode like 'f1'
172+
&& (((SqlIdentifier) sqlNode).names.size() == 1
173+
// sqlNode like 't.*'
174+
|| StringUtils.isBlank(((SqlIdentifier) sqlNode).names.get(1)));
175+
176+
if (isAsNode || isIdentifierOrStar) {
177+
sqlNodes.add(sqlNode);
169178
continue;
170179
}
171180

172-
if (!selectList.get(index).getClass().equals(SqlIdentifier.class)) {
173-
if (selectList.get(index).getKind().equals(SqlKind.LITERAL)) {
181+
if (!sqlNode.getClass().equals(SqlIdentifier.class)) {
182+
if (sqlNode.getKind().equals(SqlKind.LITERAL)) {
174183
throw new IllegalArgumentException(String.format("Constants %s in the SELECT statement must be aliased!",
175-
selectList.get(index).toString()));
184+
sqlNode.toString()));
176185
}
177186
throw new RuntimeException(String.format("Illegal statement! Please check the statement: %s",
178-
selectList.get(index).toString()));
187+
sqlNode.toString()));
179188
}
180189

181-
sqlNodes.add(transformToAsNode(selectList.get(index)));
190+
sqlNodes.add(transformToAsNode(sqlNode));
182191
}
183192
sqlSelect.setSelectList(sqlNodes);
184193
}

0 commit comments

Comments
 (0)