[#6065] JOIN .. USING emulation doesn't work with plain SQL
This commit is contained in:
parent
a4ed26d3a6
commit
de3ac7b591
@ -356,9 +356,9 @@ final class JoinTable extends AbstractTable<Record> implements TableOptionalOnSt
|
||||
}
|
||||
|
||||
context.sql(' ')
|
||||
.visit(lhs.field(field))
|
||||
.visit(Tools.qualify(field, lhs))
|
||||
.sql(" = ")
|
||||
.visit(rhs.field(field));
|
||||
.visit(Tools.qualify(field, rhs));
|
||||
}
|
||||
|
||||
context.end(TABLE_JOIN_ON);
|
||||
|
||||
@ -3626,4 +3626,18 @@ final class Tools {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static final <T> Field<T> qualify(Field<T> field, Table<?> table) {
|
||||
Field<T> result = table.field(field);
|
||||
|
||||
if (result != null)
|
||||
return result;
|
||||
|
||||
Name[] part = table.getQualifiedName().parts();
|
||||
Name[] name = new Name[part.length + 1];
|
||||
System.arraycopy(part, 0, name, 0, part.length);
|
||||
name[part.length] = field.getQualifiedName().unqualifiedName();
|
||||
|
||||
return DSL.field(DSL.name(name), field.getDataType());
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user