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.operator;
 
 
 import java.util.List;
 
 import static com.facebook.presto.spi.type.BigintType.BIGINT;
 
 public class SimpleJoinProbe
         implements JoinProbe
 {
     public static class SimpleJoinProbeFactory
             implements JoinProbeFactory
     {
         private List<Typetypes;
         private List<IntegerprobeJoinChannels;
         private final Optional<IntegerprobeHashChannel;
 
         public SimpleJoinProbeFactory(List<TypetypesList<IntegerprobeJoinChannelsOptional<IntegerprobeHashChannel)
         {
             this. = types;
             this. = probeJoinChannels;
             this. = probeHashChannel;
         }
 
         @Override
         public JoinProbe createJoinProbe(LookupSource lookupSourcePage page)
         {
             return new SimpleJoinProbe(lookupSourcepage);
         }
     }
 
     private final List<Typetypes;
     private final LookupSource lookupSource;
     private final int positionCount;
     private final Block[] blocks;
     private final Block[] probeBlocks;
     private final Page probePage;
     private final Optional<BlockprobeHashBlock;
 
     private int position = -1;
 
     private SimpleJoinProbe(List<TypetypesLookupSource lookupSourcePage pageList<IntegerprobeJoinChannelsOptional<IntegerhashChannel)
     {
         this. = types;
         this. = lookupSource;
         this. = page.getPositionCount();
         this. = new Block[page.getChannelCount()];
         this. = new Block[probeJoinChannels.size()];
 
         for (int i = 0; i < page.getChannelCount(); i++) {
             [i] = page.getBlock(i);
         }
 
         for (int i = 0; i < probeJoinChannels.size(); i++) {
             [i] = [probeJoinChannels.get(i)];
         }
         this. = new Page();
         this. = hashChannel.isPresent() ? Optional.of(page.getBlock(hashChannel.get())) : Optional.empty();
     }
 
     @Override
     public int getChannelCount()
     {
         return .;
     }
 
     @Override
     public boolean advanceNextPosition()
     {
         ++;
         return  < ;
     }
 
     @Override
     public void appendTo(PageBuilder pageBuilder)
     {
         for (int outputIndex = 0; outputIndex < .outputIndex++) {
             Type type = .get(outputIndex);
             Block block = [outputIndex];
             type.appendTo(blockpageBuilder.getBlockBuilder(outputIndex));
         }
    }
    @Override
    public long getCurrentJoinPosition()
    {
        if (currentRowContainsNull()) {
            return -1;
        }
        if (.isPresent()) {
            int rawHash = (int.getLong(.get(), );
            return .getJoinPosition(rawHash);
        }
    }
    private boolean currentRowContainsNull()
    {
        for (Block probeBlock : ) {
            if (probeBlock.isNull()) {
                return true;
            }
        }
        return false;
    }
New to GrepCode? Check out our FAQ X