Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,42 @@
public class JoinNode
extends PlanNode
{
public enum DistributionType
{
PARTITIONED,
REPLICATED
}

public enum Type
{
INNER("InnerJoin"),
LEFT("LeftJoin"),
RIGHT("RightJoin"),
FULL("FullJoin");

private final String joinLabel;

Type(String joinLabel)
{
this.joinLabel = joinLabel;
}

public String getJoinLabel()
{
return joinLabel;
}

public static Type typeConvert(Join.Type joinType)
{
return switch (joinType) {
case CROSS, IMPLICIT, INNER -> Type.INNER;
case LEFT -> Type.LEFT;
case RIGHT -> Type.RIGHT;
case FULL -> Type.FULL;
};
}
}

private final Type type;
private final PlanNode left;
private final PlanNode right;
Expand Down Expand Up @@ -179,42 +215,6 @@ private static List<EquiJoinClause> flipJoinCriteria(List<EquiJoinClause> joinCr
.collect(toImmutableList());
}

public enum DistributionType
{
PARTITIONED,
REPLICATED
}

public enum Type
{
INNER("InnerJoin"),
LEFT("LeftJoin"),
RIGHT("RightJoin"),
FULL("FullJoin");

private final String joinLabel;

Type(String joinLabel)
{
this.joinLabel = joinLabel;
}

public String getJoinLabel()
{
return joinLabel;
}

public static Type typeConvert(Join.Type joinType)
{
return switch (joinType) {
case CROSS, IMPLICIT, INNER -> Type.INNER;
case LEFT -> Type.LEFT;
case RIGHT -> Type.RIGHT;
case FULL -> Type.FULL;
};
}
}

@JsonProperty("type")
public Type getType()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,72 @@
public class ComparisonExpression
extends Expression
{
public enum Operator
{
EQUAL("="),
NOT_EQUAL("<>"),
LESS_THAN("<"),
LESS_THAN_OR_EQUAL("<="),
GREATER_THAN(">"),
GREATER_THAN_OR_EQUAL(">="),
IS_DISTINCT_FROM("IS DISTINCT FROM");

private final String value;

Operator(String value)
{
this.value = value;
}

public String getValue()
{
return value;
}

public Operator flip()
{
switch (this) {
case EQUAL:
return EQUAL;
case NOT_EQUAL:
return NOT_EQUAL;
case LESS_THAN:
return GREATER_THAN;
case LESS_THAN_OR_EQUAL:
return GREATER_THAN_OR_EQUAL;
case GREATER_THAN:
return LESS_THAN;
case GREATER_THAN_OR_EQUAL:
return LESS_THAN_OR_EQUAL;
case IS_DISTINCT_FROM:
return IS_DISTINCT_FROM;
}
throw new IllegalArgumentException("Unsupported comparison: " + this);
}

public Operator negate()
{
switch (this) {
case EQUAL:
return NOT_EQUAL;
case NOT_EQUAL:
return EQUAL;
case LESS_THAN:
return GREATER_THAN_OR_EQUAL;
case LESS_THAN_OR_EQUAL:
return GREATER_THAN;
case GREATER_THAN:
return LESS_THAN_OR_EQUAL;
case GREATER_THAN_OR_EQUAL:
return LESS_THAN;
case IS_DISTINCT_FROM:
// Cannot negate
break;
}
throw new IllegalArgumentException("Unsupported comparison: " + this);
}
}

private final Operator operator;
private final Expression left;
private final Expression right;
Expand Down Expand Up @@ -99,72 +165,6 @@ public int hashCode()
return Objects.hash(operator, left, right);
}

public enum Operator
{
EQUAL("="),
NOT_EQUAL("<>"),
LESS_THAN("<"),
LESS_THAN_OR_EQUAL("<="),
GREATER_THAN(">"),
GREATER_THAN_OR_EQUAL(">="),
IS_DISTINCT_FROM("IS DISTINCT FROM");

private final String value;

Operator(String value)
{
this.value = value;
}

public String getValue()
{
return value;
}

public Operator flip()
{
switch (this) {
case EQUAL:
return EQUAL;
case NOT_EQUAL:
return NOT_EQUAL;
case LESS_THAN:
return GREATER_THAN;
case LESS_THAN_OR_EQUAL:
return GREATER_THAN_OR_EQUAL;
case GREATER_THAN:
return LESS_THAN;
case GREATER_THAN_OR_EQUAL:
return LESS_THAN_OR_EQUAL;
case IS_DISTINCT_FROM:
return IS_DISTINCT_FROM;
}
throw new IllegalArgumentException("Unsupported comparison: " + this);
}

public Operator negate()
{
switch (this) {
case EQUAL:
return NOT_EQUAL;
case NOT_EQUAL:
return EQUAL;
case LESS_THAN:
return GREATER_THAN_OR_EQUAL;
case LESS_THAN_OR_EQUAL:
return GREATER_THAN;
case GREATER_THAN:
return LESS_THAN_OR_EQUAL;
case GREATER_THAN_OR_EQUAL:
return LESS_THAN;
case IS_DISTINCT_FROM:
// Cannot negate
break;
}
throw new IllegalArgumentException("Unsupported comparison: " + this);
}
}

@Override
public boolean shallowEquals(Node other)
{
Expand Down
10 changes: 5 additions & 5 deletions core/trino-parser/src/main/java/io/trino/sql/tree/Join.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@
public class Join
extends Relation
{
public enum Type
{
CROSS, INNER, LEFT, RIGHT, FULL, IMPLICIT
}

public Join(Type type, Relation left, Relation right, Optional<JoinCriteria> criteria)
{
this(Optional.empty(), type, left, right, criteria);
Expand Down Expand Up @@ -54,11 +59,6 @@ public Join(Optional<NodeLocation> location, Type type, Relation left, Relation
this.criteria = criteria;
}

public enum Type
{
CROSS, INNER, LEFT, RIGHT, FULL, IMPLICIT
}

private final Type type;
private final Relation left;
private final Relation right;
Expand Down