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.scalar;
 
 
 import java.util.Map;
 
 import static com.facebook.presto.metadata.Signature.comparableTypeParameter;
 import static com.facebook.presto.metadata.Signature.typeParameter;
 import static com.facebook.presto.spi.StandardErrorCode.INVALID_FUNCTION_ARGUMENT;
 import static com.facebook.presto.spi.type.StandardTypes.MAP;
 import static com.facebook.presto.type.TypeUtils.parameterizedTypeName;
 import static com.facebook.presto.util.Failures.checkCondition;
 import static com.facebook.presto.util.Reflection.methodHandle;
 
 public final class MapConstructor
         extends ParametricScalar
 {
     public static final MapConstructor MAP_CONSTRUCTOR = new MapConstructor();
 
     private static final ObjectMapper MAPPER = new ObjectMapper();
     private static final Signature SIGNATURE = new Signature("map", ImmutableList.of(comparableTypeParameter("K"), typeParameter("V")), "map<K,V>", ImmutableList.of("array<K>""array<V>"), falsefalse);
     private static final MethodHandle METHOD_HANDLE = methodHandle(MapConstructor.class"createMap"Slice.classSlice.class);
     private static final String DESCRIPTION = "Constructs a map from the given key/value arrays";
     private static final ArrayType ARRAY_TYPE = .getTypeFactory().constructArrayType(Object.class);
 
     @Override
     public Signature getSignature()
     {
         return ;
     }
 
     @Override
     public boolean isHidden()
     {
         return false;
     }
 
     @Override
     public boolean isDeterministic()
     {
         return true;
     }
 
     @Override
     public String getDescription()
     {
         return ;
     }
 
     @Override
     public FunctionInfo specialize(Map<StringTypetypesint arityTypeManager typeManagerFunctionRegistry functionRegistry)
     {
         Type keyType = types.get("K");
         Type valueType = types.get("V");
 
         Type mapType = typeManager.getParameterizedType(, ImmutableList.of(keyType.getTypeSignature(), valueType.getTypeSignature()), ImmutableList.of());
         ImmutableList<TypeSignatureargumentTypes = ImmutableList.of(parameterizedTypeName(.keyType.getTypeSignature()), parameterizedTypeName(.valueType.getTypeSignature()));
         Signature signature = new Signature("map", ImmutableList.<TypeParameter>of(), mapType.getTypeSignature(), argumentTypesfalsefalse);
 
         return new FunctionInfo(signatureisHidden(), isDeterministic(), false, ImmutableList.of(falsefalse));
     }
 
     public static Slice createMap(Slice keysSlice values)
     {
         Map<ObjectObjectmap = new LinkedHashMap<>();
         Object[] keysArray;
         Object[] valuesArray;
         try {
            keysArray = .readValue(keys.getInput(), );
            valuesArray = .readValue(values.getInput(), );
            checkCondition(keysArray.length == valuesArray.length"Key and value arrays must be the same length");
            for (int i = 0; i < keysArray.lengthi++) {
                if (keysArray[i] == null) {
                    throw new PrestoException("map key cannot be null");
                }
                map.put(keysArray[i], valuesArray[i]);
            }
        }
        catch (IOException e) {
            Throwables.propagate(e);
        }
        return MapType.toStackRepresentation(map);
    }
New to GrepCode? Check out our FAQ X