Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package com.facebook.presto.sql.planner.plan;
 
 
 
 import java.util.List;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
 public class JoinNode
         extends PlanNode
 {
     private final Type type;
     private final PlanNode left;
     private final PlanNode right;
     private final List<EquiJoinClausecriteria;
     private final Optional<SymbolleftHashSymbol;
     private final Optional<SymbolrightHashSymbol;
 
     @JsonCreator
     public JoinNode(@JsonProperty("id"PlanNodeId id,
             @JsonProperty("type"Type type,
             @JsonProperty("left"PlanNode left,
             @JsonProperty("right"PlanNode right,
             @JsonProperty("criteria"List<EquiJoinClausecriteria,
             @JsonProperty("leftHashSymbol"Optional<SymbolleftHashSymbol,
             @JsonProperty("rightHashSymbol"Optional<SymbolrightHashSymbol)
     {
         super(id);
         checkNotNull(type"type is null");
         checkNotNull(left"left is null");
         checkNotNull(right"right is null");
         checkNotNull(criteria"criteria is null");
         checkNotNull(leftHashSymbol"leftHashSymbol is null");
         checkNotNull(rightHashSymbol"rightHashSymbol is null");
 
         this. = type;
         this. = left;
         this. = right;
         this. = ImmutableList.copyOf(criteria);
         this. = leftHashSymbol;
         this. = rightHashSymbol;
     }
 
     public enum Type
     {
         INNER("InnerJoin"),
         LEFT("LeftJoin"),
         RIGHT("RightJoin"),
         CROSS("CrossJoin");
 
         private final String joinLabel;
 
         Type(String joinLabel)
         {
             this. = joinLabel;
         }
 
         public String getJoinLabel()
         {
             return ;
         }
 
         public static Type typeConvert(Join.Type joinType)
         {
             // Omit SEMI join types because they must be inferred by the planner and not part of the SQL parse tree
             switch (joinType) {
                 case :
                     return .;
                 case :
                     return .;
                 case :
                     return .;
                 case :
                 case :
                     return .;
                 default:
                     throw new UnsupportedOperationException("Unsupported join type: " + joinType);
             }
        }
    }
    @JsonProperty("type")
    public Type getType()
    {
        return ;
    }
    @JsonProperty("left")
    public PlanNode getLeft()
    {
        return ;
    }
    @JsonProperty("right")
    public PlanNode getRight()
    {
        return ;
    }
    @JsonProperty("criteria")
    public List<EquiJoinClausegetCriteria()
    {
        return ;
    }
    @JsonProperty("leftHashSymbol")
    {
        return ;
    }
    @JsonProperty("rightHashSymbol")
    {
        return ;
    }
    @Override
    public List<PlanNodegetSources()
    {
        return ImmutableList.of();
    }
    @Override
    @JsonProperty("outputSymbols")
    public List<SymbolgetOutputSymbols()
    {
        return ImmutableList.<Symbol>builder()
                .addAll(.getOutputSymbols())
                .addAll(.getOutputSymbols())
                .build();
    }
    @Override
    public <C, R> R accept(PlanVisitor<C, R> visitor, C context)
    {
        return visitor.visitJoin(thiscontext);
    }
    public static class EquiJoinClause
    {
        private final Symbol left;
        private final Symbol right;
        @JsonCreator
        public EquiJoinClause(@JsonProperty("left"Symbol left, @JsonProperty("right"Symbol right)
        {
            this. = checkNotNull(left"left is null");
            this. = checkNotNull(right"right is null");
        }
        @JsonProperty("left")
        public Symbol getLeft()
        {
            return ;
        }
        @JsonProperty("right")
        public Symbol getRight()
        {
            return ;
        }
    }
New to GrepCode? Check out our FAQ X