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.type;
 
 
 import static com.facebook.presto.type.TypeUtils.parameterizedTypeName;

The stack representation for JSON objects must have the keys in natural sorted order.
 
 public class JsonType
         extends AbstractVariableWidthType
 {
     public static final JsonType JSON = new JsonType();
 
     public JsonType()
     {
         super(parameterizedTypeName(.), Slice.class);
     }
 
     @Override
     public boolean isComparable()
     {
         return true;
     }
 
     @Override
     public boolean equalTo(Block leftBlockint leftPositionBlock rightBlockint rightPosition)
     {
         Slice leftValue = leftBlock.getSlice(leftPosition, 0, leftBlock.getLength(leftPosition));
         Slice rightValue = rightBlock.getSlice(rightPosition, 0, rightBlock.getLength(rightPosition));
         return leftValue.equals(rightValue);
     }
 
     @Override
     public int hash(Block blockint position)
     {
         return block.hash(position, 0, block.getLength(position));
     }
 
     @Override
     public Object getObjectValue(ConnectorSession sessionBlock blockint position)
     {
         if (block.isNull(position)) {
             return null;
         }
 
         return block.getSlice(position, 0, block.getLength(position)).toStringUtf8();
     }
 
     @Override
     public void appendTo(Block blockint positionBlockBuilder blockBuilder)
     {
         if (block.isNull(position)) {
             blockBuilder.appendNull();
         }
         else {
             block.writeBytesTo(position, 0, block.getLength(position), blockBuilder);
             blockBuilder.closeEntry();
         }
     }
 
     @Override
     public Slice getSlice(Block blockint position)
     {
         return block.getSlice(position, 0, block.getLength(position));
     }
 
     public void writeString(BlockBuilder blockBuilderString value)
     {
         writeSlice(blockBuilder, Slices.utf8Slice(value));
     }
 
     @Override
     public void writeSlice(BlockBuilder blockBuilderSlice value)
     {
         writeSlice(blockBuildervalue, 0, value.length());
     }
 
     @Override
     public void writeSlice(BlockBuilder blockBuilderSlice valueint offsetint length)
    {
        blockBuilder.writeBytes(valueoffsetlength).closeEntry();
    }
New to GrepCode? Check out our FAQ X