Skip to content

Commit

Permalink
Merge pull request #6 from ebean-orm/feature/use-Statement
Browse files Browse the repository at this point in the history
Use Statement to execute sql
  • Loading branch information
rob-bygrave authored May 28, 2023
2 parents 4bfd832 + da75e9c commit 2558f75
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 15 deletions.
2 changes: 1 addition & 1 deletion src/main/java/io/ebean/ddlrunner/DdlParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public List<String> parse(Reader reader) {
/**
* Return the non-transactional statements which run later with auto commit true.
*/
public List<String> getNonTransactional() {
public List<String> nonTransactional() {
return statementsNonTrans;
}

Expand Down
29 changes: 15 additions & 14 deletions src/main/java/io/ebean/ddlrunner/DdlRunner.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;

/**
Expand Down Expand Up @@ -52,7 +53,7 @@ public DdlRunner(boolean useAutoCommit, String scriptName, DdlDetect ddlAutoComm
public List<String> runAll(String content, Connection connection) throws SQLException {
List<String> statements = parser.parse(new StringReader(content));
runStatements(statements, connection);
return parser.getNonTransactional();
return parser.nonTransactional();
}

/**
Expand Down Expand Up @@ -80,29 +81,29 @@ private void runStatements(List<String> statements, Connection connection) throw
/**
* Execute the statement.
*/
private void runStatement(String oneOf, String stmt, Connection c) throws SQLException {
private void runStatement(String oneOf, String sql, Connection c) throws SQLException {
// trim and remove trailing ; or /
stmt = stmt.trim();
if (stmt.endsWith(";")) {
stmt = stmt.substring(0, stmt.length() - 1);
} else if (stmt.endsWith("/")) {
stmt = stmt.substring(0, stmt.length() - 1);
sql = sql.trim();
if (sql.endsWith(";")) {
sql = sql.substring(0, sql.length() - 1);
} else if (sql.endsWith("/")) {
sql = sql.substring(0, sql.length() - 1);
}
if (stmt.isEmpty()) {
if (sql.isEmpty()) {
logger.log(Level.DEBUG, "skip empty statement at {0}", oneOf);
return;
}
if (logger.isLoggable(Level.DEBUG)) {
logger.log(Level.DEBUG, "executing {0} {1}", oneOf, summary(stmt));
logger.log(Level.DEBUG, "executing {0} {1}", oneOf, summary(sql));
}

try (PreparedStatement statement = c.prepareStatement(stmt)) {
statement.execute();
try (Statement statement = c.createStatement()) {
statement.execute(sql);
} catch (SQLException e) {
if (useAutoCommit) {
logger.log(Level.DEBUG, " ... ignoring error executing {0} error: {1}", summary(stmt), e.getMessage());
logger.log(Level.DEBUG, " ... ignoring error executing {0} error: {1}", summary(sql), e.getMessage());
} else {
throw new SQLException("Error executing stmt[" + stmt + "] error[" + e.getMessage() + "]", e);
throw new SQLException("Error executing [" + sql + "] error[" + e.getMessage() + "]", e);
}
}
}
Expand All @@ -118,7 +119,7 @@ private String summary(String s) {
* Run any non-transactional statements from the just parsed script.
*/
public int runNonTransactional(Connection connection) {
final List<String> nonTransactional = parser.getNonTransactional();
final List<String> nonTransactional = parser.nonTransactional();
return !nonTransactional.isEmpty() ? runNonTransactional(connection, nonTransactional) : 0;
}

Expand Down

0 comments on commit 2558f75

Please sign in to comment.