#1126 - Regression bug in 10.4.5 with new line character use with SqlQuery, SqlUpdate and CallableSql

This commit is contained in:
rob bygrave
2017-09-13 21:14:19 +12:00
parent a6e4e181bf
commit 1e6678cbb4
8 changed files with 66 additions and 16 deletions
@@ -1047,24 +1047,17 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
@Override
public SqlQuery createSqlQuery(String sql) {
return new DefaultRelationalQuery(this, trimSql(sql));
return new DefaultRelationalQuery(this, sql.trim());
}
@Override
public SqlUpdate createSqlUpdate(String sql) {
return new DefaultSqlUpdate(this, trimSql(sql));
return new DefaultSqlUpdate(this, sql.trim());
}
@Override
public CallableSql createCallableSql(String sql) {
return new DefaultCallableSql(this, trimSql(sql));
}
/**
* Trim and remove new line chars for better support in multi-line sql strings (logging etc).
*/
private String trimSql(String sql) {
return sql.trim().replace('\n',' ');
return new DefaultCallableSql(this, sql.trim());
}
@Override
@@ -10,6 +10,7 @@ import io.ebeaninternal.api.SpiSqlQuery;
import io.ebeaninternal.api.SpiTransaction;
import io.ebeaninternal.server.lib.util.Str;
import io.ebeaninternal.server.persist.Binder;
import io.ebeaninternal.server.persist.TrimLogSql;
import io.ebeaninternal.server.query.DefaultSqlRow;
import io.ebeaninternal.server.transaction.TransactionManager;
import io.ebeaninternal.server.util.BindParamsParser;
@@ -247,7 +248,7 @@ public final class RelationalQueryRequest {
}
if (isLogSql()) {
String logSql = sql;
String logSql = TrimLogSql.trim(sql);
if (TransactionManager.SQL_LOGGER.isTraceEnabled()) {
logSql = Str.add(logSql, "; --bind(", bindLog, ")");
}
@@ -84,7 +84,7 @@ public class ExeCallableSql {
cstmt = pstmtFactory.getCstmt(t, logSql, sql, request);
} else {
if (logSql) {
t.logSql(sql);
t.logSql(TrimLogSql.trim(sql));
}
cstmt = pstmtFactory.getCstmt(t, sql);
}
@@ -88,7 +88,7 @@ public class ExeUpdateSql {
pstmt = pstmtFactory.getPstmt(t, logSql, sql, request);
} else {
if (logSql) {
t.logSql(sql);
t.logSql(TrimLogSql.trim(sql));
}
pstmt = pstmtFactory.getPstmt(t, sql);
}
@@ -0,0 +1,14 @@
package io.ebeaninternal.server.persist;
/**
* Utility to improve logging of raw SQL that contains new line characters.
*/
public class TrimLogSql {
/**
* Replace new line chars for nicer logging of multi-line sql strings.
*/
public static String trim(String sql) {
return sql.replace("\n", "\\n ");
}
}