Skip to content

Commit ca95dc4

Browse files
committed
fix(oracle): restore Oracle parser and reject implicit SQL splits
1 parent 5499ddc commit ca95dc4

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

backend/modules/src/main/java/org.jumpserver.chen.modules/oracle/OracleActuator.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.jumpserver.chen.modules.oracle;
22

3-
import com.alibaba.druid.DbType;
43
import com.alibaba.druid.sql.SQLUtils;
4+
import com.alibaba.druid.sql.parser.ParserException;
55
import org.jumpserver.chen.framework.datasource.ConnectionManager;
66
import org.jumpserver.chen.framework.datasource.base.BaseSQLActuator;
77
import org.jumpserver.chen.framework.datasource.sql.SQL;
@@ -66,8 +66,15 @@ public SQLExecutePlan createPlan(SQL sql) throws SQLException {
6666

6767
@Override
6868
public List<String> parseSQL(SQL sql) {
69-
return SQLUtils.parseStatements(sql.getSql(), DbType.ali_oracle).stream()
70-
.map(stmt -> SQLUtils.toSQLString(stmt, DbType.ali_oracle))
69+
var dbType = this.getDbType();
70+
var statements = SQLUtils.parseStatements(sql.getSql(), dbType);
71+
for (var i = 0; i < statements.size() - 1; i++) {
72+
if (!statements.get(i).isAfterSemi()) {
73+
throw new ParserException("Multiple SQL statements must be separated by semicolons");
74+
}
75+
}
76+
return statements.stream()
77+
.map(stmt -> SQLUtils.toSQLString(stmt, dbType))
7178
.toList();
7279
}
7380
}

0 commit comments

Comments
 (0)