[#6691] Prevent calling DSL.name() with empty arguments

This commit is contained in:
lukaseder 2017-10-12 12:17:54 +02:00
parent ef9881cfe3
commit 71f72099e9
2 changed files with 10 additions and 2 deletions

View File

@ -48,6 +48,7 @@ import org.jooq.Name;
import org.jooq.Record;
import org.jooq.exception.SQLDialectNotSupportedException;
import org.jooq.tools.JooqLogger;
import org.jooq.tools.StringUtils;
/**
* A <code>FieldProvider</code> providing fields for a JDBC
@ -104,7 +105,14 @@ final class MetaDataFieldProvider implements Serializable {
try {
String columnSchema = meta.getSchemaName(i);
String columnTable = meta.getTableName(i);
name = name(columnSchema, columnTable, columnName);
// [#6691] Prevent excessive String[] allocations if names are unqualified / partially qualified
if (!StringUtils.isEmpty(columnSchema))
name = name(columnSchema, columnTable, columnName);
else if (!StringUtils.isEmpty(columnTable))
name = name(columnTable, columnName);
else
name = name(columnName);
}
// [#4939] Some JDBC drivers such as Teradata and Cassandra don't implement

View File

@ -1022,7 +1022,7 @@ final class Tools {
Field<?>[] result = new Field[fieldNames.length];
if (tableName == null)
if (StringUtils.isEmpty(tableName))
for (int i = 0; i < fieldNames.length; i++)
result[i] = DSL.field(name(fieldNames[i]));
else