[jOOQ/jOOQ#13411] Expand asterisks in the presence of hidden fields
This commit is contained in:
parent
f57f1e494d
commit
57e529b916
@ -82,6 +82,9 @@ final class FieldsImpl<R extends Record> extends AbstractQueryPart implements Re
|
||||
private static final JooqLogger log = JooqLogger.getLogger(FieldsImpl.class);
|
||||
Field<?>[] fields;
|
||||
|
||||
|
||||
|
||||
|
||||
FieldsImpl(SelectField<?>... fields) {
|
||||
this.fields = Tools.map(fields, toField(), Field<?>[]::new);
|
||||
}
|
||||
@ -551,13 +554,22 @@ final class FieldsImpl<R extends Record> extends AbstractQueryPart implements Re
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
fields = add0(fields, f);
|
||||
}
|
||||
|
||||
private static final Field<?>[] add0(Field<?>[] fields, Field<?> field) {
|
||||
|
||||
// TODO: [#10481] Can we replace our internal Field<?>[] by an ArrayList<Field<?>>?
|
||||
Field<?>[] result = new Field[fields.length + 1];
|
||||
|
||||
System.arraycopy(fields, 0, result, 0, fields.length);
|
||||
result[fields.length] = f;
|
||||
|
||||
fields = result;
|
||||
result[fields.length] = field;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -4159,23 +4159,34 @@ final class SelectQueryImpl<R extends Record> extends AbstractResultQuery<R> imp
|
||||
appendResolveSomeAsterisks0(ctx, resolveSupported, result, resolveExcept, resolveUnqualifiedCombined, list, j.$table1().asterisk());
|
||||
appendResolveSomeAsterisks0(ctx, resolveSupported, result, resolveExcept, resolveUnqualifiedCombined, list, j.$table2().asterisk());
|
||||
}
|
||||
else if (q.$except().isEmpty())
|
||||
if (resolveSupported)
|
||||
else if (q.$except().isEmpty()) {
|
||||
if (resolveSupported
|
||||
|
||||
)
|
||||
result.addAll(asList(q.qualifier().fields()));
|
||||
else
|
||||
result.add(s);
|
||||
else if (resolveExcept)
|
||||
}
|
||||
else if (resolveExcept
|
||||
|
||||
)
|
||||
result.addAll(subtract(asList(q.qualifier().fields()), q.$except()));
|
||||
else
|
||||
result.add(s);
|
||||
}
|
||||
else if (s instanceof Asterisk a) {
|
||||
if (a.$except().isEmpty())
|
||||
if (resolveSupported || resolveUnqualifiedCombined && list.size() > 1)
|
||||
if (a.$except().isEmpty()) {
|
||||
if (resolveSupported
|
||||
|| resolveUnqualifiedCombined && list.size() > 1
|
||||
|
||||
)
|
||||
result.addAll(resolveAsterisk(new QueryPartList<>()));
|
||||
else
|
||||
result.add(s);
|
||||
else if (resolveExcept)
|
||||
}
|
||||
else if (resolveExcept
|
||||
|
||||
)
|
||||
result.addAll(resolveAsterisk(new QueryPartList<>(), (QueryPartListView<Field<?>>) a.$except()));
|
||||
else
|
||||
result.add(s);
|
||||
|
||||
@ -6669,6 +6669,16 @@ final class Tools {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static final boolean hasEmbeddedFields(Field<?>[] fields) {
|
||||
return anyMatch(fields, f -> f.getDataType().isEmbeddable());
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user