[#6079] Add JoinType.qualified()

This commit is contained in:
lukaseder 2017-04-14 13:32:52 +02:00
parent fc35eb7f54
commit e751f3b2f1

View File

@ -42,7 +42,6 @@ import static org.jooq.SQLDialect.MYSQL;
import org.jooq.impl.DSL;
/**
* The type of join
*
@ -54,88 +53,90 @@ public enum JoinType {
* <code>INNER JOIN</code> two tables.
*/
@Support
JOIN("join"),
JOIN("join", true),
/**
* <code>CROSS JOIN</code> two tables.
*/
@Support
CROSS_JOIN("cross join"),
CROSS_JOIN("cross join", false),
/**
* <code>LEFT OUTER JOIN</code> two tables.
*/
@Support
LEFT_OUTER_JOIN("left outer join"),
LEFT_OUTER_JOIN("left outer join", true),
/**
* <code>RIGHT OUTER JOIN</code> two tables.
*/
@Support
RIGHT_OUTER_JOIN("right outer join"),
RIGHT_OUTER_JOIN("right outer join", true),
/**
* <code>FULL OUTER JOIN</code> two tables.
*/
@Support
FULL_OUTER_JOIN("full outer join"),
FULL_OUTER_JOIN("full outer join", true),
/**
* <code>NATURAL INNER JOIN</code> two tables.
*/
@Support
NATURAL_JOIN("natural join"),
NATURAL_JOIN("natural join", false),
/**
* <code>NATURAL LEFT OUTER JOIN</code> two tables.
*/
@Support
NATURAL_LEFT_OUTER_JOIN("natural left outer join"),
NATURAL_LEFT_OUTER_JOIN("natural left outer join", false),
/**
* <code>NATURAL RIGHT OUTER JOIN</code> two tables.
*/
@Support
NATURAL_RIGHT_OUTER_JOIN("natural right outer join"),
NATURAL_RIGHT_OUTER_JOIN("natural right outer join", false),
/**
* <code>CROSS APPLY</code> two tables.
*/
@Support({})
CROSS_APPLY("cross apply"),
CROSS_APPLY("cross apply", false),
/**
* <code>OUTER APPLY</code> two tables.
*/
@Support({})
OUTER_APPLY("outer apply"),
OUTER_APPLY("outer apply", false),
/**
* <code>STRAIGHT_JOIN</code> two tables.
*/
@Support({ MYSQL })
STRAIGHT_JOIN("straight_join"),
STRAIGHT_JOIN("straight_join", true),
/**
* <code>LEFT SEMI JOIN</code> two tables.
*/
@Support
LEFT_SEMI_JOIN("left semi join"),
LEFT_SEMI_JOIN("left semi join", true),
/**
* <code>LEFT ANTI JOIN</code> two tables.
*/
@Support
LEFT_ANTI_JOIN("left anti join")
LEFT_ANTI_JOIN("left anti join", true)
;
private final String sql;
private final Keyword keyword;
private final boolean qualified;
private JoinType(String sql) {
private JoinType(String sql, boolean qualified) {
this.sql = sql;
this.keyword = DSL.keyword(sql);
this.qualified = qualified;
}
public final String toSQL() {
@ -145,4 +146,12 @@ public enum JoinType {
public final Keyword toKeyword() {
return keyword;
}
/**
* Whether a <code>JOIN</code> operation of this type must be qualified with
* <code>ON</code> or <code>USING</code>.
*/
public final boolean qualified() {
return qualified;
}
}