[#6065] JOIN .. USING emulation doesn't work with plain SQL

This commit is contained in:
lukaseder 2017-04-13 14:27:26 +02:00
parent a4ed26d3a6
commit de3ac7b591
2 changed files with 16 additions and 2 deletions

View File

@ -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);

View File

@ -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());
}
}