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