Skip to content

Commit 001b413

Browse files
simon04cheenamalhotra
authored andcommitted
Improvement | Replace string concatenation with StringBuilder (#861)
* Avoid string concatenation in `StringBuilder.append()` * Replace string concatenation w/ StringBuilder in loops
1 parent 392bf1c commit 001b413

File tree

7 files changed

+29
-28
lines changed

7 files changed

+29
-28
lines changed

src/main/java/com/microsoft/sqlserver/jdbc/IOBuffer.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2108,8 +2108,8 @@ final void close() {
21082108
//
21092109
// Note: the log formatter itself timestamps what we write so we don't have
21102110
// to do it again here.
2111-
logMsg.append(tcpSocket.getLocalAddress().toString() + ":" + tcpSocket.getLocalPort() + " SPID:" + spid + " "
2112-
+ messageDetail + "\r\n");
2111+
logMsg.append(tcpSocket.getLocalAddress().toString()).append(":").append(tcpSocket.getLocalPort())
2112+
.append(" SPID:").append(spid).append(" ").append(messageDetail).append("\r\n");
21132113

21142114
// Fill in the body of the log message, line by line, 16 bytes per line.
21152115
int nBytesLogged = 0;
@@ -2295,7 +2295,7 @@ Socket findSocket(String hostName, int portNumber, int timeoutInMilliSeconds, bo
22952295
loggingString.append(". They are: ");
22962296

22972297
for (InetAddress inetAddr : inetAddrs) {
2298-
loggingString.append(inetAddr.toString() + ";");
2298+
loggingString.append(inetAddr.toString()).append(";");
22992299
}
23002300

23012301
logger.finer(loggingString.toString());

src/main/java/com/microsoft/sqlserver/jdbc/SQLServerBulkCopy.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1450,7 +1450,7 @@ private String createInsertBulkCommand(TDSWriter tdsWriter) throws SQLServerExce
14501450
StringBuilder bulkCmd = new StringBuilder();
14511451
List<String> bulkOptions = new ArrayList<>();
14521452
String endColumn = " , ";
1453-
bulkCmd.append("INSERT BULK " + destinationTableName + " (");
1453+
bulkCmd.append("INSERT BULK ").append(destinationTableName).append(" (");
14541454

14551455
for (int i = 0; i < (columnMappings.size()); ++i) {
14561456
if (i == columnMappings.size() - 1) {
@@ -1471,9 +1471,11 @@ private String createInsertBulkCommand(TDSWriter tdsWriter) throws SQLServerExce
14711471
}
14721472
if (colMapping.destinationColumnName.contains("]")) {
14731473
String escapedColumnName = colMapping.destinationColumnName.replaceAll("]", "]]");
1474-
bulkCmd.append("[" + escapedColumnName + "] " + destType + addCollate + endColumn);
1474+
bulkCmd.append("[").append(escapedColumnName).append("] ").append(destType).append(addCollate)
1475+
.append(endColumn);
14751476
} else {
1476-
bulkCmd.append("[" + colMapping.destinationColumnName + "] " + destType + addCollate + endColumn);
1477+
bulkCmd.append("[").append(colMapping.destinationColumnName).append("] ").append(destType)
1478+
.append(addCollate).append(endColumn);
14771479
}
14781480
}
14791481

src/main/java/com/microsoft/sqlserver/jdbc/SQLServerDatabaseMetaData.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -521,17 +521,16 @@ public java.sql.ResultSet getTables(String catalog, String schema, String table,
521521
arguments[1] = schema;
522522
arguments[2] = catalog;
523523

524-
String tableTypes = null;
525524
if (types != null) {
526-
tableTypes = "'";
525+
final StringBuilder tableTypes = new StringBuilder("'");
527526
for (int i = 0; i < types.length; i++) {
528527
if (i > 0)
529-
tableTypes += ",";
530-
tableTypes += "''" + types[i] + "''";
528+
tableTypes.append(",");
529+
tableTypes.append("''").append(types[i]).append("''");
531530
}
532-
tableTypes += "'";
531+
tableTypes.append("'");
532+
arguments[3] = tableTypes.toString();
533533
}
534-
arguments[3] = tableTypes;
535534
return getResultSetWithProvidedColumnNames(catalog, CallableHandles.SP_TABLES, arguments, getTablesColumnNames);
536535
}
537536

src/main/java/com/microsoft/sqlserver/jdbc/SQLServerException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ private void logException(Object o, String errText, boolean bStack) {
118118
sb.append(aSt.toString());
119119
Throwable t = this.getCause();
120120
if (t != null) {
121-
sb.append("\n caused by " + t + "\n");
121+
sb.append("\n caused by ").append(t).append("\n");
122122
StackTraceElement tst[] = t.getStackTrace();
123123
for (StackTraceElement aTst : tst)
124124
sb.append(aTst.toString());

src/main/java/com/microsoft/sqlserver/jdbc/SQLServerParameterMetaData.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,7 @@ private void checkClosed() throws SQLServerException {
645645
StringBuilder sbColumns = new StringBuilder();
646646

647647
for (MetaInfo mi : metaInfoList) {
648-
sbColumns = sbColumns.append(mi.fields + ",");
648+
sbColumns = sbColumns.append(mi.fields).append(",");
649649
}
650650
sbColumns.deleteCharAt(sbColumns.length() - 1);
651651

@@ -660,9 +660,10 @@ private void checkClosed() throws SQLServerException {
660660
&& metaInfoList.get(i).fields.equals(metaInfoList.get(i - 1).fields)) {
661661
continue;
662662
}
663-
sbTablesAndJoins = sbTablesAndJoins.append(" LEFT JOIN " + metaInfoList.get(i).table
664-
+ " ON " + metaInfoList.get(i - 1).table + "." + metaInfoList.get(i - 1).fields
665-
+ "=" + metaInfoList.get(i).table + "." + metaInfoList.get(i).fields);
663+
sbTablesAndJoins = sbTablesAndJoins.append(" LEFT JOIN ").append(metaInfoList.get(i).table)
664+
.append(" ON ").append(metaInfoList.get(i - 1).table).append(".")
665+
.append(metaInfoList.get(i - 1).fields).append("=")
666+
.append(metaInfoList.get(i).table).append(".").append(metaInfoList.get(i).fields);
666667
}
667668
}
668669

src/main/java/com/microsoft/sqlserver/jdbc/SQLServerStatement.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,29 +1012,28 @@ static String replaceParameterWithString(String str, char marker, String replace
10121012
*/
10131013
static String replaceMarkerWithNull(String sql) {
10141014
if (!sql.contains("'")) {
1015-
String retStr = replaceParameterWithString(sql, '?', "null");
1016-
return retStr;
1015+
return replaceParameterWithString(sql, '?', "null");
10171016
} else {
10181017
StringTokenizer st = new StringTokenizer(sql, "'", true);
10191018
boolean beforeColon = true;
1020-
String retSql = "";
1019+
final StringBuilder retSql = new StringBuilder();
10211020
while (st.hasMoreTokens()) {
10221021
String str = st.nextToken();
10231022
if (str.equals("'")) {
1024-
retSql += "'";
1023+
retSql.append("'");
10251024
beforeColon = !beforeColon;
10261025
continue;
10271026
}
10281027
if (beforeColon) {
10291028
String repStr = replaceParameterWithString(str, '?', "null");
1030-
retSql += repStr;
1029+
retSql.append(repStr);
10311030
continue;
10321031
} else {
1033-
retSql += str;
1032+
retSql.append(str);
10341033
continue;
10351034
}
10361035
}
1037-
return retSql;
1036+
return retSql.toString();
10381037
}
10391038
}
10401039

src/main/java/com/microsoft/sqlserver/jdbc/Util.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1044,19 +1044,19 @@ final String asEscapedString() {
10441044
StringBuilder fullName = new StringBuilder(256);
10451045

10461046
if (serverName.length() > 0)
1047-
fullName.append("[" + serverName + "].");
1047+
fullName.append("[").append(serverName).append("].");
10481048

10491049
if (databaseName.length() > 0)
1050-
fullName.append("[" + databaseName + "].");
1050+
fullName.append("[").append(databaseName).append("].");
10511051
else
10521052
assert 0 == serverName.length();
10531053

10541054
if (schemaName.length() > 0)
1055-
fullName.append("[" + schemaName + "].");
1055+
fullName.append("[").append(schemaName).append("].");
10561056
else if (databaseName.length() > 0)
10571057
fullName.append('.');
10581058

1059-
fullName.append("[" + objectName + "]");
1059+
fullName.append("[").append(objectName).append("]");
10601060

10611061
return fullName.toString();
10621062
}

0 commit comments

Comments
 (0)