提交 edba4fd8 authored 作者: Evgenij Ryazanov's avatar Evgenij Ryazanov

Avoid StatementBuilder where its StringBuilder is used directly

上级 798490bc
...@@ -18,7 +18,6 @@ import org.h2.message.Trace; ...@@ -18,7 +18,6 @@ import org.h2.message.Trace;
import org.h2.result.ResultInterface; import org.h2.result.ResultInterface;
import org.h2.table.TableView; import org.h2.table.TableView;
import org.h2.util.MathUtils; import org.h2.util.MathUtils;
import org.h2.util.StatementBuilder;
import org.h2.value.Value; import org.h2.value.Value;
/** /**
...@@ -404,14 +403,17 @@ public abstract class Prepared { ...@@ -404,14 +403,17 @@ public abstract class Prepared {
* @return the SQL snippet * @return the SQL snippet
*/ */
protected static String getSQL(Value[] values) { protected static String getSQL(Value[] values) {
StatementBuilder buff = new StatementBuilder(); StringBuilder builder = new StringBuilder();
for (Value v : values) { for (int i = 0, l = values.length; i < l; i++) {
buff.appendExceptFirst(", "); if (i > 0) {
builder.append(", ");
}
Value v = values[i];
if (v != null) { if (v != null) {
v.getSQL(buff.builder()); v.getSQL(builder);
} }
} }
return buff.toString(); return builder.toString();
} }
/** /**
......
...@@ -16,7 +16,6 @@ import org.h2.result.ResultInterface; ...@@ -16,7 +16,6 @@ import org.h2.result.ResultInterface;
import org.h2.table.Column; import org.h2.table.Column;
import org.h2.table.Table; import org.h2.table.Table;
import org.h2.table.TableType; import org.h2.table.TableType;
import org.h2.util.StatementBuilder;
import org.h2.value.DataType; import org.h2.value.DataType;
import org.h2.value.Value; import org.h2.value.Value;
import org.h2.value.ValueInt; import org.h2.value.ValueInt;
...@@ -102,20 +101,23 @@ public class Analyze extends DefineCommand { ...@@ -102,20 +101,23 @@ public class Analyze extends DefineCommand {
return; return;
} }
Database db = session.getDatabase(); Database db = session.getDatabase();
StatementBuilder buff = new StatementBuilder("SELECT "); StringBuilder buff = new StringBuilder("SELECT ");
for (Column col : columns) { for (int i = 0, l = columns.length; i < l; i++) {
buff.appendExceptFirst(", "); if (i > 0) {
buff.append(", ");
}
Column col = columns[i];
if (DataType.isLargeObject(col.getType().getValueType())) { if (DataType.isLargeObject(col.getType().getValueType())) {
// can not index LOB columns, so calculating // can not index LOB columns, so calculating
// the selectivity is not required // the selectivity is not required
buff.append("MAX(NULL)"); buff.append("MAX(NULL)");
} else { } else {
buff.append("SELECTIVITY("); buff.append("SELECTIVITY(");
col.getSQL(buff.builder()).append(')'); col.getSQL(buff).append(')');
} }
} }
buff.append(" FROM "); buff.append(" FROM ");
table.getSQL(buff.builder()); table.getSQL(buff);
if (sample > 0) { if (sample > 0) {
buff.append(" FETCH FIRST ROW ONLY SAMPLE_SIZE ? "); buff.append(" FETCH FIRST ROW ONLY SAMPLE_SIZE ? ");
} }
......
...@@ -33,7 +33,6 @@ import org.h2.result.Row; ...@@ -33,7 +33,6 @@ import org.h2.result.Row;
import org.h2.table.Column; import org.h2.table.Column;
import org.h2.table.Table; import org.h2.table.Table;
import org.h2.table.TableFilter; import org.h2.table.TableFilter;
import org.h2.util.StatementBuilder;
import org.h2.value.Value; import org.h2.value.Value;
import org.h2.value.ValueNull; import org.h2.value.ValueNull;
...@@ -401,22 +400,26 @@ public class Insert extends CommandWithValues implements ResultTarget { ...@@ -401,22 +400,26 @@ public class Insert extends CommandWithValues implements ResultTarget {
session.setVariable(key, value); session.setVariable(key, value);
} }
StatementBuilder buff = new StatementBuilder("UPDATE "); StringBuilder builder = new StringBuilder("UPDATE ");
table.getSQL(buff.builder()).append(" SET "); table.getSQL(builder).append(" SET ");
boolean f = false;
for (Column column : duplicateKeyAssignmentMap.keySet()) { for (Column column : duplicateKeyAssignmentMap.keySet()) {
buff.appendExceptFirst(", "); if (f) {
builder.append(", ");
}
f = true;
Expression ex = duplicateKeyAssignmentMap.get(column); Expression ex = duplicateKeyAssignmentMap.get(column);
column.getSQL(buff.builder()).append('='); column.getSQL(builder).append('=');
ex.getSQL(buff.builder()); ex.getSQL(builder);
} }
buff.append(" WHERE "); builder.append(" WHERE ");
Index foundIndex = (Index) de.getSource(); Index foundIndex = (Index) de.getSource();
if (foundIndex == null) { if (foundIndex == null) {
throw DbException.getUnsupportedException( throw DbException.getUnsupportedException(
"Unable to apply ON DUPLICATE KEY UPDATE, no index found!"); "Unable to apply ON DUPLICATE KEY UPDATE, no index found!");
} }
prepareUpdateCondition(foundIndex, row).getSQL(buff.builder()); prepareUpdateCondition(foundIndex, row).getSQL(builder);
String sql = buff.toString(); String sql = builder.toString();
Update command = (Update) session.prepare(sql); Update command = (Update) session.prepare(sql);
command.setUpdateToCurrentValuesReturnsZero(true); command.setUpdateToCurrentValuesReturnsZero(true);
for (Parameter param : command.getParameters()) { for (Parameter param : command.getParameters()) {
......
...@@ -23,7 +23,6 @@ import java.util.Comparator; ...@@ -23,7 +23,6 @@ import java.util.Comparator;
import java.util.Set; import java.util.Set;
import org.h2.api.ErrorCode; import org.h2.api.ErrorCode;
import org.h2.command.CommandInterface; import org.h2.command.CommandInterface;
import org.h2.command.Parser;
import org.h2.constraint.Constraint; import org.h2.constraint.Constraint;
import org.h2.engine.Comment; import org.h2.engine.Comment;
import org.h2.engine.Constants; import org.h2.engine.Constants;
...@@ -56,7 +55,6 @@ import org.h2.table.Table; ...@@ -56,7 +55,6 @@ import org.h2.table.Table;
import org.h2.table.TableType; import org.h2.table.TableType;
import org.h2.util.IOUtils; import org.h2.util.IOUtils;
import org.h2.util.MathUtils; import org.h2.util.MathUtils;
import org.h2.util.StatementBuilder;
import org.h2.util.StringUtils; import org.h2.util.StringUtils;
import org.h2.util.Utils; import org.h2.util.Utils;
import org.h2.value.Value; import org.h2.value.Value;
......
...@@ -1493,7 +1493,7 @@ public class Select extends Query { ...@@ -1493,7 +1493,7 @@ public class Select extends Query {
} }
for (int i = 0; i < visibleColumnCount; i++) { for (int i = 0; i < visibleColumnCount; i++) {
if (i > 0) { if (i > 0) {
builder.append(", "); builder.append(',');
} }
builder.append('\n'); builder.append('\n');
StringUtils.indent(builder, exprList[i].getSQL(), 4, false); StringUtils.indent(builder, exprList[i].getSQL(), 4, false);
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
package org.h2.constraint; package org.h2.constraint;
import java.util.HashSet; import java.util.HashSet;
import org.h2.command.Parser;
import org.h2.engine.Session; import org.h2.engine.Session;
import org.h2.index.Index; import org.h2.index.Index;
import org.h2.result.Row; import org.h2.result.Row;
...@@ -14,7 +13,6 @@ import org.h2.schema.Schema; ...@@ -14,7 +13,6 @@ import org.h2.schema.Schema;
import org.h2.table.Column; import org.h2.table.Column;
import org.h2.table.IndexColumn; import org.h2.table.IndexColumn;
import org.h2.table.Table; import org.h2.table.Table;
import org.h2.util.StatementBuilder;
import org.h2.util.StringUtils; import org.h2.util.StringUtils;
/** /**
...@@ -43,29 +41,30 @@ public class ConstraintUnique extends Constraint { ...@@ -43,29 +41,30 @@ public class ConstraintUnique extends Constraint {
return getCreateSQLForCopy(forTable, quotedName, true); return getCreateSQLForCopy(forTable, quotedName, true);
} }
private String getCreateSQLForCopy(Table forTable, String quotedName, private String getCreateSQLForCopy(Table forTable, String quotedName, boolean internalIndex) {
boolean internalIndex) { StringBuilder builder = new StringBuilder("ALTER TABLE ");
StatementBuilder buff = new StatementBuilder("ALTER TABLE "); forTable.getSQL(builder).append(" ADD CONSTRAINT ");
forTable.getSQL(buff.builder()).append(" ADD CONSTRAINT ");
if (forTable.isHidden()) { if (forTable.isHidden()) {
buff.append("IF NOT EXISTS "); builder.append("IF NOT EXISTS ");
} }
buff.append(quotedName); builder.append(quotedName);
if (comment != null) { if (comment != null) {
buff.append(" COMMENT "); builder.append(" COMMENT ");
StringUtils.quoteStringSQL(buff.builder(), comment); StringUtils.quoteStringSQL(builder, comment);
} }
buff.append(' ').append(getConstraintType().getSqlName()).append('('); builder.append(' ').append(getConstraintType().getSqlName()).append('(');
for (IndexColumn c : columns) { for (int i = 0, l = columns.length; i < l; i++) {
buff.appendExceptFirst(", "); if (i > 0) {
c.column.getSQL(buff.builder()); builder.append(", ");
}
columns[i].column.getSQL(builder);
} }
buff.append(')'); builder.append(')');
if (internalIndex && indexOwner && forTable == this.table) { if (internalIndex && indexOwner && forTable == this.table) {
buff.append(" INDEX "); builder.append(" INDEX ");
index.getSQL(buff.builder()); index.getSQL(builder);
} }
return buff.toString(); return builder.toString();
} }
@Override @Override
......
...@@ -36,7 +36,6 @@ import org.h2.jdbc.JdbcConnection; ...@@ -36,7 +36,6 @@ import org.h2.jdbc.JdbcConnection;
import org.h2.message.DbException; import org.h2.message.DbException;
import org.h2.tools.SimpleResultSet; import org.h2.tools.SimpleResultSet;
import org.h2.util.IOUtils; import org.h2.util.IOUtils;
import org.h2.util.StatementBuilder;
import org.h2.util.StringUtils; import org.h2.util.StringUtils;
import org.h2.util.Utils; import org.h2.util.Utils;
...@@ -1142,18 +1141,22 @@ public class FullText { ...@@ -1142,18 +1141,22 @@ public class FullText {
} }
private String getKey(Object[] row) throws SQLException { private String getKey(Object[] row) throws SQLException {
StatementBuilder buff = new StatementBuilder(); StringBuilder builder = new StringBuilder();
for (int columnIndex : index.keys) { int[] keys = index.keys;
buff.appendExceptFirst(" AND "); for (int i = 0, l = keys.length; i < l; i++) {
StringUtils.quoteIdentifier(buff.builder(), index.columns[columnIndex]); if (i > 0) {
builder.append(" AND ");
}
int columnIndex = keys[i];
StringUtils.quoteIdentifier(builder, index.columns[columnIndex]);
Object o = row[columnIndex]; Object o = row[columnIndex];
if (o == null) { if (o == null) {
buff.append(" IS NULL"); builder.append(" IS NULL");
} else { } else {
buff.append('=').append(quoteSQL(o, columnTypes[columnIndex])); builder.append('=').append(quoteSQL(o, columnTypes[columnIndex]));
} }
} }
return buff.toString(); return builder.toString();
} }
private PreparedStatement getStatement(Connection conn, int index) throws SQLException { private PreparedStatement getStatement(Connection conn, int index) throws SQLException {
......
...@@ -1914,17 +1914,18 @@ public class MetaTable extends Table { ...@@ -1914,17 +1914,18 @@ public class MetaTable extends Table {
} }
String[] path = session.getSchemaSearchPath(); String[] path = session.getSchemaSearchPath();
if (path != null && path.length > 0) { if (path != null && path.length > 0) {
StatementBuilder buff = new StatementBuilder( StringBuilder builder = new StringBuilder("SET SCHEMA_SEARCH_PATH ");
"SET SCHEMA_SEARCH_PATH "); for (int i = 0, l = path.length; i < l; i++) {
for (String p : path) { if (i > 0) {
buff.appendExceptFirst(", "); builder.append(", ");
StringUtils.quoteIdentifier(buff.builder(), p); }
StringUtils.quoteIdentifier(builder, path[i]);
} }
add(rows, add(rows,
// KEY // KEY
"SCHEMA_SEARCH_PATH", "SCHEMA_SEARCH_PATH",
// SQL // SQL
buff.toString() builder.toString()
); );
} }
String schema = session.getCurrentSchemaName(); String schema = session.getCurrentSchemaName();
......
...@@ -28,7 +28,6 @@ import org.h2.message.DbException; ...@@ -28,7 +28,6 @@ import org.h2.message.DbException;
import org.h2.result.Row; import org.h2.result.Row;
import org.h2.result.RowList; import org.h2.result.RowList;
import org.h2.schema.Schema; import org.h2.schema.Schema;
import org.h2.util.StatementBuilder;
import org.h2.util.StringUtils; import org.h2.util.StringUtils;
import org.h2.util.Utils; import org.h2.util.Utils;
import org.h2.value.DataType; import org.h2.value.DataType;
...@@ -499,20 +498,21 @@ public class TableLink extends Table { ...@@ -499,20 +498,21 @@ public class TableLink extends Table {
prep = conn.getConnection().prepareStatement(sql); prep = conn.getConnection().prepareStatement(sql);
} }
if (trace.isDebugEnabled()) { if (trace.isDebugEnabled()) {
StatementBuilder buff = new StatementBuilder(); StringBuilder builder = new StringBuilder(getName()).append(":\n").append(sql);
buff.append(getName()).append(":\n").append(sql);
if (params != null && !params.isEmpty()) { if (params != null && !params.isEmpty()) {
buff.append(" {"); builder.append(" {");
int i = 1; for (int i = 0, l = params.size(); i < l;) {
for (Value v : params) { Value v = params.get(i);
buff.appendExceptFirst(", "); if (i > 0) {
buff.append(i++).append(": "); builder.append(", ");
v.getSQL(buff.builder()); }
builder.append(++i).append(": ");
v.getSQL(builder);
} }
buff.append('}'); builder.append('}');
} }
buff.append(';'); builder.append(';');
trace.debug(buff.toString()); trace.debug(builder.toString());
} }
if (params != null) { if (params != null) {
for (int i = 0, size = params.size(); i < size; i++) { for (int i = 0, size = params.size(); i < size; i++) {
......
...@@ -990,15 +990,17 @@ public class Recover extends Tool implements DataHandler { ...@@ -990,15 +990,17 @@ public class Recover extends Tool implements DataHandler {
} else { } else {
String tableName = tableMap.get(storageId); String tableName = tableMap.get(storageId);
if (tableName != null) { if (tableName != null) {
StatementBuilder buff = new StatementBuilder(); StringBuilder builder = new StringBuilder();
buff.append("INSERT INTO ").append(tableName). builder.append("INSERT INTO ").append(tableName).
append(" VALUES("); append(" VALUES(");
for (int i = 0; i < row.getColumnCount(); i++) { for (int i = 0; i < row.getColumnCount(); i++) {
buff.appendExceptFirst(", "); if (i > 0) {
row.getValue(i).getSQL(buff.builder()); builder.append(", ");
} }
buff.append(");"); row.getValue(i).getSQL(builder);
writer.println(buff.toString()); }
builder.append(");");
writer.println(builder.toString());
} }
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论